From 200a40b332420f94992eb39a6d0ea1cf1490ffc4 Mon Sep 17 00:00:00 2001 From: coreyg Date: Fri, 21 Nov 2014 09:30:19 +0000 Subject: Adding tuscany's website to their svn repo for svnpubsub git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1640879 13f79535-47bb-0310-9956-ffa450edef68 --- site/trunk/site-publish/2.html | 112 + site/trunk/site-publish/2007/02/07/news.html | 112 + site/trunk/site-publish/2008/11/11/menuall.html | 112 + .../adding-the-spring-component-type.html | 157 + .../adding-the-spring-implementation-type.html | 273 + site/trunk/site-publish/all.html | 78 + site/trunk/site-publish/archetype-catalog.xml | 52 + .../site-publish/archetypes/archetype-catalog.xml | 16 + site/trunk/site-publish/architecture-guide.html | 133 + .../Component_Diagram.jpg | Bin 0 -> 18976 bytes .../Component_Diagram.jpg.jpeg | Bin 0 -> 5075 bytes .../Producer_linked_to_Consumer.jpg | Bin 0 -> 11565 bytes .../Producer_linked_to_Consumer.jpg.jpeg | Bin 0 -> 3378 bytes .../assembly-model-for-event-processing.html | 187 + .../TUSCANY_Templates.zip | Bin 0 -> 27930 bytes .../TUSCANY_template_2007_5_25_v1.xml | 133 + .../TUSCANY_template_2007_5_25_v2.zip | Bin 0 -> 1716 bytes .../TUSCANY_template_2007_5_25_v3.zip | Bin 0 -> 1730 bytes .../Tuscany_template_2007_5_25_v1.zip | Bin 0 -> 1685 bytes .../default_2007-05-24.css | 1387 ++++++ .../default_2007-05-24.zip | Bin 0 -> 6445 bytes .../default_2007-05-25.zip | Bin 0 -> 6433 bytes .../autoexport-plugin-template.data/notep_16.gif | Bin 0 -> 402 bytes .../notep_16.gif.jpeg | Bin 0 -> 767 bytes .../notep_16_2007-05-24.gif | Bin 0 -> 402 bytes .../notep_16_2007-05-24.gif.jpeg | Bin 0 -> 767 bytes .../site-publish/autoexport-plugin-template.html | 392 ++ site/trunk/site-publish/binding-ws.html | 114 + .../New_Calc_Java_Project.png | Bin 0 -> 25553 bytes .../New_Calc_Java_Project.png.jpeg | Bin 0 -> 6986 bytes .../New_Calc_Java_Project_lib.png | Bin 0 -> 30996 bytes .../New_Calc_Java_Project_lib.png.jpeg | Bin 0 -> 6424 bytes .../New_User_Lib.png | Bin 0 -> 11560 bytes .../New_User_Lib.png.jpeg | Bin 0 -> 7470 bytes .../Tuscany_User_Lib.png | Bin 0 -> 58273 bytes .../Tuscany_User_Lib.png.jpeg | Bin 0 -> 10064 bytes .../atom_feed.png | Bin 0 -> 1004 bytes .../atom_feed.png.jpeg | Bin 0 -> 902 bytes .../atom_feeds_page.png | Bin 0 -> 34249 bytes .../atom_feeds_page.png.jpeg | Bin 0 -> 8152 bytes .../calculator_eclipse_console.png | Bin 0 -> 11204 bytes .../calculator_eclipse_console.png.jpeg | Bin 0 -> 2502 bytes .../calculator_proj_dlg.png | Bin 0 -> 33965 bytes .../calculator_proj_dlg.png.jpeg | Bin 0 -> 8217 bytes .../class_btn.png | Bin 0 -> 607 bytes .../class_btn.png.jpeg | Bin 0 -> 905 bytes .../eclipse_console.png | Bin 0 -> 29679 bytes .../eclipse_console.png.jpeg | Bin 0 -> 6576 bytes .../first_composite.png | Bin 0 -> 20105 bytes .../first_composite.png.jpeg | Bin 0 -> 4479 bytes .../folder_structure.jpg | Bin 0 -> 5200 bytes .../folder_structure.jpg.jpeg | Bin 0 -> 3054 bytes .../folder_structure.png | Bin 0 -> 5699 bytes .../folder_structure.png.jpeg | Bin 0 -> 3485 bytes .../install_update.jpg | Bin 0 -> 36200 bytes .../install_update.jpg.jpeg | Bin 0 -> 7855 bytes .../install_update_feature_license.jpg | Bin 0 -> 61939 bytes .../install_update_feature_license.jpg.jpeg | Bin 0 -> 10388 bytes .../install_update_feature_verification.jpg | Bin 0 -> 34245 bytes .../install_update_feature_verification.jpg.jpeg | Bin 0 -> 6874 bytes .../install_update_finish.jpg | Bin 0 -> 45162 bytes .../install_update_finish.jpg.jpeg | Bin 0 -> 8880 bytes .../install_update_installation.jpg | Bin 0 -> 43354 bytes .../install_update_installation.jpg.jpeg | Bin 0 -> 8488 bytes .../install_update_new_site.jpg | Bin 0 -> 14134 bytes .../install_update_new_site.jpg.jpeg | Bin 0 -> 6308 bytes .../install_update_restart_eclipse.jpg | Bin 0 -> 10948 bytes .../install_update_restart_eclipse.jpg.jpeg | Bin 0 -> 3933 bytes .../install_update_search_results.jpg | Bin 0 -> 35511 bytes .../install_update_search_results.jpg.jpeg | Bin 0 -> 7292 bytes .../install_update_sites.jpg | Bin 0 -> 43280 bytes .../install_update_sites.jpg.jpeg | Bin 0 -> 8600 bytes .../interface_btn.png | Bin 0 -> 629 bytes .../interface_btn.png.jpeg | Bin 0 -> 778 bytes .../new_java_pkg_btn.png | Bin 0 -> 526 bytes .../new_java_pkg_btn.png.jpeg | Bin 0 -> 863 bytes .../new_java_pkg_dlg.png | Bin 0 -> 17713 bytes .../new_java_pkg_dlg.png.jpeg | Bin 0 -> 5069 bytes .../new_java_pkg_folder.png | Bin 0 -> 4764 bytes .../new_java_pkg_folder.png.jpeg | Bin 0 -> 4541 bytes .../new_java_project.png | Bin 0 -> 838 bytes .../new_java_project.png.jpeg | Bin 0 -> 886 bytes .../new_java_project_dlg.png | Bin 0 -> 24305 bytes .../new_java_project_dlg.png.jpeg | Bin 0 -> 5743 bytes .../new_java_project_folder.png | Bin 0 -> 3784 bytes .../new_java_project_folder.png.jpeg | Bin 0 -> 3069 bytes .../new_java_project_lib.png | Bin 0 -> 28873 bytes .../new_java_project_lib.png.jpeg | Bin 0 -> 5870 bytes .../project_layout.png | Bin 0 -> 5106 bytes .../project_layout.png.jpeg | Bin 0 -> 2461 bytes .../release_zips.jpg | Bin 0 -> 37153 bytes .../release_zips.jpg.jpeg | Bin 0 -> 6656 bytes .../release_zips.png | Bin 0 -> 27968 bytes .../release_zips.png.jpeg | Bin 0 -> 7133 bytes .../source_attachment.jpg | Bin 0 -> 4402 bytes .../source_attachment.jpg.jpeg | Bin 0 -> 3091 bytes .../source_attachment.png | Bin 0 -> 3100 bytes .../source_attachment.png.jpeg | Bin 0 -> 3642 bytes .../source_attachment_config.jpg | Bin 0 -> 21579 bytes .../source_attachment_config.jpg.jpeg | Bin 0 -> 5470 bytes .../source_attachment_config.png | Bin 0 -> 22537 bytes .../source_attachment_config.png.jpeg | Bin 0 -> 5772 bytes .../store_page.png | Bin 0 -> 27107 bytes .../store_page.png.jpeg | Bin 0 -> 7244 bytes .../store_page_1.png | Bin 0 -> 30099 bytes .../store_page_1.png.jpeg | Bin 0 -> 6740 bytes .../store_page_2.png | Bin 0 -> 30087 bytes .../store_page_2.png.jpeg | Bin 0 -> 6816 bytes .../store_page_3.png | Bin 0 -> 25889 bytes .../store_page_3.png.jpeg | Bin 0 -> 8168 bytes .../store_project.png | Bin 0 -> 6257 bytes .../store_project.png.jpeg | Bin 0 -> 7378 bytes .../store_project_1.png | Bin 0 -> 7244 bytes .../store_project_1.png.jpeg | Bin 0 -> 7835 bytes .../store_project_2.png | Bin 0 -> 13011 bytes .../store_project_2.png.jpeg | Bin 0 -> 8969 bytes .../store_project_3.jpg | Bin 0 -> 13026 bytes .../store_project_3.jpg.jpeg | Bin 0 -> 7593 bytes .../store_project_3.png | Bin 0 -> 16186 bytes .../store_project_3.png.jpeg | Bin 0 -> 11908 bytes .../store_project_4.jpg | Bin 0 -> 13843 bytes .../store_project_4.jpg.jpeg | Bin 0 -> 8619 bytes .../store_project_4.png | Bin 0 -> 17014 bytes .../store_project_4.png.jpeg | Bin 0 -> 11345 bytes .../store_project_5.jpg | Bin 0 -> 15583 bytes .../store_project_5.jpg.jpeg | Bin 0 -> 9647 bytes .../store_project_5.png | Bin 0 -> 18612 bytes .../store_project_5.png.jpeg | Bin 0 -> 10451 bytes .../tuscany_folder.jpg | Bin 0 -> 31137 bytes .../tuscany_folder.jpg.jpeg | Bin 0 -> 5691 bytes .../tuscany_folder.png | Bin 0 -> 24656 bytes .../tuscany_folder.png.jpeg | Bin 0 -> 4071 bytes .../tuscany_samples_folder.jpg | Bin 0 -> 29177 bytes .../tuscany_samples_folder.jpg.jpeg | Bin 0 -> 6731 bytes .../tuscany_samples_folder.png | Bin 0 -> 10009 bytes .../tuscany_samples_folder.png.jpeg | Bin 0 -> 8104 bytes .../ws_create_new_java_project.JPG | Bin 0 -> 49886 bytes .../ws_create_new_java_project.JPG.jpeg | Bin 0 -> 8165 bytes .../ws_create_new_java_project_layout.JPG | Bin 0 -> 9044 bytes .../ws_create_new_java_project_layout.JPG.jpeg | Bin 0 -> 2306 bytes .../ws_create_new_java_project_name.JPG | Bin 0 -> 21000 bytes .../ws_create_new_java_project_name.JPG.jpeg | Bin 0 -> 6323 bytes .../ws_create_new_java_project_tuscany_library.JPG | Bin 0 -> 25192 bytes ...reate_new_java_project_tuscany_library.JPG.jpeg | Bin 0 -> 5902 bytes .../ws_new_java_package.JPG | Bin 0 -> 14342 bytes .../ws_new_java_package.JPG.jpeg | Bin 0 -> 4682 bytes .../ws_new_java_project_structure_1.JPG | Bin 0 -> 4667 bytes .../ws_new_java_project_structure_1.JPG.jpeg | Bin 0 -> 2252 bytes .../ws_new_java_project_structure_2.JPG | Bin 0 -> 7795 bytes .../ws_new_java_project_structure_2.JPG.jpeg | Bin 0 -> 3586 bytes .../ws_new_java_project_structure_3.JPG | Bin 0 -> 9520 bytes .../ws_new_java_project_structure_3.JPG.jpeg | Bin 0 -> 3088 bytes .../ws_new_project_console_output.JPG | Bin 0 -> 138208 bytes .../ws_new_project_console_output.JPG.jpeg | Bin 0 -> 9651 bytes .../ws_new_project_console_output.PNG | Bin 0 -> 58073 bytes .../ws_new_project_console_output.PNG.jpeg | Bin 0 -> 10190 bytes ...build-your-first-web-services-with-tuscany.html | 346 ++ .../build-your-light-tuscany-distribution.html | 619 +++ .../build-your-own-tuscany-distribution.html | 625 +++ ...ild-your-own-tuscany-sca-java-distribution.html | 564 +++ .../Legacy.App.As.Tuscany.Service.ppt | Bin 0 -> 248832 bytes .../site-publish/building-an-application.html | 161 + site/trunk/site-publish/building-from-distro.html | 112 + site/trunk/site-publish/building-from-svn.html | 175 + site/trunk/site-publish/building-sca-for-java.html | 164 + site/trunk/site-publish/building-your-own.html | 118 + .../StockExceptionTest.wsdl | 141 + .../businessexceptions.data/jaxws.wsimport.zip | Bin 0 -> 12797 bytes site/trunk/site-publish/businessexceptions.html | 254 + site/trunk/site-publish/c-sdo-menu.html | 122 + .../site-publish/changesummaryprocessing.html | 133 + site/trunk/site-publish/chinese-portal.html | 175 + site/trunk/site-publish/column1.html | 137 + site/trunk/site-publish/column2.html | 136 + site/trunk/site-publish/column3.html | 117 + site/trunk/site-publish/committers.html | 340 ++ site/trunk/site-publish/community-menu.html | 117 + site/trunk/site-publish/community.data/brazil.jpg | Bin 0 -> 844 bytes .../site-publish/community.data/brazil.jpg.jpeg | Bin 0 -> 1199 bytes site/trunk/site-publish/community.data/chinese.jpg | Bin 0 -> 1352 bytes .../site-publish/community.data/chinese.jpg.jpeg | Bin 0 -> 890 bytes site/trunk/site-publish/community.html | 118 + .../componentizing-our-runtime.data/Architecture | 1 + .../comp-architecture.jpg | Bin 0 -> 73305 bytes .../comp-architecture.jpg.jpeg | Bin 0 -> 8886 bytes .../metadata-usage.jpg | Bin 0 -> 59599 bytes .../metadata-usage.jpg.jpeg | Bin 0 -> 6046 bytes .../site-publish/componentizing-our-runtime.html | 124 + .../composing-components-into-composites.html | 151 + .../concept-conventionoverconfiguration.html | 157 + ...nfigurable-database-generated-keys-support.html | 126 + .../connection-support-for-j2se-environment.html | 158 + .../site-publish/contributing-to-the-sdo-cts.html | 151 + .../site-publish/conventionoverconfiguration.html | 152 + site/trunk/site-publish/create-signing-key.html | 200 + .../das graph as I suppose it shoud be.JPG | Bin 0 -> 37704 bytes .../das graph as I suppose it shoud be.JPG.jpeg | Bin 0 -> 7243 bytes .../das-c-architecture-guide.data/das_graph.JPG | Bin 0 -> 29598 bytes .../das_graph.JPG.jpeg | Bin 0 -> 9383 bytes .../site-publish/das-c-architecture-guide.html | 662 +++ site/trunk/site-publish/das-c-developer-guide.html | 240 + .../site-publish/das-c-documentation-menu.html | 134 + site/trunk/site-publish/das-c-found-a-bug.html | 155 + site/trunk/site-publish/das-c-get-involved.html | 228 + site/trunk/site-publish/das-c-releases.html | 130 + site/trunk/site-publish/das-c-subproject-menu.html | 124 + .../das graph as I suppose it shoud be.JPG | Bin 0 -> 37704 bytes .../das graph as I suppose it shoud be.JPG.jpeg | Bin 0 -> 7243 bytes site/trunk/site-publish/das-c.data/das_graph.JPG | Bin 0 -> 29598 bytes .../site-publish/das-c.data/das_graph.JPG.jpeg | Bin 0 -> 9383 bytes site/trunk/site-publish/das-c.html | 132 + site/trunk/site-publish/das-cplus-menu.html | 114 + .../trunk/site-publish/das-documentation-menu.html | 80 + site/trunk/site-publish/das-downloads.html | 333 ++ site/trunk/site-publish/das-faq.html | 120 + site/trunk/site-publish/das-general-menu.html | 116 + site/trunk/site-publish/das-java-beta1.html | 171 + site/trunk/site-publish/das-java-beta2.html | 191 + .../das_class_diagram.jpg | Bin 0 -> 31050 bytes .../das_class_diagram.jpg.jpeg | Bin 0 -> 4793 bytes .../site-publish/das-java-developer-guide.html | 332 ++ .../site-publish/das-java-documentation-menu.html | 183 + site/trunk/site-publish/das-java-faq.html | 313 ++ site/trunk/site-publish/das-java-found-a-bug.html | 155 + site/trunk/site-publish/das-java-get-involved.html | 228 + .../trunk/site-publish/das-java-incubating-m1.html | 176 + site/trunk/site-publish/das-java-incubator-m2.html | 210 + site/trunk/site-publish/das-java-m1.html | 172 + site/trunk/site-publish/das-java-m2-release.html | 129 + site/trunk/site-publish/das-java-m2.html | 199 + site/trunk/site-publish/das-java-menu.html | 116 + .../trunk/site-publish/das-java-nightly-build.html | 80 + .../site-publish/das-java-previous-releases.html | 132 + .../das-java-project.data/das_class_diagram.jpg | Bin 0 -> 31050 bytes .../das_class_diagram.jpg.jpeg | Bin 0 -> 4793 bytes site/trunk/site-publish/das-java-project.html | 285 ++ .../site-publish/das-java-release-contents.html | 201 + site/trunk/site-publish/das-java-releases.html | 237 + .../site-publish/das-java-subproject-menu.html | 124 + .../das-java.data/das_class_diagram.jpg | Bin 0 -> 31050 bytes .../das-java.data/das_class_diagram.jpg.jpeg | Bin 0 -> 4793 bytes site/trunk/site-publish/das-java.html | 139 + .../das-lite-c.data/DAS Lite C Class Diagram | 1 + .../das-lite-c.data/DAS_lite_diagram.jpg | Bin 0 -> 522573 bytes .../das-lite-c.data/DAS_lite_diagram.jpg.jpeg | Bin 0 -> 7425 bytes site/trunk/site-publish/das-lite-c.html | 104 + site/trunk/site-publish/das-lite-cplus-menu.html | 126 + site/trunk/site-publish/das-menu.html | 81 + site/trunk/site-publish/das-outline.html | 117 + .../das-overview.data/RDB-DAS-Overview.pdf | Bin 0 -> 94499 bytes .../das-overview.data/das-data-services-v01.pdf | Bin 0 -> 133047 bytes .../site-publish/das-overview.data/sdo_das_sm.jpg | Bin 0 -> 17223 bytes .../das-overview.data/sdo_das_sm.jpg.jpeg | Bin 0 -> 5100 bytes site/trunk/site-publish/das-overview.html | 179 + site/trunk/site-publish/das-previous-releases.html | 97 + site/trunk/site-publish/das-rdb-menu.html | 129 + .../site-publish/das-release-process-menu.html | 114 + site/trunk/site-publish/das-release-process.html | 246 + site/trunk/site-publish/das-releases.html | 129 + site/trunk/site-publish/das-users-guide.html | 112 + site/trunk/site-publish/das.html | 202 + .../TuscanyJAVASCAM2.pdf | Bin 0 -> 746515 bytes .../delete-java-sca-architecture-overview.html | 179 + .../trunk/site-publish/delete-java-sca-kernel.html | 119 + site/trunk/site-publish/delete-junk.html | 211 + .../component.png | Bin 0 -> 8000 bytes .../component.png.jpeg | Bin 0 -> 3821 bytes .../component.svg | 160 + .../delete-old-sca-developer-guide.html | 164 + site/trunk/site-publish/delete-overview.html | 114 + .../delete-sca-java-documentation-delete.html | 121 + .../delete-this-page-old-introduction-page.html | 189 + .../delete-this-page-using-sdo-java.html | 128 + site/trunk/site-publish/delete-this-page.html | 119 + .../delete-tuscany-sca-databinding-faq.html | 179 + .../site-publish/deploying-to-server-runtime.html | 112 + .../deployment.data/Artifact Resolver.gif | Bin 0 -> 46139 bytes .../deployment.data/Artifact Resolver.gif.jpeg | Bin 0 -> 4992 bytes .../deployment.data/Contribution Diagram.GIF | Bin 0 -> 12737 bytes .../deployment.data/Contribution Diagram.GIF.jpeg | Bin 0 -> 4150 bytes .../deployment.data/Contribution Processors.gif | Bin 0 -> 67248 bytes .../Contribution Processors.gif.jpeg | Bin 0 -> 8428 bytes .../deployment.data/Contribution Services.gif | Bin 0 -> 72720 bytes .../deployment.data/Contribution Services.gif.jpeg | Bin 0 -> 6086 bytes .../deployment.data/Tuscany_deployment.doc | Bin 0 -> 30720 bytes .../tuscany_contribution_service.jpg | Bin 0 -> 254250 bytes .../tuscany_contribution_service.jpg.jpeg | Bin 0 -> 8069 bytes site/trunk/site-publish/deployment.html | 299 ++ site/trunk/site-publish/design-discussions.html | 80 + site/trunk/site-publish/developing-sdo-java.html | 282 ++ ...eveloping-using-tuscany-sca-best-practices.html | 172 + site/trunk/site-publish/discovery.html | 112 + .../distributed-runtime.data/distribution1.png | Bin 0 -> 13560 bytes .../distribution1.png.jpeg | Bin 0 -> 4146 bytes .../distributed-runtime.data/distribution3.png | Bin 0 -> 35604 bytes .../distribution3.png.jpeg | Bin 0 -> 6727 bytes .../distributed-runtime.data/distribution4.png | Bin 0 -> 18509 bytes .../distribution4.png.jpeg | Bin 0 -> 5042 bytes site/trunk/site-publish/distributed-runtime.html | 112 + .../calculator-distributed.png | Bin 0 -> 42808 bytes .../calculator-distributed.png.jpeg | Bin 0 -> 6368 bytes .../distributed-sca-domain.data/calculator2.png | Bin 0 -> 26092 bytes .../calculator2.png.jpeg | Bin 0 -> 6998 bytes .../distributed-sca-domain.data/calculator3.png | Bin 0 -> 43375 bytes .../calculator3.png.jpeg | Bin 0 -> 6422 bytes .../distributed-overview.png | Bin 0 -> 70711 bytes .../distributed-overview.png.jpeg | Bin 0 -> 7863 bytes .../multi-node-abstract.png | Bin 0 -> 16842 bytes .../multi-node-abstract.png.jpeg | Bin 0 -> 3891 bytes .../trunk/site-publish/distributed-sca-domain.html | 421 ++ .../01-overview.data/guide_icon.jpeg | Bin 0 -> 871 bytes .../01-overview.data/guide_icon.jpeg.jpeg | Bin 0 -> 1234 bytes .../site-publish/documentation-2x/01-overview.html | 229 + .../documentation-2x/02-getting-started.html | 119 + .../02-sca-introduction.data/calc.jpg | Bin 0 -> 14540 bytes .../02-sca-introduction.data/calc.jpg.jpeg | Bin 0 -> 5732 bytes .../02-sca-introduction.data/component.png | Bin 0 -> 8000 bytes .../02-sca-introduction.data/component.png.jpeg | Bin 0 -> 3821 bytes .../02-sca-introduction.data/domain.jpg | Bin 0 -> 32826 bytes .../02-sca-introduction.data/domain.jpg.jpeg | Bin 0 -> 6506 bytes .../documentation-2x/02-sca-introduction.html | 222 + .../03-development-guides.data/guide_icon.jpeg | Bin 0 -> 871 bytes .../guide_icon.jpeg.jpeg | Bin 0 -> 1234 bytes .../documentation-2x/03-development-guides.html | 221 + .../03-sca-introduction.data/calc.jpg | Bin 0 -> 14540 bytes .../03-sca-introduction.data/calc.jpg.jpeg | Bin 0 -> 5732 bytes .../03-sca-introduction.data/component.png | Bin 0 -> 8000 bytes .../03-sca-introduction.data/component.png.jpeg | Bin 0 -> 3821 bytes .../03-sca-introduction.data/domain.jpg | Bin 0 -> 32826 bytes .../03-sca-introduction.data/domain.jpg.jpeg | Bin 0 -> 6506 bytes .../documentation-2x/03-sca-introduction.html | 222 + .../03development-guides.data/guide_icon.jpeg | Bin 0 -> 871 bytes .../03development-guides.data/guide_icon.jpeg.jpeg | Bin 0 -> 1234 bytes .../documentation-2x/03development-guides.html | 221 + .../04-development-guides.data/guide_icon.jpeg | Bin 0 -> 871 bytes .../guide_icon.jpeg.jpeg | Bin 0 -> 1234 bytes .../documentation-2x/04-development-guides.html | 223 + .../20-beta-samples-documentation.html | 1740 +++++++ .../documentation-2x/20-release-notes.html | 281 ++ .../documentation-2x/classloading.html | 351 ++ .../converting-tuscany-1x-applications.html | 226 + .../converting-tuscany-1x-extensions.html | 486 ++ .../documentation-2x/create-signing-key.html | 196 + .../OSGi Enablement for Tuscany.ppt | Bin 0 -> 467456 bytes .../OSGi Remote Services with Tuscany SCA.ppt | Bin 0 -> 1050624 bytes .../Tuscany 2.x Extensibility and SPIs.ppt | Bin 0 -> 264192 bytes .../Tuscany SCA Domain Node.odp | Bin 0 -> 169340 bytes .../development-guides.data/guide_icon.jpeg | Bin 0 -> 871 bytes .../development-guides.data/guide_icon.jpeg.jpeg | Bin 0 -> 1234 bytes .../documentation-2x/development-guides.html | 212 + .../documentation-2x/extension-reference.html | 242 + .../documentation-2x/get-hold-of-rat.html | 141 + .../documentation-2x/getting-started.html | 182 + .../site-publish/documentation-2x/glossary.html | 229 + .../trunk/site-publish/documentation-2x/index.html | 189 + .../logging-tracing-and-timing.html | 266 + .../documentation-2x/making-releases.html | 718 +++ .../osgi_3rd_party_dependencies.JPG | Bin 0 -> 34918 bytes .../osgi_3rd_party_dependencies.JPG.jpeg | Bin 0 -> 3416 bytes .../osgi_manifest_editor.jpg | Bin 0 -> 86829 bytes .../osgi_manifest_editor.jpg.jpeg | Bin 0 -> 11630 bytes .../osgi-aware-programming-in-tuscany.html | 300 ++ .../OSGi Enablement for Tuscany.ppt | Bin 0 -> 491520 bytes .../tuscany-osgi.pdf | Bin 0 -> 336171 bytes .../osgi-enablement-for-tuscany-runtime.html | 381 ++ .../documentation-2x/overview.data/guide_icon.jpeg | Bin 0 -> 871 bytes .../overview.data/guide_icon.jpeg.jpeg | Bin 0 -> 1234 bytes .../site-publish/documentation-2x/overview.html | 159 + .../documentation-2x/resources/space.css | 5269 ++++++++++++++++++++ .../eclipse_tuscany_home.jpg | Bin 0 -> 292306 bytes .../eclipse_tuscany_home.jpg.jpeg | Bin 0 -> 6122 bytes ...ing-oasis-spec-tests-in-a-osgi-environment.html | 200 + .../sample-calculator-jaxws-client.jar | Bin 0 -> 9747 bytes ...ning-tuscany-sca-2x-with-equinox-and-felix.html | 225 + .../documentation-2x/samples-beta1.html | 1146 +++++ .../site-publish/documentation-2x/samples.html | 158 + .../sca-introduction.data/calc.jpg | Bin 0 -> 14540 bytes .../sca-introduction.data/calc.jpg.jpeg | Bin 0 -> 5732 bytes .../sca-introduction.data/component.png | Bin 0 -> 8000 bytes .../sca-introduction.data/component.png.jpeg | Bin 0 -> 3821 bytes .../sca-introduction.data/domain.jpg | Bin 0 -> 32826 bytes .../sca-introduction.data/domain.jpg.jpeg | Bin 0 -> 6506 bytes .../documentation-2x/sca-introduction.html | 244 + .../documentation-2x/sca-java-bindingatom.html | 575 +++ .../documentation-2x/sca-java-bindingejb.html | 196 + .../policy_interceptors_high_level_design.jpg | Bin 0 -> 24533 bytes .../policy_interceptors_high_level_design.jpg.jpeg | Bin 0 -> 5190 bytes ...a-java-bindinghttp-security-policy-section.html | 162 + .../documentation-2x/sca-java-bindinghttp.html | 324 ++ .../DataFormatScenarios-2-reference.png | Bin 0 -> 93000 bytes .../DataFormatScenarios-2-reference.png.jpeg | Bin 0 -> 6494 bytes .../DataFormatScenarios-2-service.png | Bin 0 -> 74720 bytes .../DataFormatScenarios-2-service.png.jpeg | Bin 0 -> 5166 bytes .../jmstextxml-invocation-chain.png | Bin 0 -> 34477 bytes .../jmstextxml-invocation-chain.png.jpeg | Bin 0 -> 4750 bytes .../sca-java-bindingjms.data/providers.png | Bin 0 -> 44912 bytes .../sca-java-bindingjms.data/providers.png.jpeg | Bin 0 -> 4804 bytes .../documentation-2x/sca-java-bindingjms.html | 753 +++ .../documentation-2x/sca-java-bindingjsonrpc.html | 329 ++ .../documentation-2x/sca-java-bindingrest.html | 515 ++ .../documentation-2x/sca-java-bindingrmi.html | 181 + .../documentation-2x/sca-java-bindingws.html | 232 + .../documentation-2x/sca-java-definitionsxml.html | 271 + .../Contribution-ClassLoading.doc | 508 ++ .../sca_java_deployment_modules.jpg | Bin 0 -> 36693 bytes .../sca_java_deployment_modules.jpg.jpeg | Bin 0 -> 3337 bytes .../sca_java_deployment_modules.png | Bin 0 -> 82489 bytes .../sca_java_deployment_modules.png.jpeg | Bin 0 -> 3163 bytes .../sca_java_deployment_overview.jpg | Bin 0 -> 78522 bytes .../sca_java_deployment_overview.jpg.jpeg | Bin 0 -> 7482 bytes .../sca_java_deployment_overview.png | Bin 0 -> 200638 bytes .../sca_java_deployment_overview.png.jpeg | Bin 0 -> 6638 bytes .../documentation-2x/sca-java-deployment.html | 410 ++ .../sca-java-development-guide.html | 524 ++ .../sca-java-extensions-guide.html | 432 ++ .../sca-java-implementationbpel.html | 192 + .../sca-java-implementationjava.html | 175 + .../sca-java-implementationosgi.html | 206 + .../Spring Tuscany.pptx | Bin 0 -> 143582 bytes .../sca-java-implementationspring.html | 461 ++ .../sca-java-implementationweb.html | 364 ++ .../sca-java-implementationwidget.html | 217 + .../documentation-2x/sca-java-interfacewsdl.html | 312 ++ .../tuscany-builders.png | Bin 0 -> 54113 bytes .../tuscany-builders.png.jpeg | Bin 0 -> 5367 bytes .../tuscany-domain-overview.png | Bin 0 -> 31572 bytes .../tuscany-domain-overview.png.jpeg | Bin 0 -> 7473 bytes .../tuscany-domain-registry.png | Bin 0 -> 47573 bytes .../tuscany-domain-registry.png.jpeg | Bin 0 -> 6976 bytes .../tuscany-endpoint-build.png | Bin 0 -> 22480 bytes .../tuscany-endpoint-build.png.jpeg | Bin 0 -> 6084 bytes .../tuscany-endpoint-callback.png | Bin 0 -> 65725 bytes .../tuscany-endpoint-callback.png.jpeg | Bin 0 -> 3444 bytes .../tuscany-endpoint-structure.png | Bin 0 -> 16268 bytes .../tuscany-endpoint-structure.png.jpeg | Bin 0 -> 5767 bytes .../tuscany-interface-contracts.png | Bin 0 -> 33196 bytes .../tuscany-interface-contracts.png.jpeg | Bin 0 -> 4992 bytes .../tuscany-reference-databinding.png | Bin 0 -> 85908 bytes .../tuscany-reference-databinding.png.jpeg | Bin 0 -> 5398 bytes .../tuscany-reference-interceptors.png | Bin 0 -> 26818 bytes .../tuscany-reference-interceptors.png.jpeg | Bin 0 -> 3327 bytes .../tuscany-runtime-context.png | Bin 0 -> 15922 bytes .../tuscany-runtime-context.png.jpeg | Bin 0 -> 4649 bytes .../tuscany-runtime-structure.png | Bin 0 -> 10648 bytes .../tuscany-runtime-structure.png.jpeg | Bin 0 -> 6575 bytes .../tuscany-service-databinding.png | Bin 0 -> 81456 bytes .../tuscany-service-databinding.png.jpeg | Bin 0 -> 5204 bytes .../tuscany-service-interceptors.png | Bin 0 -> 25936 bytes .../tuscany-service-interceptors.png.jpeg | Bin 0 -> 4240 bytes .../sca-java-runtime-overview.html | 833 ++++ .../documentation-2x/sca-overview.html | 221 + .../Deserialized Endpoint.jpg | Bin 0 -> 57066 bytes .../Deserialized Endpoint.jpg.jpeg | Bin 0 -> 3903 bytes .../Deserialized EndpointReference.jpg | Bin 0 -> 60334 bytes .../Deserialized EndpointReference.jpg.jpeg | Bin 0 -> 3839 bytes ...ndpoint and EndpointReference serialization.jpg | Bin 0 -> 121556 bytes ...nt and EndpointReference serialization.jpg.jpeg | Bin 0 -> 4992 bytes ...zation-of-endpoints-and-endpointreferences.html | 278 ++ .../documentation-2x/setting-up-ssh.html | 250 + .../documentation-2x/treenavigation.html | 176 + .../Tuscany 2.x Extensibility and SPIs.ppt | Bin 0 -> 282624 bytes .../tuscany-2x-extensibility-and-spis.html | 1467 ++++++ .../documentation-2x/tuscany-maven-archetypes.html | 243 + .../tuscany-runtime-context.png | Bin 0 -> 19023 bytes .../tuscany-runtime-context.png.jpeg | Bin 0 -> 4649 bytes .../tuscany-runtime-structure.png | Bin 0 -> 16397 bytes .../tuscany-runtime-structure.png.jpeg | Bin 0 -> 6575 bytes .../documentation-2x/tuscany-runtime-overview.html | 224 + .../tuscany-tomcat-distribution.html | 156 + .../documentation-2x/user-reference.html | 349 ++ .../documentation-2x/webnavigation.html | 141 + site/trunk/site-publish/documentation.html | 89 + site/trunk/site-publish/events.html | 153 + .../site-publish/explicit-createupdatedelete.html | 147 + .../explicit-resultset-shape-definition.html | 157 + ...eature-areas-and-what-folks-are-working-on.html | 1877 +++++++ .../features-for-java-das-m3-release.html | 613 +++ site/trunk/site-publish/features.html | 715 +++ site/trunk/site-publish/federation-notes.html | 267 + .../foreignkeyrepresentationandmanagement.html | 122 + site/trunk/site-publish/found-a-bug-section.html | 141 + .../site-publish/general-das-subproject-menu.html | 83 + site/trunk/site-publish/general-info.html | 112 + site/trunk/site-publish/general-menu.html | 116 + .../site-publish/general-subproject-menu.html | 83 + site/trunk/site-publish/general.html | 123 + site/trunk/site-publish/get-hold-of-rat.html | 112 + site/trunk/site-publish/get-involved-section.html | 214 + .../getting-involved-projects-panel.html | 118 + .../site-publish/getting-involved-projects.html | 212 + site/trunk/site-publish/getting-involved.html | 255 + site/trunk/site-publish/getting-source.html | 149 + ...build-your-first-web-services-with-tuscany.html | 80 + .../New_Calc_Java_Project.png | Bin 0 -> 25553 bytes .../New_Calc_Java_Project.png.jpeg | Bin 0 -> 6986 bytes .../New_Calc_Java_Project_lib.png | Bin 0 -> 30996 bytes .../New_Calc_Java_Project_lib.png.jpeg | Bin 0 -> 6424 bytes .../New_User_Lib.png | Bin 0 -> 11560 bytes .../New_User_Lib.png.jpeg | Bin 0 -> 7470 bytes .../Tuscany_User_Lib.png | Bin 0 -> 58273 bytes .../Tuscany_User_Lib.png.jpeg | Bin 0 -> 10064 bytes .../atom_feed.png | Bin 0 -> 1004 bytes .../atom_feed.png.jpeg | Bin 0 -> 902 bytes .../atom_feeds_page.png | Bin 0 -> 34249 bytes .../atom_feeds_page.png.jpeg | Bin 0 -> 8152 bytes .../calculator_eclipse_console.png | Bin 0 -> 11204 bytes .../calculator_eclipse_console.png.jpeg | Bin 0 -> 2502 bytes .../calculator_proj_dlg.png | Bin 0 -> 33965 bytes .../calculator_proj_dlg.png.jpeg | Bin 0 -> 8217 bytes .../class_btn.png | Bin 0 -> 607 bytes .../class_btn.png.jpeg | Bin 0 -> 905 bytes .../eclipse_console.png | Bin 0 -> 29679 bytes .../eclipse_console.png.jpeg | Bin 0 -> 6576 bytes .../first_composite.png | Bin 0 -> 20105 bytes .../first_composite.png.jpeg | Bin 0 -> 4479 bytes .../folder_structure.png | Bin 0 -> 5699 bytes .../folder_structure.png.jpeg | Bin 0 -> 3485 bytes .../interface_btn.png | Bin 0 -> 629 bytes .../interface_btn.png.jpeg | Bin 0 -> 778 bytes .../new_java_pkg_btn.png | Bin 0 -> 526 bytes .../new_java_pkg_btn.png.jpeg | Bin 0 -> 863 bytes .../new_java_pkg_dlg.png | Bin 0 -> 17713 bytes .../new_java_pkg_dlg.png.jpeg | Bin 0 -> 5069 bytes .../new_java_pkg_folder.png | Bin 0 -> 4764 bytes .../new_java_pkg_folder.png.jpeg | Bin 0 -> 4541 bytes .../new_java_project.png | Bin 0 -> 838 bytes .../new_java_project.png.jpeg | Bin 0 -> 886 bytes .../new_java_project_dlg.png | Bin 0 -> 24305 bytes .../new_java_project_dlg.png.jpeg | Bin 0 -> 5743 bytes .../new_java_project_folder.png | Bin 0 -> 3784 bytes .../new_java_project_folder.png.jpeg | Bin 0 -> 3069 bytes .../new_java_project_lib.png | Bin 0 -> 28873 bytes .../new_java_project_lib.png.jpeg | Bin 0 -> 5870 bytes .../project_layout.png | Bin 0 -> 5106 bytes .../project_layout.png.jpeg | Bin 0 -> 2461 bytes .../release_zips.png | Bin 0 -> 27968 bytes .../release_zips.png.jpeg | Bin 0 -> 7133 bytes .../source_attachment.png | Bin 0 -> 3100 bytes .../source_attachment.png.jpeg | Bin 0 -> 3642 bytes .../source_attachment_config.png | Bin 0 -> 22537 bytes .../source_attachment_config.png.jpeg | Bin 0 -> 5772 bytes .../store_page.png | Bin 0 -> 27107 bytes .../store_page.png.jpeg | Bin 0 -> 7244 bytes .../store_page_1.png | Bin 0 -> 30099 bytes .../store_page_1.png.jpeg | Bin 0 -> 6740 bytes .../store_page_2.png | Bin 0 -> 30087 bytes .../store_page_2.png.jpeg | Bin 0 -> 6816 bytes .../store_page_3.png | Bin 0 -> 25889 bytes .../store_page_3.png.jpeg | Bin 0 -> 8168 bytes .../store_project.png | Bin 0 -> 6257 bytes .../store_project.png.jpeg | Bin 0 -> 7378 bytes .../store_project_1.png | Bin 0 -> 7244 bytes .../store_project_1.png.jpeg | Bin 0 -> 7835 bytes .../store_project_2.png | Bin 0 -> 13011 bytes .../store_project_2.png.jpeg | Bin 0 -> 8969 bytes .../store_project_3.png | Bin 0 -> 16186 bytes .../store_project_3.png.jpeg | Bin 0 -> 11908 bytes .../store_project_4.png | Bin 0 -> 17014 bytes .../store_project_4.png.jpeg | Bin 0 -> 11345 bytes .../store_project_5.png | Bin 0 -> 18612 bytes .../store_project_5.png.jpeg | Bin 0 -> 10451 bytes .../tuscany_folder.png | Bin 0 -> 24656 bytes .../tuscany_folder.png.jpeg | Bin 0 -> 4071 bytes .../tuscany_samples_folder.png | Bin 0 -> 10009 bytes .../tuscany_samples_folder.png.jpeg | Bin 0 -> 8104 bytes .../getting-started-with-tuscany-release-10.html | 726 +++ .../calculator1.png | Bin 0 -> 37468 bytes .../calculator1.png.jpeg | Bin 0 -> 7527 bytes .../calculator2.png | Bin 0 -> 18411 bytes .../calculator2.png.jpeg | Bin 0 -> 8355 bytes .../calculator3.png | Bin 0 -> 12399 bytes .../calculator3.png.jpeg | Bin 0 -> 6581 bytes .../calculator4.png | Bin 0 -> 23394 bytes .../calculator4.png.jpeg | Bin 0 -> 7412 bytes .../calculatorblocks.png | Bin 0 -> 10520 bytes .../calculatorblocks.png.jpeg | Bin 0 -> 6122 bytes ...tarted-with-tuscany-using-the-command-line.html | 577 +++ .../New_Calc_Java_Project.png | Bin 0 -> 25553 bytes .../New_Calc_Java_Project.png.jpeg | Bin 0 -> 6986 bytes .../New_Calc_Java_Project_lib.png | Bin 0 -> 30996 bytes .../New_Calc_Java_Project_lib.png.jpeg | Bin 0 -> 6424 bytes .../New_User_Lib.png | Bin 0 -> 11560 bytes .../New_User_Lib.png.jpeg | Bin 0 -> 7470 bytes .../Tuscany_User_Lib.png | Bin 0 -> 58273 bytes .../Tuscany_User_Lib.png.jpeg | Bin 0 -> 10064 bytes .../atom_feed.png | Bin 0 -> 1004 bytes .../atom_feed.png.jpeg | Bin 0 -> 902 bytes .../atom_feeds_page.png | Bin 0 -> 34249 bytes .../atom_feeds_page.png.jpeg | Bin 0 -> 8152 bytes .../calculator_eclipse_console.png | Bin 0 -> 11204 bytes .../calculator_eclipse_console.png.jpeg | Bin 0 -> 2502 bytes .../calculator_proj_dlg.png | Bin 0 -> 33965 bytes .../calculator_proj_dlg.png.jpeg | Bin 0 -> 8217 bytes .../class_btn.png | Bin 0 -> 607 bytes .../class_btn.png.jpeg | Bin 0 -> 905 bytes .../eclipse_console.png | Bin 0 -> 29679 bytes .../eclipse_console.png.jpeg | Bin 0 -> 6576 bytes .../first_composite.png | Bin 0 -> 20105 bytes .../first_composite.png.jpeg | Bin 0 -> 4479 bytes .../folder_structure.jpg | Bin 0 -> 5200 bytes .../folder_structure.jpg.jpeg | Bin 0 -> 3054 bytes .../folder_structure.png | Bin 0 -> 5699 bytes .../folder_structure.png.jpeg | Bin 0 -> 3485 bytes .../install_update.jpg | Bin 0 -> 36200 bytes .../install_update.jpg.jpeg | Bin 0 -> 7855 bytes .../install_update_feature_license.jpg | Bin 0 -> 61939 bytes .../install_update_feature_license.jpg.jpeg | Bin 0 -> 10388 bytes .../install_update_feature_verification.jpg | Bin 0 -> 34245 bytes .../install_update_feature_verification.jpg.jpeg | Bin 0 -> 6874 bytes .../install_update_finish.jpg | Bin 0 -> 45162 bytes .../install_update_finish.jpg.jpeg | Bin 0 -> 8880 bytes .../install_update_installation.jpg | Bin 0 -> 43354 bytes .../install_update_installation.jpg.jpeg | Bin 0 -> 8488 bytes .../install_update_new_site.jpg | Bin 0 -> 14134 bytes .../install_update_new_site.jpg.jpeg | Bin 0 -> 6308 bytes .../install_update_restart_eclipse.jpg | Bin 0 -> 10948 bytes .../install_update_restart_eclipse.jpg.jpeg | Bin 0 -> 3933 bytes .../install_update_search_results.jpg | Bin 0 -> 35511 bytes .../install_update_search_results.jpg.jpeg | Bin 0 -> 7292 bytes .../install_update_sites.jpg | Bin 0 -> 43280 bytes .../install_update_sites.jpg.jpeg | Bin 0 -> 8600 bytes .../interface_btn.png | Bin 0 -> 629 bytes .../interface_btn.png.jpeg | Bin 0 -> 778 bytes .../new_java_pkg_btn.png | Bin 0 -> 526 bytes .../new_java_pkg_btn.png.jpeg | Bin 0 -> 863 bytes .../new_java_pkg_dlg.png | Bin 0 -> 17713 bytes .../new_java_pkg_dlg.png.jpeg | Bin 0 -> 5069 bytes .../new_java_pkg_folder.png | Bin 0 -> 4764 bytes .../new_java_pkg_folder.png.jpeg | Bin 0 -> 4541 bytes .../new_java_project.png | Bin 0 -> 838 bytes .../new_java_project.png.jpeg | Bin 0 -> 886 bytes .../new_java_project_dlg.png | Bin 0 -> 24305 bytes .../new_java_project_dlg.png.jpeg | Bin 0 -> 5743 bytes .../new_java_project_folder.png | Bin 0 -> 3784 bytes .../new_java_project_folder.png.jpeg | Bin 0 -> 3069 bytes .../new_java_project_lib.png | Bin 0 -> 28873 bytes .../new_java_project_lib.png.jpeg | Bin 0 -> 5870 bytes .../project_layout.png | Bin 0 -> 5106 bytes .../project_layout.png.jpeg | Bin 0 -> 2461 bytes .../release_zips.jpg | Bin 0 -> 37153 bytes .../release_zips.jpg.jpeg | Bin 0 -> 6656 bytes .../release_zips.png | Bin 0 -> 27968 bytes .../release_zips.png.jpeg | Bin 0 -> 7133 bytes .../source_attachment.jpg | Bin 0 -> 4402 bytes .../source_attachment.jpg.jpeg | Bin 0 -> 3091 bytes .../source_attachment.png | Bin 0 -> 3100 bytes .../source_attachment.png.jpeg | Bin 0 -> 3642 bytes .../source_attachment_config.jpg | Bin 0 -> 21579 bytes .../source_attachment_config.jpg.jpeg | Bin 0 -> 5470 bytes .../source_attachment_config.png | Bin 0 -> 22537 bytes .../source_attachment_config.png.jpeg | Bin 0 -> 5772 bytes .../store_page.png | Bin 0 -> 27107 bytes .../store_page.png.jpeg | Bin 0 -> 7244 bytes .../store_page_1.png | Bin 0 -> 30099 bytes .../store_page_1.png.jpeg | Bin 0 -> 6740 bytes .../store_page_2.png | Bin 0 -> 30087 bytes .../store_page_2.png.jpeg | Bin 0 -> 6816 bytes .../store_page_3.png | Bin 0 -> 25889 bytes .../store_page_3.png.jpeg | Bin 0 -> 8168 bytes .../store_project.png | Bin 0 -> 6257 bytes .../store_project.png.jpeg | Bin 0 -> 7378 bytes .../store_project_1.png | Bin 0 -> 7244 bytes .../store_project_1.png.jpeg | Bin 0 -> 7835 bytes .../store_project_2.png | Bin 0 -> 13011 bytes .../store_project_2.png.jpeg | Bin 0 -> 8969 bytes .../store_project_3.jpg | Bin 0 -> 13026 bytes .../store_project_3.jpg.jpeg | Bin 0 -> 7593 bytes .../store_project_3.png | Bin 0 -> 16186 bytes .../store_project_3.png.jpeg | Bin 0 -> 11908 bytes .../store_project_4.jpg | Bin 0 -> 13843 bytes .../store_project_4.jpg.jpeg | Bin 0 -> 8619 bytes .../store_project_4.png | Bin 0 -> 17014 bytes .../store_project_4.png.jpeg | Bin 0 -> 11345 bytes .../store_project_5.jpg | Bin 0 -> 15583 bytes .../store_project_5.jpg.jpeg | Bin 0 -> 9647 bytes .../store_project_5.png | Bin 0 -> 18612 bytes .../store_project_5.png.jpeg | Bin 0 -> 10451 bytes .../tuscany_folder.jpg | Bin 0 -> 31137 bytes .../tuscany_folder.jpg.jpeg | Bin 0 -> 5691 bytes .../tuscany_folder.png | Bin 0 -> 24656 bytes .../tuscany_folder.png.jpeg | Bin 0 -> 4071 bytes .../tuscany_samples_folder.jpg | Bin 0 -> 29177 bytes .../tuscany_samples_folder.jpg.jpeg | Bin 0 -> 6731 bytes .../tuscany_samples_folder.png | Bin 0 -> 10009 bytes .../tuscany_samples_folder.png.jpeg | Bin 0 -> 8104 bytes ...th-tuscany-using-tuscany-eclipse-plugin-11.html | 650 +++ .../New_Calc_Java_Project.png | Bin 0 -> 25553 bytes .../New_Calc_Java_Project.png.jpeg | Bin 0 -> 6986 bytes .../New_Calc_Java_Project_lib.png | Bin 0 -> 30996 bytes .../New_Calc_Java_Project_lib.png.jpeg | Bin 0 -> 6424 bytes .../New_User_Lib.png | Bin 0 -> 11560 bytes .../New_User_Lib.png.jpeg | Bin 0 -> 7470 bytes .../Tuscany_User_Lib.png | Bin 0 -> 58273 bytes .../Tuscany_User_Lib.png.jpeg | Bin 0 -> 10064 bytes .../atom_feed.png | Bin 0 -> 1004 bytes .../atom_feed.png.jpeg | Bin 0 -> 902 bytes .../atom_feeds_page.png | Bin 0 -> 34249 bytes .../atom_feeds_page.png.jpeg | Bin 0 -> 8152 bytes .../calculator_eclipse_console.png | Bin 0 -> 11204 bytes .../calculator_eclipse_console.png.jpeg | Bin 0 -> 2502 bytes .../calculator_proj_dlg.png | Bin 0 -> 33965 bytes .../calculator_proj_dlg.png.jpeg | Bin 0 -> 8217 bytes .../class_btn.png | Bin 0 -> 607 bytes .../class_btn.png.jpeg | Bin 0 -> 905 bytes .../eclipse_console.png | Bin 0 -> 29679 bytes .../eclipse_console.png.jpeg | Bin 0 -> 6576 bytes .../first_composite.png | Bin 0 -> 20105 bytes .../first_composite.png.jpeg | Bin 0 -> 4479 bytes .../folder_structure.jpg | Bin 0 -> 5200 bytes .../folder_structure.jpg.jpeg | Bin 0 -> 3054 bytes .../folder_structure.png | Bin 0 -> 5699 bytes .../folder_structure.png.jpeg | Bin 0 -> 3485 bytes .../install_update.jpg | Bin 0 -> 36200 bytes .../install_update.jpg.jpeg | Bin 0 -> 7855 bytes .../install_update_feature_license.jpg | Bin 0 -> 61939 bytes .../install_update_feature_license.jpg.jpeg | Bin 0 -> 10388 bytes .../install_update_feature_verification.jpg | Bin 0 -> 34245 bytes .../install_update_feature_verification.jpg.jpeg | Bin 0 -> 6874 bytes .../install_update_finish.jpg | Bin 0 -> 45162 bytes .../install_update_finish.jpg.jpeg | Bin 0 -> 8880 bytes .../install_update_installation.jpg | Bin 0 -> 43354 bytes .../install_update_installation.jpg.jpeg | Bin 0 -> 8488 bytes .../install_update_new_site.jpg | Bin 0 -> 14134 bytes .../install_update_new_site.jpg.jpeg | Bin 0 -> 6308 bytes .../install_update_restart_eclipse.jpg | Bin 0 -> 10948 bytes .../install_update_restart_eclipse.jpg.jpeg | Bin 0 -> 3933 bytes .../install_update_search_results.jpg | Bin 0 -> 35511 bytes .../install_update_search_results.jpg.jpeg | Bin 0 -> 7292 bytes .../install_update_sites.jpg | Bin 0 -> 43280 bytes .../install_update_sites.jpg.jpeg | Bin 0 -> 8600 bytes .../interface_btn.png | Bin 0 -> 629 bytes .../interface_btn.png.jpeg | Bin 0 -> 778 bytes .../new_java_pkg_btn.png | Bin 0 -> 526 bytes .../new_java_pkg_btn.png.jpeg | Bin 0 -> 863 bytes .../new_java_pkg_dlg.png | Bin 0 -> 17713 bytes .../new_java_pkg_dlg.png.jpeg | Bin 0 -> 5069 bytes .../new_java_pkg_folder.png | Bin 0 -> 4764 bytes .../new_java_pkg_folder.png.jpeg | Bin 0 -> 4541 bytes .../new_java_project.png | Bin 0 -> 838 bytes .../new_java_project.png.jpeg | Bin 0 -> 886 bytes .../new_java_project_dlg.png | Bin 0 -> 24305 bytes .../new_java_project_dlg.png.jpeg | Bin 0 -> 5743 bytes .../new_java_project_folder.png | Bin 0 -> 3784 bytes .../new_java_project_folder.png.jpeg | Bin 0 -> 3069 bytes .../new_java_project_lib.png | Bin 0 -> 28873 bytes .../new_java_project_lib.png.jpeg | Bin 0 -> 5870 bytes .../project_layout.png | Bin 0 -> 5106 bytes .../project_layout.png.jpeg | Bin 0 -> 2461 bytes .../release_zips.jpg | Bin 0 -> 37153 bytes .../release_zips.jpg.jpeg | Bin 0 -> 6656 bytes .../release_zips.png | Bin 0 -> 27968 bytes .../release_zips.png.jpeg | Bin 0 -> 7133 bytes .../source_attachment.jpg | Bin 0 -> 4402 bytes .../source_attachment.jpg.jpeg | Bin 0 -> 3091 bytes .../source_attachment.png | Bin 0 -> 3100 bytes .../source_attachment.png.jpeg | Bin 0 -> 3642 bytes .../source_attachment_config.jpg | Bin 0 -> 21579 bytes .../source_attachment_config.jpg.jpeg | Bin 0 -> 5470 bytes .../source_attachment_config.png | Bin 0 -> 22537 bytes .../source_attachment_config.png.jpeg | Bin 0 -> 5772 bytes .../store_page.png | Bin 0 -> 27107 bytes .../store_page.png.jpeg | Bin 0 -> 7244 bytes .../store_page_1.png | Bin 0 -> 30099 bytes .../store_page_1.png.jpeg | Bin 0 -> 6740 bytes .../store_page_2.png | Bin 0 -> 30087 bytes .../store_page_2.png.jpeg | Bin 0 -> 6816 bytes .../store_page_3.png | Bin 0 -> 25889 bytes .../store_page_3.png.jpeg | Bin 0 -> 8168 bytes .../store_project.png | Bin 0 -> 6257 bytes .../store_project.png.jpeg | Bin 0 -> 7378 bytes .../store_project_1.png | Bin 0 -> 7244 bytes .../store_project_1.png.jpeg | Bin 0 -> 7835 bytes .../store_project_2.png | Bin 0 -> 13011 bytes .../store_project_2.png.jpeg | Bin 0 -> 8969 bytes .../store_project_3.jpg | Bin 0 -> 13026 bytes .../store_project_3.jpg.jpeg | Bin 0 -> 7593 bytes .../store_project_3.png | Bin 0 -> 16186 bytes .../store_project_3.png.jpeg | Bin 0 -> 11908 bytes .../store_project_4.jpg | Bin 0 -> 13843 bytes .../store_project_4.jpg.jpeg | Bin 0 -> 8619 bytes .../store_project_4.png | Bin 0 -> 17014 bytes .../store_project_4.png.jpeg | Bin 0 -> 11345 bytes .../store_project_5.jpg | Bin 0 -> 15583 bytes .../store_project_5.jpg.jpeg | Bin 0 -> 9647 bytes .../store_project_5.png | Bin 0 -> 18612 bytes .../store_project_5.png.jpeg | Bin 0 -> 10451 bytes .../tuscany_folder.jpg | Bin 0 -> 31137 bytes .../tuscany_folder.jpg.jpeg | Bin 0 -> 5691 bytes .../tuscany_folder.png | Bin 0 -> 24656 bytes .../tuscany_folder.png.jpeg | Bin 0 -> 4071 bytes .../tuscany_samples_folder.jpg | Bin 0 -> 29177 bytes .../tuscany_samples_folder.jpg.jpeg | Bin 0 -> 6731 bytes .../tuscany_samples_folder.png | Bin 0 -> 10009 bytes .../tuscany_samples_folder.png.jpeg | Bin 0 -> 8104 bytes ...-with-tuscany-using-tuscany-eclipse-plugin.html | 745 +++ .../New_Calc_Java_Project.png | Bin 0 -> 25553 bytes .../New_Calc_Java_Project.png.jpeg | Bin 0 -> 6986 bytes .../New_Calc_Java_Project_lib.png | Bin 0 -> 30996 bytes .../New_Calc_Java_Project_lib.png.jpeg | Bin 0 -> 6424 bytes .../New_User_Lib.png | Bin 0 -> 11560 bytes .../New_User_Lib.png.jpeg | Bin 0 -> 7470 bytes .../Tuscany_User_Lib.png | Bin 0 -> 19308 bytes .../Tuscany_User_Lib.png.jpeg | Bin 0 -> 10064 bytes .../atom_feed.png | Bin 0 -> 1004 bytes .../atom_feed.png.jpeg | Bin 0 -> 902 bytes .../atom_feeds_page.png | Bin 0 -> 34249 bytes .../atom_feeds_page.png.jpeg | Bin 0 -> 8152 bytes .../calculator_eclipse_console.png | Bin 0 -> 11204 bytes .../calculator_eclipse_console.png.jpeg | Bin 0 -> 2502 bytes .../calculator_proj_dlg.png | Bin 0 -> 33965 bytes .../calculator_proj_dlg.png.jpeg | Bin 0 -> 8217 bytes .../class_btn.png | Bin 0 -> 607 bytes .../class_btn.png.jpeg | Bin 0 -> 905 bytes .../eclipse_console.png | Bin 0 -> 29679 bytes .../eclipse_console.png.jpeg | Bin 0 -> 6576 bytes .../first_composite.png | Bin 0 -> 20105 bytes .../first_composite.png.jpeg | Bin 0 -> 4479 bytes .../folder_structure.jpg | Bin 0 -> 7715 bytes .../folder_structure.jpg.jpeg | Bin 0 -> 3054 bytes .../folder_structure.png | Bin 0 -> 5699 bytes .../folder_structure.png.jpeg | Bin 0 -> 3485 bytes .../interface_btn.png | Bin 0 -> 629 bytes .../interface_btn.png.jpeg | Bin 0 -> 778 bytes .../new_java_pkg_btn.png | Bin 0 -> 526 bytes .../new_java_pkg_btn.png.jpeg | Bin 0 -> 863 bytes .../new_java_pkg_dlg.png | Bin 0 -> 17713 bytes .../new_java_pkg_dlg.png.jpeg | Bin 0 -> 5069 bytes .../new_java_pkg_folder.png | Bin 0 -> 4764 bytes .../new_java_pkg_folder.png.jpeg | Bin 0 -> 4541 bytes .../new_java_project.png | Bin 0 -> 838 bytes .../new_java_project.png.jpeg | Bin 0 -> 886 bytes .../new_java_project_dlg.png | Bin 0 -> 24305 bytes .../new_java_project_dlg.png.jpeg | Bin 0 -> 5743 bytes .../new_java_project_folder.png | Bin 0 -> 3784 bytes .../new_java_project_folder.png.jpeg | Bin 0 -> 3069 bytes .../new_java_project_lib.png | Bin 0 -> 28873 bytes .../new_java_project_lib.png.jpeg | Bin 0 -> 5870 bytes .../project_layout.png | Bin 0 -> 5106 bytes .../project_layout.png.jpeg | Bin 0 -> 2461 bytes .../release_zips.jpg | Bin 0 -> 49700 bytes .../release_zips.jpg.jpeg | Bin 0 -> 6656 bytes .../release_zips.png | Bin 0 -> 27968 bytes .../release_zips.png.jpeg | Bin 0 -> 7133 bytes .../source_attachment.jpg | Bin 0 -> 19134 bytes .../source_attachment.jpg.jpeg | Bin 0 -> 3091 bytes .../source_attachment.png | Bin 0 -> 3100 bytes .../source_attachment.png.jpeg | Bin 0 -> 3642 bytes .../source_attachment_config.jpg | Bin 0 -> 31982 bytes .../source_attachment_config.jpg.jpeg | Bin 0 -> 5470 bytes .../source_attachment_config.png | Bin 0 -> 22537 bytes .../source_attachment_config.png.jpeg | Bin 0 -> 5772 bytes .../store_page.png | Bin 0 -> 27107 bytes .../store_page.png.jpeg | Bin 0 -> 7244 bytes .../store_page_1.png | Bin 0 -> 30099 bytes .../store_page_1.png.jpeg | Bin 0 -> 6740 bytes .../store_page_2.png | Bin 0 -> 30087 bytes .../store_page_2.png.jpeg | Bin 0 -> 6816 bytes .../store_page_3.png | Bin 0 -> 25889 bytes .../store_page_3.png.jpeg | Bin 0 -> 8168 bytes .../store_project.png | Bin 0 -> 6257 bytes .../store_project.png.jpeg | Bin 0 -> 7378 bytes .../store_project_1.png | Bin 0 -> 7244 bytes .../store_project_1.png.jpeg | Bin 0 -> 7835 bytes .../store_project_2.png | Bin 0 -> 13011 bytes .../store_project_2.png.jpeg | Bin 0 -> 8969 bytes .../store_project_3.jpg | Bin 0 -> 13026 bytes .../store_project_3.jpg.jpeg | Bin 0 -> 7593 bytes .../store_project_3.png | Bin 0 -> 16186 bytes .../store_project_3.png.jpeg | Bin 0 -> 11908 bytes .../store_project_4.jpg | Bin 0 -> 13843 bytes .../store_project_4.jpg.jpeg | Bin 0 -> 8619 bytes .../store_project_4.png | Bin 0 -> 17014 bytes .../store_project_4.png.jpeg | Bin 0 -> 11345 bytes .../store_project_5.jpg | Bin 0 -> 15583 bytes .../store_project_5.jpg.jpeg | Bin 0 -> 9647 bytes .../store_project_5.png | Bin 0 -> 18612 bytes .../store_project_5.png.jpeg | Bin 0 -> 10451 bytes .../tuscany_folder.jpg | Bin 0 -> 39305 bytes .../tuscany_folder.jpg.jpeg | Bin 0 -> 5691 bytes .../tuscany_folder.png | Bin 0 -> 24656 bytes .../tuscany_folder.png.jpeg | Bin 0 -> 4071 bytes .../tuscany_samples_folder.jpg | Bin 0 -> 29177 bytes .../tuscany_samples_folder.jpg.jpeg | Bin 0 -> 6731 bytes .../tuscany_samples_folder.png | Bin 0 -> 10009 bytes .../tuscany_samples_folder.png.jpeg | Bin 0 -> 8104 bytes .../site-publish/getting-started-with-tuscany.html | 814 +++ .../getting-started.data/eclipse_m2_repo.jpg | Bin 0 -> 290406 bytes .../getting-started.data/eclipse_m2_repo.jpg.jpeg | Bin 0 -> 9500 bytes site/trunk/site-publish/getting-started.html | 213 + .../getting-tuscanys-java-sca-implementation.html | 134 + .../site-publish/getting-tuscnays-java-sca.html | 118 + site/trunk/site-publish/graph-merge.html | 123 + site/trunk/site-publish/haleh-sandbox.html | 127 + site/trunk/site-publish/home-subpage.html | 147 + site/trunk/site-publish/home.data/Logo.png | Bin 0 -> 20062 bytes site/trunk/site-publish/home.data/Logo.png.jpeg | Bin 0 -> 5970 bytes site/trunk/site-publish/home.data/SCAMessage.JPG | Bin 0 -> 18437 bytes .../site-publish/home.data/SCAMessage.JPG.jpeg | Bin 0 -> 5501 bytes site/trunk/site-publish/home.data/TitleC.png | Bin 0 -> 221 bytes site/trunk/site-publish/home.data/TitleC.png.jpeg | Bin 0 -> 690 bytes site/trunk/site-publish/home.data/Tuscany Logo.png | Bin 0 -> 7494 bytes .../site-publish/home.data/Tuscany Logo.png.jpeg | Bin 0 -> 2206 bytes site/trunk/site-publish/home.html | 192 + site/trunk/site-publish/homenew.html | 331 ++ site/trunk/site-publish/images/bad.gif | Bin 0 -> 291 bytes .../site-publish/images/border/border_bottom.gif | Bin 0 -> 117 bytes site/trunk/site-publish/images/border/spacer.gif | Bin 0 -> 43 bytes site/trunk/site-publish/images/confluence_logo.gif | Bin 0 -> 454 bytes .../site-publish/images/confluence_logo_darkbg.gif | Bin 0 -> 364 bytes site/trunk/site-publish/images/en_UK.gif | Bin 0 -> 2320 bytes site/trunk/site-publish/images/encodingtest.jpg | Bin 0 -> 4527 bytes site/trunk/site-publish/images/good.gif | Bin 0 -> 289 bytes site/trunk/site-publish/images/icons/about_16.gif | Bin 0 -> 636 bytes site/trunk/site-publish/images/icons/about_16.png | Bin 0 -> 809 bytes site/trunk/site-publish/images/icons/add_16.gif | Bin 0 -> 360 bytes .../site-publish/images/icons/add_blogentry_16.gif | Bin 0 -> 385 bytes .../site-publish/images/icons/add_blogentry_32.gif | Bin 0 -> 835 bytes .../site-publish/images/icons/add_comment_16.gif | Bin 0 -> 251 bytes .../site-publish/images/icons/add_page_16.gif | Bin 0 -> 259 bytes .../site-publish/images/icons/add_page_32.gif | Bin 0 -> 567 bytes .../images/icons/add_page_child_16.gif | Bin 0 -> 253 bytes .../images/icons/add_page_faded_16.gif | Bin 0 -> 186 bytes .../images/icons/add_page_notification_16.gif | Bin 0 -> 255 bytes .../site-publish/images/icons/add_space_16.gif | Bin 0 -> 653 bytes .../site-publish/images/icons/add_space_32.gif | Bin 0 -> 1567 bytes .../images/icons/add_space_notification_16.gif | Bin 0 -> 651 bytes site/trunk/site-publish/images/icons/addbk_16.gif | Bin 0 -> 631 bytes site/trunk/site-publish/images/icons/adfav_16.gif | Bin 0 -> 625 bytes site/trunk/site-publish/images/icons/alarm_16.gif | Bin 0 -> 672 bytes site/trunk/site-publish/images/icons/apps_16.gif | Bin 0 -> 1041 bytes .../site-publish/images/icons/arrow_block_16.gif | Bin 0 -> 79 bytes .../images/icons/arrow_closed_active_16.gif | Bin 0 -> 145 bytes .../images/icons/arrow_closing_active_16.gif | Bin 0 -> 298 bytes .../images/icons/arrow_open_active_16.gif | Bin 0 -> 298 bytes .../images/icons/arrow_opening_active_16.gif | Bin 0 -> 298 bytes site/trunk/site-publish/images/icons/atom.gif | Bin 0 -> 201 bytes .../site-publish/images/icons/attach_file_16.gif | Bin 0 -> 604 bytes .../images/icons/attachments/excel.gif | Bin 0 -> 385 bytes .../site-publish/images/icons/attachments/file.gif | Bin 0 -> 596 bytes .../site-publish/images/icons/attachments/html.gif | Bin 0 -> 364 bytes .../images/icons/attachments/image.gif | Bin 0 -> 249 bytes .../site-publish/images/icons/attachments/java.gif | Bin 0 -> 376 bytes .../site-publish/images/icons/attachments/pdf.gif | Bin 0 -> 361 bytes .../images/icons/attachments/powerpoint.gif | Bin 0 -> 394 bytes .../site-publish/images/icons/attachments/text.gif | Bin 0 -> 221 bytes .../site-publish/images/icons/attachments/word.gif | Bin 0 -> 386 bytes .../site-publish/images/icons/attachments/xml.gif | Bin 0 -> 168 bytes .../site-publish/images/icons/attachments/zip.gif | Bin 0 -> 235 bytes site/trunk/site-publish/images/icons/back_16.gif | Bin 0 -> 358 bytes .../site-publish/images/icons/blogentry_16.gif | Bin 0 -> 268 bytes .../images/icons/blogentry_faded_16.gif | Bin 0 -> 197 bytes .../site-publish/images/icons/browse_space.gif | Bin 0 -> 1072 bytes .../site-publish/images/icons/bullet_blue.gif | Bin 0 -> 60 bytes .../site-publish/images/icons/bullet_creme.gif | Bin 0 -> 60 bytes .../site-publish/images/icons/bullet_creme_6.gif | Bin 0 -> 51 bytes .../site-publish/images/icons/bullet_done.gif | Bin 0 -> 59 bytes .../images/icons/bullet_inprogress.gif | Bin 0 -> 58 bytes .../site-publish/images/icons/bullet_notdone.gif | Bin 0 -> 56 bytes .../trunk/site-publish/images/icons/bullet_red.gif | Bin 0 -> 60 bytes site/trunk/site-publish/images/icons/cal_16.gif | Bin 0 -> 619 bytes site/trunk/site-publish/images/icons/calc_16.gif | Bin 0 -> 616 bytes site/trunk/site-publish/images/icons/cancl_16.gif | Bin 0 -> 643 bytes site/trunk/site-publish/images/icons/cart_16.gif | Bin 0 -> 370 bytes site/trunk/site-publish/images/icons/cd_16.gif | Bin 0 -> 1071 bytes site/trunk/site-publish/images/icons/chart_16.gif | Bin 0 -> 618 bytes site/trunk/site-publish/images/icons/close_16.gif | Bin 0 -> 619 bytes .../trunk/site-publish/images/icons/comment_16.gif | Bin 0 -> 178 bytes site/trunk/site-publish/images/icons/confg_16.gif | Bin 0 -> 378 bytes .../images/icons/configure_icon_16.gif | Bin 0 -> 369 bytes site/trunk/site-publish/images/icons/copy_16.gif | Bin 0 -> 371 bytes site/trunk/site-publish/images/icons/cut_16.gif | Bin 0 -> 574 bytes site/trunk/site-publish/images/icons/del_16.gif | Bin 0 -> 588 bytes .../site-publish/images/icons/del_blogentry_16.gif | Bin 0 -> 383 bytes .../site-publish/images/icons/del_comment_16.gif | Bin 0 -> 251 bytes .../site-publish/images/icons/del_page_16.gif | Bin 0 -> 260 bytes .../images/icons/del_page_notification_16.gif | Bin 0 -> 268 bytes .../site-publish/images/icons/del_space_16.gif | Bin 0 -> 644 bytes .../images/icons/del_space_notification_16.gif | Bin 0 -> 634 bytes site/trunk/site-publish/images/icons/docs_16.gif | Bin 0 -> 614 bytes .../images/icons/document_attachment.png | Bin 0 -> 720 bytes .../images/icons/document_exchange.gif | Bin 0 -> 600 bytes .../images/icons/document_exchange.png | Bin 0 -> 803 bytes .../images/icons/document_zoom_in_16.gif | Bin 0 -> 626 bytes .../images/icons/document_zoom_in_16.png | Bin 0 -> 771 bytes site/trunk/site-publish/images/icons/down_16.gif | Bin 0 -> 365 bytes site/trunk/site-publish/images/icons/dummy.gif | Bin 0 -> 24354 bytes site/trunk/site-publish/images/icons/edit_16.gif | Bin 0 -> 214 bytes .../images/icons/edit_blogentry_16.gif | Bin 0 -> 391 bytes .../site-publish/images/icons/edit_only_16.gif | Bin 0 -> 214 bytes .../site-publish/images/icons/edit_space_16.gif | Bin 0 -> 654 bytes .../site-publish/images/icons/emoticons/add.gif | Bin 0 -> 599 bytes .../site-publish/images/icons/emoticons/add.png | Bin 0 -> 815 bytes .../images/icons/emoticons/biggrin.gif | Bin 0 -> 696 bytes .../site-publish/images/icons/emoticons/check.gif | Bin 0 -> 604 bytes .../site-publish/images/icons/emoticons/check.png | Bin 0 -> 821 bytes .../site-publish/images/icons/emoticons/error.gif | Bin 0 -> 633 bytes .../site-publish/images/icons/emoticons/error.png | Bin 0 -> 834 bytes .../images/icons/emoticons/forbidden.gif | Bin 0 -> 613 bytes .../images/icons/emoticons/forbidden.png | Bin 0 -> 785 bytes .../images/icons/emoticons/help_16.gif | Bin 0 -> 634 bytes .../images/icons/emoticons/information.gif | Bin 0 -> 1005 bytes .../images/icons/emoticons/information.png | Bin 0 -> 790 bytes .../images/icons/emoticons/lightbulb.gif | Bin 0 -> 350 bytes .../images/icons/emoticons/lightbulb.png | Bin 0 -> 668 bytes .../images/icons/emoticons/lightbulb_on.gif | Bin 0 -> 551 bytes .../images/icons/emoticons/lightbulb_on.png | Bin 0 -> 684 bytes .../site-publish/images/icons/emoticons/sad.gif | Bin 0 -> 698 bytes .../site-publish/images/icons/emoticons/smile.gif | Bin 0 -> 699 bytes .../images/icons/emoticons/star_blue.gif | Bin 0 -> 569 bytes .../images/icons/emoticons/star_blue.png | Bin 0 -> 737 bytes .../images/icons/emoticons/star_green.gif | Bin 0 -> 569 bytes .../images/icons/emoticons/star_green.png | Bin 0 -> 775 bytes .../images/icons/emoticons/star_red.gif | Bin 0 -> 567 bytes .../images/icons/emoticons/star_red.png | Bin 0 -> 747 bytes .../images/icons/emoticons/star_yellow.gif | Bin 0 -> 567 bytes .../images/icons/emoticons/star_yellow.png | Bin 0 -> 765 bytes .../images/icons/emoticons/thumbs_down.gif | Bin 0 -> 283 bytes .../images/icons/emoticons/thumbs_up.gif | Bin 0 -> 280 bytes .../site-publish/images/icons/emoticons/tongue.gif | Bin 0 -> 698 bytes .../images/icons/emoticons/warning.gif | Bin 0 -> 569 bytes .../images/icons/emoticons/warning.png | Bin 0 -> 719 bytes .../site-publish/images/icons/emoticons/wink.gif | Bin 0 -> 698 bytes site/trunk/site-publish/images/icons/exp_16.gif | Bin 0 -> 224 bytes site/trunk/site-publish/images/icons/exp_32.gif | Bin 0 -> 749 bytes site/trunk/site-publish/images/icons/fastf_16.gif | Bin 0 -> 345 bytes site/trunk/site-publish/images/icons/favicon.ico | Bin 0 -> 2494 bytes site/trunk/site-publish/images/icons/favicon.png | Bin 0 -> 391 bytes site/trunk/site-publish/images/icons/favs_16.gif | Bin 0 -> 599 bytes site/trunk/site-publish/images/icons/fax_16.gif | Bin 0 -> 609 bytes .../site-publish/images/icons/feed-icon-10x10.png | Bin 0 -> 469 bytes .../site-publish/images/icons/feed-icon-12x12.png | Bin 0 -> 552 bytes .../site-publish/images/icons/feed-icon-16x16.png | Bin 0 -> 764 bytes .../site-publish/images/icons/feed-icon-24x24.png | Bin 0 -> 1090 bytes .../site-publish/images/icons/feed-icon-32x32.png | Bin 0 -> 1441 bytes .../site-publish/images/icons/feed_wizard.gif | Bin 0 -> 787 bytes site/trunk/site-publish/images/icons/flag_16.gif | Bin 0 -> 1023 bytes site/trunk/site-publish/images/icons/foldr_16.gif | Bin 0 -> 612 bytes site/trunk/site-publish/images/icons/forwd_16.gif | Bin 0 -> 355 bytes site/trunk/site-publish/images/icons/forwd_24.png | Bin 0 -> 754 bytes site/trunk/site-publish/images/icons/games_16.gif | Bin 0 -> 397 bytes site/trunk/site-publish/images/icons/go_16.gif | Bin 0 -> 607 bytes site/trunk/site-publish/images/icons/group_16.gif | Bin 0 -> 1013 bytes .../site-publish/images/icons/group_anyone_16.gif | Bin 0 -> 271 bytes site/trunk/site-publish/images/icons/hd_16.gif | Bin 0 -> 617 bytes site/trunk/site-publish/images/icons/help_16.gif | Bin 0 -> 634 bytes site/trunk/site-publish/images/icons/help_24.gif | Bin 0 -> 840 bytes site/trunk/site-publish/images/icons/help_24.png | Bin 0 -> 1615 bytes site/trunk/site-publish/images/icons/hist_16.gif | Bin 0 -> 616 bytes .../trunk/site-publish/images/icons/history_16.gif | Bin 0 -> 264 bytes site/trunk/site-publish/images/icons/home_16.gif | Bin 0 -> 594 bytes .../site-publish/images/icons/home_faded_16.gif | Bin 0 -> 159 bytes site/trunk/site-publish/images/icons/image_16.gif | Bin 0 -> 1042 bytes .../site-publish/images/icons/import_mbox_16.gif | Bin 0 -> 381 bytes site/trunk/site-publish/images/icons/impt_16.gif | Bin 0 -> 225 bytes site/trunk/site-publish/images/icons/label_16.gif | Bin 0 -> 221 bytes .../site-publish/images/icons/layout_northwest.gif | Bin 0 -> 204 bytes .../site-publish/images/icons/layout_northwest.png | Bin 0 -> 354 bytes site/trunk/site-publish/images/icons/lgicn_16.gif | Bin 0 -> 610 bytes site/trunk/site-publish/images/icons/link_16.gif | Bin 0 -> 355 bytes .../images/icons/link_attachment_7.gif | Bin 0 -> 163 bytes .../site-publish/images/icons/link_in_bot.gif | Bin 0 -> 62 bytes .../site-publish/images/icons/link_in_mid.gif | Bin 0 -> 64 bytes .../site-publish/images/icons/link_in_only.gif | Bin 0 -> 64 bytes .../site-publish/images/icons/link_in_top.gif | Bin 0 -> 67 bytes .../site-publish/images/icons/link_out_bot.gif | Bin 0 -> 65 bytes .../site-publish/images/icons/link_out_mid.gif | Bin 0 -> 67 bytes .../site-publish/images/icons/link_out_top.gif | Bin 0 -> 67 bytes site/trunk/site-publish/images/icons/linkext7.gif | Bin 0 -> 166 bytes .../images/icons/list_blogentries_32.gif | Bin 0 -> 630 bytes .../images/icons/list_blogposts_32.gif | Bin 0 -> 630 bytes .../images/icons/list_less_pages_16.gif | Bin 0 -> 236 bytes .../site-publish/images/icons/list_mail_32.gif | Bin 0 -> 391 bytes .../images/icons/list_mail_content_16.gif | Bin 0 -> 165 bytes .../images/icons/list_mail_faded_16.gif | Bin 0 -> 173 bytes .../site-publish/images/icons/list_pages_16.gif | Bin 0 -> 240 bytes .../site-publish/images/icons/list_pages_32.gif | Bin 0 -> 456 bytes .../images/icons/list_pages_faded_16.gif | Bin 0 -> 260 bytes site/trunk/site-publish/images/icons/lock_16.gif | Bin 0 -> 582 bytes .../site-publish/images/icons/locked_pages_16.gif | Bin 0 -> 598 bytes .../site-publish/images/icons/logo_add_16.gif | Bin 0 -> 1008 bytes site/trunk/site-publish/images/icons/mail.png | Bin 0 -> 1912 bytes site/trunk/site-publish/images/icons/mail_16.gif | Bin 0 -> 381 bytes .../site-publish/images/icons/mail_content_16.gif | Bin 0 -> 250 bytes .../site-publish/images/icons/mail_delete.png | Bin 0 -> 2161 bytes .../trunk/site-publish/images/icons/mail_small.gif | Bin 0 -> 202 bytes .../site-publish/images/icons/mail_thread_16.gif | Bin 0 -> 235 bytes site/trunk/site-publish/images/icons/move_16.gif | Bin 0 -> 352 bytes site/trunk/site-publish/images/icons/music_16.gif | Bin 0 -> 610 bytes site/trunk/site-publish/images/icons/nav_down.gif | Bin 0 -> 591 bytes site/trunk/site-publish/images/icons/nav_up.gif | Bin 0 -> 574 bytes site/trunk/site-publish/images/icons/new_16.gif | Bin 0 -> 597 bytes site/trunk/site-publish/images/icons/news.gif | Bin 0 -> 452 bytes site/trunk/site-publish/images/icons/notep_16.gif | Bin 0 -> 373 bytes site/trunk/site-publish/images/icons/ntwrk_16.gif | Bin 0 -> 391 bytes site/trunk/site-publish/images/icons/open_16.gif | Bin 0 -> 607 bytes site/trunk/site-publish/images/icons/opnbr_16.gif | Bin 0 -> 626 bytes site/trunk/site-publish/images/icons/opts_16.gif | Bin 0 -> 603 bytes .../images/icons/page_hierarchy_16.gif | Bin 0 -> 232 bytes site/trunk/site-publish/images/icons/paint_16.gif | Bin 0 -> 615 bytes site/trunk/site-publish/images/icons/paste_16.gif | Bin 0 -> 617 bytes site/trunk/site-publish/images/icons/pause_16.gif | Bin 0 -> 218 bytes site/trunk/site-publish/images/icons/phone_16.gif | Bin 0 -> 612 bytes .../site-publish/images/icons/photo_scenery.gif | Bin 0 -> 614 bytes site/trunk/site-publish/images/icons/picts_16.gif | Bin 0 -> 603 bytes site/trunk/site-publish/images/icons/play_16.gif | Bin 0 -> 312 bytes site/trunk/site-publish/images/icons/plus.gif | Bin 0 -> 109 bytes site/trunk/site-publish/images/icons/prefs_16.gif | Bin 0 -> 614 bytes site/trunk/site-publish/images/icons/print_16.gif | Bin 0 -> 372 bytes .../images/icons/profilepics/angel.png | Bin 0 -> 3739 bytes .../images/icons/profilepics/businessman.png | Bin 0 -> 2951 bytes .../images/icons/profilepics/businessman2.png | Bin 0 -> 2875 bytes .../images/icons/profilepics/default.png | Bin 0 -> 760 bytes .../images/icons/profilepics/devil.png | Bin 0 -> 2731 bytes .../images/icons/profilepics/doctor.png | Bin 0 -> 2766 bytes .../images/icons/profilepics/dude1.png | Bin 0 -> 2942 bytes .../images/icons/profilepics/dude2.png | Bin 0 -> 2748 bytes .../images/icons/profilepics/dude3.png | Bin 0 -> 2677 bytes .../images/icons/profilepics/dude4.png | Bin 0 -> 2589 bytes .../images/icons/profilepics/dude5.png | Bin 0 -> 2442 bytes .../images/icons/profilepics/ghost.png | Bin 0 -> 2819 bytes .../images/icons/profilepics/security_agent.png | Bin 0 -> 3221 bytes .../images/icons/profilepics/user1.png | Bin 0 -> 2543 bytes .../images/icons/profilepics/user2.png | Bin 0 -> 2558 bytes .../images/icons/profilepics/user3.png | Bin 0 -> 2565 bytes .../images/icons/profilepics/user_headphones.png | Bin 0 -> 2896 bytes site/trunk/site-publish/images/icons/prtpv_16.gif | Bin 0 -> 347 bytes site/trunk/site-publish/images/icons/redo_116.gif | Bin 0 -> 562 bytes site/trunk/site-publish/images/icons/ref_16.gif | Bin 0 -> 589 bytes .../trunk/site-publish/images/icons/refresh_16.png | Bin 0 -> 947 bytes .../trunk/site-publish/images/icons/refresh_24.png | Bin 0 -> 1619 bytes site/trunk/site-publish/images/icons/remov_16.gif | Bin 0 -> 627 bytes site/trunk/site-publish/images/icons/rewnd_16.gif | Bin 0 -> 346 bytes site/trunk/site-publish/images/icons/rss.gif | Bin 0 -> 112 bytes site/trunk/site-publish/images/icons/rss10.gif | Bin 0 -> 187 bytes site/trunk/site-publish/images/icons/rss20.gif | Bin 0 -> 189 bytes site/trunk/site-publish/images/icons/rss_32.gif | Bin 0 -> 157 bytes .../site-publish/images/icons/run_test_fail_16.gif | Bin 0 -> 306 bytes .../site-publish/images/icons/run_test_pass_16.gif | Bin 0 -> 307 bytes site/trunk/site-publish/images/icons/savas_16.gif | Bin 0 -> 639 bytes site/trunk/site-publish/images/icons/save_16.gif | Bin 0 -> 625 bytes site/trunk/site-publish/images/icons/sinfo_16.gif | Bin 0 -> 612 bytes site/trunk/site-publish/images/icons/skipb_16.gif | Bin 0 -> 561 bytes site/trunk/site-publish/images/icons/skipf_16.gif | Bin 0 -> 559 bytes site/trunk/site-publish/images/icons/smicn_16.gif | Bin 0 -> 596 bytes site/trunk/site-publish/images/icons/splay_16.gif | Bin 0 -> 211 bytes site/trunk/site-publish/images/icons/srch_16.gif | Bin 0 -> 349 bytes site/trunk/site-publish/images/icons/star_grey.gif | Bin 0 -> 925 bytes .../site-publish/images/icons/star_yellow.gif | Bin 0 -> 567 bytes site/trunk/site-publish/images/icons/stop_16.gif | Bin 0 -> 617 bytes .../site-publish/images/icons/subtract_16.gif | Bin 0 -> 298 bytes site/trunk/site-publish/images/icons/text_abc.gif | Bin 0 -> 1895 bytes .../site-publish/images/icons/text_abc_16.gif | Bin 0 -> 1030 bytes site/trunk/site-publish/images/icons/text_bold.gif | Bin 0 -> 396 bytes .../site-publish/images/icons/text_bold_16.png | Bin 0 -> 570 bytes .../site-publish/images/icons/text_italics.gif | Bin 0 -> 396 bytes site/trunk/site-publish/images/icons/text_tree.png | Bin 0 -> 1431 bytes .../site-publish/images/icons/text_tree_16.png | Bin 0 -> 546 bytes .../site-publish/images/icons/text_underlined.gif | Bin 0 -> 399 bytes site/trunk/site-publish/images/icons/text_view.png | Bin 0 -> 2830 bytes .../site-publish/images/icons/text_view_16.png | Bin 0 -> 753 bytes site/trunk/site-publish/images/icons/thread.png | Bin 0 -> 756 bytes site/trunk/site-publish/images/icons/tools_16.gif | Bin 0 -> 373 bytes .../images/icons/trafficlight_green_16.png | Bin 0 -> 633 bytes .../images/icons/trafficlight_green_24.png | Bin 0 -> 1016 bytes .../images/icons/trafficlight_red_16.png | Bin 0 -> 616 bytes .../images/icons/trafficlight_red_24.png | Bin 0 -> 979 bytes site/trunk/site-publish/images/icons/trash_16.gif | Bin 0 -> 374 bytes .../trunk/site-publish/images/icons/tree_minus.gif | Bin 0 -> 273 bytes site/trunk/site-publish/images/icons/tree_plus.gif | Bin 0 -> 274 bytes .../site-publish/images/icons/tree_square.gif | Bin 0 -> 179 bytes site/trunk/site-publish/images/icons/ulock_16.gif | Bin 0 -> 581 bytes site/trunk/site-publish/images/icons/undo_16.gif | Bin 0 -> 563 bytes site/trunk/site-publish/images/icons/up_16.gif | Bin 0 -> 345 bytes site/trunk/site-publish/images/icons/user_12.gif | Bin 0 -> 528 bytes site/trunk/site-publish/images/icons/user_16.gif | Bin 0 -> 1008 bytes .../trunk/site-publish/images/icons/user_bw_16.gif | Bin 0 -> 1002 bytes site/trunk/site-publish/images/icons/wait.gif | Bin 0 -> 1553 bytes site/trunk/site-publish/images/icons/watch_16.gif | Bin 0 -> 655 bytes site/trunk/site-publish/images/icons/watch_32.gif | Bin 0 -> 357 bytes .../site-publish/images/icons/watch_cancel_16.gif | Bin 0 -> 660 bytes .../site-publish/images/icons/watch_cancel_32.gif | Bin 0 -> 833 bytes site/trunk/site-publish/images/icons/web_16.gif | Bin 0 -> 1068 bytes .../site-publish/images/icons/web_faded_16.gif | Bin 0 -> 422 bytes site/trunk/site-publish/images/icons/wiz_16.gif | Bin 0 -> 588 bytes site/trunk/site-publish/images/icons/zoomi_16.gif | Bin 0 -> 385 bytes site/trunk/site-publish/images/icons/zoomo_16.gif | Bin 0 -> 371 bytes site/trunk/site-publish/images/logo.gif | Bin 0 -> 1317 bytes site/trunk/site-publish/images/logo2.gif | Bin 0 -> 1182 bytes site/trunk/site-publish/images/raw/arrow_block.png | Bin 0 -> 26205 bytes .../images/raw/arrow_closing_active.png | Bin 0 -> 27905 bytes .../images/raw/arrow_opening_active.png | Bin 0 -> 27923 bytes site/trunk/site-publish/images/raw/attach-file.png | Bin 0 -> 27713 bytes .../site-publish/images/raw/attachment-icons.png | Bin 0 -> 37297 bytes site/trunk/site-publish/images/raw/blogentry.png | Bin 0 -> 29482 bytes .../trunk/site-publish/images/raw/blogentry_24.png | Bin 0 -> 29543 bytes .../site-publish/images/raw/blogentry_add_32.png | Bin 0 -> 30574 bytes .../site-publish/images/raw/blogentry_faded_16.png | Bin 0 -> 29293 bytes site/trunk/site-publish/images/raw/bullet_done.png | Bin 0 -> 26609 bytes .../site-publish/images/raw/bullet_inprogress.png | Bin 0 -> 26540 bytes .../site-publish/images/raw/bullet_notdone.png | Bin 0 -> 26181 bytes site/trunk/site-publish/images/raw/comment-add.png | Bin 0 -> 28475 bytes site/trunk/site-publish/images/raw/comment-del.png | Bin 0 -> 28461 bytes site/trunk/site-publish/images/raw/comment.png | Bin 0 -> 28007 bytes .../site-publish/images/raw/configure_icon_16.png | Bin 0 -> 27846 bytes .../site-publish/images/raw/discussion-large.png | Bin 0 -> 31093 bytes site/trunk/site-publish/images/raw/edit_16.png | Bin 0 -> 26918 bytes .../trunk/site-publish/images/raw/edit_only_16.png | Bin 0 -> 27217 bytes .../trunk/site-publish/images/raw/group-anyone.png | Bin 0 -> 27455 bytes .../site-publish/images/raw/history_arrow.png | Bin 0 -> 26366 bytes .../site-publish/images/raw/home_16_faded.png | Bin 0 -> 26965 bytes .../site-publish/images/raw/import_mbox_16.png | Bin 0 -> 29436 bytes .../site-publish/images/raw/left-nav-theme.png | Bin 0 -> 33911 bytes .../site-publish/images/raw/link-attachment.png | Bin 0 -> 26466 bytes .../site-publish/images/raw/link-external.png | Bin 0 -> 26257 bytes .../site-publish/images/raw/list-pages-large.png | Bin 0 -> 27920 bytes site/trunk/site-publish/images/raw/list-pages.png | Bin 0 -> 26796 bytes .../images/raw/list-pages_faded_16.png | Bin 0 -> 26871 bytes .../images/raw/list_blogentries_32.png | Bin 0 -> 30542 bytes .../site-publish/images/raw/list_less_pages_16.png | Bin 0 -> 26786 bytes .../trunk/site-publish/images/raw/list_mail_16.png | Bin 0 -> 27598 bytes .../trunk/site-publish/images/raw/list_mail_32.png | Bin 0 -> 30372 bytes .../site-publish/images/raw/list_mail_faded_16.png | Bin 0 -> 27767 bytes .../site-publish/images/raw/locked-pages_16.png | Bin 0 -> 28210 bytes site/trunk/site-publish/images/raw/mail_16.png | Bin 0 -> 28853 bytes site/trunk/site-publish/images/raw/mail_small.png | Bin 0 -> 26504 bytes .../site-publish/images/raw/mail_thread_16.png | Bin 0 -> 28085 bytes site/trunk/site-publish/images/raw/main-theme.png | Bin 0 -> 31497 bytes site/trunk/site-publish/images/raw/open-active.png | Bin 0 -> 26688 bytes .../site-publish/images/raw/page-add-child.png | Bin 0 -> 27532 bytes .../site-publish/images/raw/page-add-large.png | Bin 0 -> 28945 bytes site/trunk/site-publish/images/raw/page-add.png | Bin 0 -> 27294 bytes .../site-publish/images/raw/page-add_faded_16.png | Bin 0 -> 27255 bytes site/trunk/site-publish/images/raw/page-del.png | Bin 0 -> 27470 bytes .../images/raw/page-hierarchy-large.png | Bin 0 -> 28284 bytes .../site-publish/images/raw/page-hierarchy.png | Bin 0 -> 27251 bytes .../trunk/site-publish/images/raw/page-history.png | Bin 0 -> 27470 bytes .../site-publish/images/raw/page-notification.png | Bin 0 -> 27503 bytes site/trunk/site-publish/images/raw/plus_sign.png | Bin 0 -> 26077 bytes site/trunk/site-publish/images/raw/rss.png | Bin 0 -> 26444 bytes site/trunk/site-publish/images/raw/rss_32.png | Bin 0 -> 27281 bytes .../site-publish/images/raw/space-add-large.png | Bin 0 -> 32246 bytes site/trunk/site-publish/images/raw/space-add.png | Bin 0 -> 28131 bytes site/trunk/site-publish/images/raw/space-del.png | Bin 0 -> 28161 bytes site/trunk/site-publish/images/raw/space-edit.png | Bin 0 -> 28238 bytes .../site-publish/images/raw/space-notification.png | Bin 0 -> 29072 bytes .../site-publish/images/raw/test-ran-green.png | Bin 0 -> 26832 bytes .../trunk/site-publish/images/raw/test-ran-red.png | Bin 0 -> 26834 bytes site/trunk/site-publish/images/raw/tree_square.png | Bin 0 -> 26586 bytes .../site-publish/images/raw/uat-test-theme.png | Bin 0 -> 31694 bytes site/trunk/site-publish/images/raw/user_small.png | Bin 0 -> 27653 bytes site/trunk/site-publish/images/raw/watch-large.png | Bin 0 -> 31935 bytes site/trunk/site-publish/images/raw/watch_16.png | Bin 0 -> 27871 bytes .../trunk/site-publish/images/raw/web_faded_16.png | Bin 0 -> 27959 bytes .../site-publish/images/themes/left-nav-theme.gif | Bin 0 -> 953 bytes .../site-publish/images/themes/main-theme.gif | Bin 0 -> 810 bytes site/trunk/site-publish/images/themes/no-icon.gif | Bin 0 -> 1333 bytes site/trunk/site-publish/images/xtree/I.png | Bin 0 -> 148 bytes site/trunk/site-publish/images/xtree/L.png | Bin 0 -> 153 bytes site/trunk/site-publish/images/xtree/Lminus.png | Bin 0 -> 219 bytes site/trunk/site-publish/images/xtree/Lplus.png | Bin 0 -> 224 bytes site/trunk/site-publish/images/xtree/T.png | Bin 0 -> 152 bytes site/trunk/site-publish/images/xtree/Thumbs.db | Bin 0 -> 16384 bytes site/trunk/site-publish/images/xtree/Tminus.png | Bin 0 -> 207 bytes site/trunk/site-publish/images/xtree/Tplus.png | Bin 0 -> 222 bytes site/trunk/site-publish/images/xtree/blank.png | Bin 0 -> 144 bytes site/trunk/site-publish/images/xtree/file.png | Bin 0 -> 251 bytes .../trunk/site-publish/images/xtree/foldericon.png | Bin 0 -> 229 bytes site/trunk/site-publish/images/xtree/new.png | Bin 0 -> 251 bytes .../site-publish/images/xtree/openfoldericon.png | Bin 0 -> 232 bytes site/trunk/site-publish/images/xtree/pspbrwse.jbf | Bin 0 -> 5674 bytes site/trunk/site-publish/implementationscript.html | 136 + .../create-java-project-libraries.png | Bin 0 -> 30004 bytes .../create-java-project-libs.png | Bin 0 -> 29933 bytes .../create-java-project-libs.png.jpeg | Bin 0 -> 5018 bytes .../create-java-project-sources.png | Bin 0 -> 32858 bytes .../create-java-project-sources.png.jpeg | Bin 0 -> 6309 bytes .../create-java-project.png | Bin 0 -> 31723 bytes .../create-java-project.png.jpeg | Bin 0 -> 5382 bytes .../create-java-project2.png | Bin 0 -> 31723 bytes .../create-java-project2.png.jpeg | Bin 0 -> 5382 bytes .../project-properties.png | Bin 0 -> 29514 bytes .../project-properties.png.jpeg | Bin 0 -> 5752 bytes ...existing-tuscany-sca-projects-into-eclipse.html | 293 ++ site/trunk/site-publish/incubator-m2.html | 185 + .../site-publish/incubator-report-may-2007.html | 115 + site/trunk/site-publish/incubator-reports.html | 80 + site/trunk/site-publish/index.html | 192 + site/trunk/site-publish/introduction.html | 124 + site/trunk/site-publish/issue-management.html | 112 + site/trunk/site-publish/issue-tracking.html | 180 + site/trunk/site-publish/j2se-sample.html | 115 + .../trunk/site-publish/java-das-please-remove.html | 118 + site/trunk/site-publish/java-das.html | 119 + ...-implementation-model-for-event-processing.html | 207 + site/trunk/site-publish/java-implementation.html | 175 + .../java-sca-090-release-contents.html | 283 ++ .../java-sca-091-release-contents.html | 184 + .../java-sca-099-release-contents.html | 222 + .../site-publish/java-sca-10-release-contents.html | 169 + .../architectureOverview.doc | Bin 0 -> 26112 bytes .../architectureOverview.jpg | Bin 0 -> 31204 bytes .../architectureOverview.jpg.jpeg | Bin 0 -> 7755 bytes .../java-sca-architecture-guide.data/assembly.jpg | Bin 0 -> 220952 bytes .../assembly.jpg.jpeg | Bin 0 -> 8920 bytes .../java-sca-architecture-guide.data/bootstrap.jpg | Bin 0 -> 79170 bytes .../bootstrap.jpg.jpeg | Bin 0 -> 4085 bytes .../bootstrap_seq.jpg | Bin 0 -> 151327 bytes .../bootstrap_seq.jpg.jpeg | Bin 0 -> 3527 bytes .../java-sca-architecture-guide.data/component.jpg | Bin 0 -> 133816 bytes .../component.jpg.jpeg | Bin 0 -> 9028 bytes .../contribution_overview.jpg | Bin 0 -> 70662 bytes .../contribution_overview.jpg.jpeg | Bin 0 -> 7748 bytes .../java-sca-architecture-guide.data/model.jpg | Bin 0 -> 76252 bytes .../model.jpg.jpeg | Bin 0 -> 8931 bytes .../runtime-model.jpg | Bin 0 -> 168473 bytes .../runtime-model.jpg.jpeg | Bin 0 -> 12289 bytes .../runtime-wire.jpg | Bin 0 -> 134978 bytes .../runtime-wire.jpg.jpeg | Bin 0 -> 4889 bytes .../tuscany_composite_hierarchy.jpg | Bin 0 -> 180212 bytes .../tuscany_composite_hierarchy.jpg.jpeg | Bin 0 -> 7505 bytes .../tuscany_layers.jpg | Bin 0 -> 125516 bytes .../tuscany_layers.jpg.jpeg | Bin 0 -> 10073 bytes .../site-publish/java-sca-architecture-guide.html | 367 ++ .../TuscanyJAVASCAM2.pdf | Bin 0 -> 746515 bytes .../java-sca-architecture-overview.html | 201 + site/trunk/site-publish/java-sca-architecture.html | 196 + .../site-publish/java-sca-developer-guide.html | 281 ++ site/trunk/site-publish/java-sca-distributed.html | 210 + .../site-publish/java-sca-documentation-menu.html | 205 + .../site-publish/java-sca-documentation-toc.html | 157 + .../trunk/site-publish/java-sca-download-page.html | 142 + .../ExtendingTuscany.ppt | Bin 0 -> 2330112 bytes .../java-sca-extension-developer-guide.html | 241 + .../site-publish/java-sca-extension-guide.html | 297 ++ .../site-publish/java-sca-extensions-menu.html | 100 + site/trunk/site-publish/java-sca-extensions.html | 120 + .../site-publish/java-sca-implementationdata.html | 112 + .../java-sca-implementationscript.html | 170 + .../bootstrap.jpg | Bin 0 -> 79170 bytes .../bootstrap.jpg.jpeg | Bin 0 -> 4106 bytes .../bootstrap_seq.jpg | Bin 0 -> 151327 bytes .../bootstrap_seq.jpg.jpeg | Bin 0 -> 3527 bytes .../component.jpg | Bin 0 -> 133816 bytes .../component.jpg.jpeg | Bin 0 -> 9028 bytes .../model.jpg | Bin 0 -> 76252 bytes .../model.jpg.jpeg | Bin 0 -> 8931 bytes .../tuscany_composite_hierarchy.jpg | Bin 0 -> 180212 bytes .../tuscany_composite_hierarchy.jpg.jpeg | Bin 0 -> 7505 bytes .../tuscany_layers.jpg | Bin 0 -> 125516 bytes .../tuscany_layers.jpg.jpeg | Bin 0 -> 10073 bytes .../java-sca-kernel-architecture-guide.html | 476 ++ site/trunk/site-publish/java-sca-kernel-menu.html | 114 + site/trunk/site-publish/java-sca-kernel.html | 137 + site/trunk/site-publish/java-sca-menu-new.html | 124 + site/trunk/site-publish/java-sca-menu.html | 128 + .../Contribution Diagram.GIF | Bin 0 -> 10388 bytes .../Contribution Diagram.GIF.jpeg | Bin 0 -> 6165 bytes .../Tuscany-Kernel.doc | Bin 0 -> 35328 bytes .../tuscany-kernel-modulization.jpg | Bin 0 -> 395806 bytes .../tuscany-kernel-modulization.jpg.jpeg | Bin 0 -> 10450 bytes .../java-sca-modulization-design-discussions.html | 118 + .../java-sca-next-release-contents.html | 222 + .../java-sca-next-release-planning.html | 310 ++ site/trunk/site-publish/java-sca-overview.html | 196 + .../recursive_composite.jpg | Bin 0 -> 221020 bytes .../recursive_composite.jpg.jpeg | Bin 0 -> 8133 bytes .../java-sca-runtime-component-hierarchy.html | 356 ++ .../trunk/site-publish/java-sca-runtimes-menu.html | 117 + site/trunk/site-publish/java-sca-runtimes.html | 125 + .../site-publish/java-sca-subproject.data/junk.jpg | Bin 0 -> 25009 bytes .../java-sca-subproject.data/junk.jpg.jpeg | Bin 0 -> 4863 bytes .../java-sca-subproject.data/junk2.jpg | Bin 0 -> 26501 bytes .../java-sca-subproject.data/junk2.jpg.jpeg | Bin 0 -> 5403 bytes .../java-sca-subproject.data/tuscanylogo.jpg | Bin 0 -> 5276 bytes .../java-sca-subproject.data/tuscanylogo.jpg.jpeg | Bin 0 -> 1202 bytes site/trunk/site-publish/java-sca-subproject.html | 131 + .../java-sca-tools.data/SCA Tooling.ppt | Bin 0 -> 276480 bytes .../java-sca-tools.data/SCACompositeDesigner.PNG | Bin 0 -> 62538 bytes .../SCACompositeDesigner.PNG.jpeg | Bin 0 -> 7277 bytes site/trunk/site-publish/java-sca-tools.html | 172 + .../java-sca-user-guide.data/java_imp.jpg | Bin 0 -> 15457 bytes .../java-sca-user-guide.data/java_imp.jpg.jpeg | Bin 0 -> 4113 bytes site/trunk/site-publish/java-sca-user-guide.html | 112 + .../site-publish/java-sca.data/Extensions2.jpg | Bin 0 -> 25009 bytes .../java-sca.data/Extensions2.jpg.jpeg | Bin 0 -> 4863 bytes site/trunk/site-publish/java-sca.data/junk.jpg | Bin 0 -> 25009 bytes .../trunk/site-publish/java-sca.data/junk.jpg.jpeg | Bin 0 -> 4863 bytes site/trunk/site-publish/java-sca.data/junk2.jpg | Bin 0 -> 26501 bytes .../site-publish/java-sca.data/junk2.jpg.jpeg | Bin 0 -> 5403 bytes site/trunk/site-publish/java-sca.html | 195 + site/trunk/site-publish/java-sdo-menu.html | 92 + .../site-publish/javaone-demo.data/J1_BOF_01.jpg | Bin 0 -> 73284 bytes .../javaone-demo.data/J1_BOF_01.jpg.jpeg | Bin 0 -> 6755 bytes .../site-publish/javaone-demo.data/J1_BOF_01.pdf | Bin 0 -> 64622 bytes site/trunk/site-publish/javaone-demo.html | 112 + .../site-publish/javascaimplementationscript.html | 136 + .../kernel-architecture.data/TuscanyJAVASCAM2.pdf | Bin 0 -> 746515 bytes site/trunk/site-publish/kernel-architecture.html | 152 + .../Contribution Diagram.GIF | Bin 0 -> 10388 bytes .../Contribution Diagram.GIF.jpeg | Bin 0 -> 6165 bytes .../Tuscany-Kernel.doc | Bin 0 -> 35328 bytes .../tuscany-kernel-modulization.jpg | Bin 0 -> 395806 bytes .../tuscany-kernel-modulization.jpg.jpeg | Bin 0 -> 10450 bytes .../kernel-modulization-design-discussions.html | 124 + ...release-apache-tuscany-data-access-service.html | 148 + .../latest-release-das-java-m2-release.html | 129 + .../site-publish/ldap-das-architecture-guide.html | 208 + site/trunk/site-publish/ldap-das-java.html | 99 + site/trunk/site-publish/ldap-java-das.html | 152 + site/trunk/site-publish/license.html | 1559 ++++++ .../logging-tracing-and-timing-in-tuscany.html | 237 + site/trunk/site-publish/m3-process-notes.html | 274 + site/trunk/site-publish/mailing-lists.html | 186 + site/trunk/site-publish/main-menu.html | 141 + site/trunk/site-publish/making-releases.html | 701 +++ site/trunk/site-publish/maven-plugins.html | 183 + site/trunk/site-publish/menu3.html | 90 + site/trunk/site-publish/menus.html | 149 + ...ramble-through-adding-a-new-component-type.html | 155 + ...e-through-adding-a-new-implementation-type.html | 191 + .../site-publish/named-parameters-support.html | 195 + site/trunk/site-publish/native-sca-menu.html | 125 + site/trunk/site-publish/native-sdo-menu.html | 67 + site/trunk/site-publish/navigation.html | 112 + site/trunk/site-publish/new-home-page.html | 286 ++ site/trunk/site-publish/news-and-events.html | 199 + site/trunk/site-publish/news-past-events.html | 201 + .../news.data/BuildingSOAWithApacheTuscany.ppt | Bin 0 -> 1004032 bytes site/trunk/site-publish/news.html | 157 + ...btaining-a-tuscany-java-sca-implementation.html | 115 + .../site-publish/obtaining-the-sdo-21-cts.html | 185 + ...obtaining-tuscanys-java-sca-implementation.html | 137 + site/trunk/site-publish/old-sandbox.html | 167 + .../site-publish/optimisticconcurrencycontrol.html | 129 + .../osgi_3rd_party_dependencies.JPG | Bin 0 -> 34918 bytes .../osgi_3rd_party_dependencies.JPG.jpeg | Bin 0 -> 3416 bytes .../osgi_manifest_editor.jpg | Bin 0 -> 86829 bytes .../osgi_manifest_editor.jpg.jpeg | Bin 0 -> 11630 bytes .../osgi-aware-programming-in-tuscany.html | 348 ++ site/trunk/site-publish/othermenu.html | 115 + site/trunk/site-publish/overview.html | 120 + site/trunk/site-publish/partialupdate.html | 124 + site/trunk/site-publish/past-events.html | 139 + site/trunk/site-publish/php-sca.html | 112 + .../place-holder-for-the-old-user-guide-page.html | 604 +++ .../tuscany-composite-plugin/composite-mojo.html | 216 + .../tuscany-composite-plugin/css/maven-base.css | 148 + .../tuscany-composite-plugin/css/maven-theme.css | 141 + .../plugins/tuscany-composite-plugin/css/print.css | 7 + .../tuscany-composite-plugin/dependencies.html | 120 + .../tuscany-composite-plugin/images/collapsed.gif | Bin 0 -> 53 bytes .../tuscany-composite-plugin/images/expanded.gif | Bin 0 -> 52 bytes .../tuscany-composite-plugin/images/external.png | Bin 0 -> 230 bytes .../images/icon_error_sml.gif | Bin 0 -> 1010 bytes .../images/icon_info_sml.gif | Bin 0 -> 606 bytes .../images/icon_success_sml.gif | Bin 0 -> 990 bytes .../images/icon_warning_sml.gif | Bin 0 -> 576 bytes .../images/logos/maven-feather.png | Bin 0 -> 2907 bytes .../tuscany-composite-plugin/images/newwindow.png | Bin 0 -> 220 bytes .../plugins/tuscany-composite-plugin/index.html | 119 + .../tuscany-composite-plugin/integration.html | 119 + .../tuscany-composite-plugin/issue-tracking.html | 119 + .../plugins/tuscany-composite-plugin/license.html | 321 ++ .../tuscany-composite-plugin/mail-lists.html | 119 + .../tuscany-composite-plugin/plugin-info.html | 119 + .../tuscany-composite-plugin/project-info.html | 119 + .../tuscany-composite-plugin/project-reports.html | 119 + .../tuscany-composite-plugin/project-summary.html | 119 + .../source-repository.html | 119 + .../tuscany-composite-plugin/team-list.html | 134 + .../plugins/tuscany-composite-plugin/usage.html | 129 + .../tuscany-itest-plugin/css/maven-base.css | 145 + .../tuscany-itest-plugin/css/maven-theme.css | 141 + .../plugins/tuscany-itest-plugin/css/print.css | 7 + .../plugins/tuscany-itest-plugin/dependencies.html | 134 + .../plugins/tuscany-itest-plugin/faq.html | 156 + .../tuscany-itest-plugin/images/collapsed.gif | Bin 0 -> 53 bytes .../tuscany-itest-plugin/images/expanded.gif | Bin 0 -> 52 bytes .../tuscany-itest-plugin/images/external.png | Bin 0 -> 230 bytes .../tuscany-itest-plugin/images/icon_error_sml.gif | Bin 0 -> 1010 bytes .../tuscany-itest-plugin/images/icon_info_sml.gif | Bin 0 -> 606 bytes .../images/icon_success_sml.gif | Bin 0 -> 990 bytes .../images/icon_warning_sml.gif | Bin 0 -> 576 bytes .../images/logos/maven-feather.png | Bin 0 -> 3035 bytes .../tuscany-itest-plugin/images/newwindow.png | Bin 0 -> 220 bytes .../plugins/tuscany-itest-plugin/index.html | 131 + .../plugins/tuscany-itest-plugin/integration.html | 131 + .../tuscany-itest-plugin/issue-tracking.html | 131 + .../plugins/tuscany-itest-plugin/license.html | 333 ++ .../plugins/tuscany-itest-plugin/mail-lists.html | 131 + .../plugins/tuscany-itest-plugin/plugin-info.html | 132 + .../plugins/tuscany-itest-plugin/project-info.html | 131 + .../tuscany-itest-plugin/project-reports.html | 131 + .../tuscany-itest-plugin/project-summary.html | 131 + .../tuscany-itest-plugin/source-repository.html | 134 + .../plugins/tuscany-itest-plugin/team-list.html | 146 + .../plugins/tuscany-itest-plugin/test-mojo.html | 255 + .../plugins/tuscany-itest-plugin/usage.html | 190 + .../plugins/tuscany-war-plugin/css/maven-base.css | 145 + .../plugins/tuscany-war-plugin/css/maven-theme.css | 141 + .../plugins/tuscany-war-plugin/css/print.css | 7 + .../plugins/tuscany-war-plugin/dependencies.html | 124 + .../tuscany-war-plugin/images/collapsed.gif | Bin 0 -> 53 bytes .../plugins/tuscany-war-plugin/images/expanded.gif | Bin 0 -> 52 bytes .../plugins/tuscany-war-plugin/images/external.png | Bin 0 -> 230 bytes .../tuscany-war-plugin/images/icon_error_sml.gif | Bin 0 -> 1010 bytes .../tuscany-war-plugin/images/icon_info_sml.gif | Bin 0 -> 606 bytes .../tuscany-war-plugin/images/icon_success_sml.gif | Bin 0 -> 990 bytes .../tuscany-war-plugin/images/icon_warning_sml.gif | Bin 0 -> 576 bytes .../images/logos/maven-feather.png | Bin 0 -> 3035 bytes .../tuscany-war-plugin/images/newwindow.png | Bin 0 -> 220 bytes .../plugins/tuscany-war-plugin/index.html | 124 + .../plugins/tuscany-war-plugin/integration.html | 124 + .../plugins/tuscany-war-plugin/issue-tracking.html | 124 + .../plugins/tuscany-war-plugin/license.html | 124 + .../plugins/tuscany-war-plugin/mail-lists.html | 124 + .../plugins/tuscany-war-plugin/plugin-info.html | 137 + .../plugins/tuscany-war-plugin/project-info.html | 124 + .../tuscany-war-plugin/project-reports.html | 124 + .../tuscany-war-plugin/project-summary.html | 124 + .../tuscany-war-plugin/source-repository.html | 127 + .../plugins/tuscany-war-plugin/team-list.html | 139 + .../tuscany-war-plugin/tuscany-war-mojo.html | 253 + .../plugins/tuscany-war-plugin/usage.html | 139 + site/trunk/site-publish/portuguese-portal.html | 133 + .../pre-packaged-or-roll-your-own.html | 119 + site/trunk/site-publish/privacy-policy.html | 164 + .../trunk/site-publish/projects-using-tuscany.html | 210 + .../site-publish/quick-guide-to-sca.data/calc.jpg | Bin 0 -> 14540 bytes .../quick-guide-to-sca.data/calc.jpg.jpeg | Bin 0 -> 4529 bytes .../site-publish/quick-guide-to-sca.data/calc.ppt | Bin 0 -> 45056 bytes .../quick-guide-to-sca.data/component.png | Bin 0 -> 8000 bytes .../quick-guide-to-sca.data/component.png.jpeg | Bin 0 -> 3821 bytes .../quick-guide-to-sca.data/delete-calc.jpg | Bin 0 -> 21347 bytes .../quick-guide-to-sca.data/delete-calc.jpg.jpeg | Bin 0 -> 4659 bytes .../quick-guide-to-sca.data/domain.jpg | Bin 0 -> 32826 bytes .../quick-guide-to-sca.data/domain.jpg.jpeg | Bin 0 -> 6506 bytes site/trunk/site-publish/quick-guide-to-sca.html | 220 + .../rdb-das-architecture-guide.data/ClassDiag.jpg | Bin 0 -> 174233 bytes .../ClassDiag.jpg.jpeg | Bin 0 -> 6527 bytes .../rdb-das-architecture-guide.data/rdbDAS.gif | Bin 0 -> 3615 bytes .../rdbDAS.gif.jpeg | Bin 0 -> 3253 bytes .../site-publish/rdb-das-architecture-guide.html | 704 +++ .../DAS_lite_diagram.jpg | Bin 0 -> 522573 bytes .../DAS_lite_diagram.jpg.jpeg | Bin 0 -> 7425 bytes .../trunk/site-publish/rdb-das-c-architecture.html | 103 + .../rdb-das-c-changesummaryprocessing.html | 133 + .../rdb-das-c-conventionoverconfiguration.html | 119 + ...as-c-foreignkeyrepresentationandmanagement.html | 86 + .../rdb-das-c-optimisticconcurrencycontrol.html | 96 + .../site-publish/rdb-das-c-partialupdate.html | 92 + .../rdb-das-c-resultsetdrivendataobjecttypes.html | 98 + site/trunk/site-publish/rdb-das-c-user-guide.html | 168 + .../rdb-das-c-workingwithbasiccrud.html | 123 + ...-c-workingwithoptimisticconcurrencycontrol.html | 103 + .../rdb-das-c-workingwithrelationships.html | 117 + .../rdb-das-c-writeoperationordering.html | 89 + .../rdb-das-class-diagram.data/ClassDiag.jpg | Bin 0 -> 174233 bytes .../rdb-das-class-diagram.data/ClassDiag.jpg.jpeg | Bin 0 -> 6527 bytes site/trunk/site-publish/rdb-das-class-diagram.html | 130 + .../rdb-das-cpp-changesummaryprocessing.html | 135 + .../rdb-das-cpp-conventionoverconfiguration.html | 153 + ...-cpp-foreignkeyrepresentationandmanagement.html | 118 + .../rdb-das-cpp-optimisticconcurrencycontrol.html | 128 + .../site-publish/rdb-das-cpp-partialupdate.html | 124 + ...rdb-das-cpp-resultsetdrivendataobjecttypes.html | 130 + .../rdb-das-cpp-workingwithbasiccrud.html | 154 + .../rdb-das-cpp-workingwithcompoundkeys.html | 146 + .../rdb-das-cpp-workingwithconventions.html | 151 + .../rdb-das-cpp-workingwithnamemapping.html | 145 + ...pp-workingwithoptimisticconcurrencycontrol.html | 139 + .../rdb-das-cpp-workingwithrelationships.html | 151 + .../rdb-das-cpp-writeoperationordering.html | 121 + site/trunk/site-publish/rdb-das-faq.html | 121 + .../rdb-das-ideas-wish-lists-todos-etc.html | 209 + .../rdb-das-java-beta1-incubating.html | 200 + .../rdb-das-java-das-beta1-release.html | 822 +++ .../site-publish/rdb-das-java-das-m3-release.html | 770 +++ site/trunk/site-publish/rdb-das-java-faq.html | 202 + .../rdb-das-java-previous-releases.html | 128 + .../site-publish/rdb-das-java.data/RDB DAS.PNG | Bin 0 -> 3927 bytes .../rdb-das-java.data/RDB DAS.PNG.jpeg | Bin 0 -> 2579 bytes .../site-publish/rdb-das-java.data/rdbDAS.gif | Bin 0 -> 3615 bytes .../site-publish/rdb-das-java.data/rdbDAS.gif.jpeg | Bin 0 -> 3253 bytes site/trunk/site-publish/rdb-das-java.html | 139 + site/trunk/site-publish/rdb-das-releases.html | 386 ++ .../site-publish/rdb-das-transaction-control.html | 268 + site/trunk/site-publish/rdb-das-user-guide.html | 185 + site/trunk/site-publish/rdb-das-users-guide.html | 119 + site/trunk/site-publish/rdb-das.data/RDB DAS.PNG | Bin 0 -> 3927 bytes .../site-publish/rdb-das.data/RDB DAS.PNG.jpeg | Bin 0 -> 2579 bytes site/trunk/site-publish/rdb-das.data/rdbDAS.gif | Bin 0 -> 3615 bytes .../site-publish/rdb-das.data/rdbDAS.gif.jpeg | Bin 0 -> 3253 bytes site/trunk/site-publish/rdb-das.html | 111 + site/trunk/site-publish/related-projects.html | 118 + site/trunk/site-publish/release-process.html | 212 + site/trunk/site-publish/repeating-menu.html | 84 + .../site-publish/repeating-subproject-menu.html | 83 + site/trunk/site-publish/resources/space.css | 5269 ++++++++++++++++++++ .../resultsetdrivendataobjecttypes.html | 132 + .../BigBank.Apache.Tuscany.ppt | Bin 0 -> 583680 bytes .../running-the-samples.data/DELETE.txt | Bin 0 -> 565248 bytes .../running-the-samples.data/DELETEME.txt | Bin 0 -> 420864 bytes .../running-the-samples.data/DELETEMETOO.txt | Bin 0 -> 606720 bytes .../ModifiedCalculatorExample.pdf | Bin 0 -> 83280 bytes .../ModifiedCalculatorExample.ppt | Bin 0 -> 146944 bytes site/trunk/site-publish/running-the-samples.html | 129 + .../EclipseAppConfig.png | Bin 0 -> 32000 bytes .../EclipseAppConfig.png.jpeg | Bin 0 -> 8041 bytes .../tuscany.policy | 20 + ...nning-tuscany-with-java-2-security-enabled.html | 266 + site/trunk/site-publish/sandbox-for-website.html | 127 + ...box-implementation-of-sca-event-processing.html | 189 + .../sandbox-sca-java.data/TuscanyJAVASCA.pdf | Bin 0 -> 746515 bytes .../sandbox-sca-java.data/TuscanyJAVASCA.ppt | Bin 0 -> 1778688 bytes .../sandbox-sca-java.data/highleveloverview.PNG | Bin 0 -> 19699 bytes .../highleveloverview.PNG.jpeg | Bin 0 -> 6399 bytes site/trunk/site-publish/sandbox-sca-java.html | 118 + site/trunk/site-publish/sandbox-sdo-java.html | 483 ++ site/trunk/site-publish/sca-c-faq.html | 84 + site/trunk/site-publish/sca-cpp-bindings-rest.html | 160 + site/trunk/site-publish/sca-cpp-dependencies.html | 231 + site/trunk/site-publish/sca-cpp-developers.html | 78 + .../site-publish/sca-cpp-environment-settings.html | 143 + site/trunk/site-publish/sca-cpp-users.html | 117 + site/trunk/site-publish/sca-cpp.html | 133 + .../sca-developer-guide.data/component.png | Bin 0 -> 8000 bytes .../sca-developer-guide.data/component.png.jpeg | Bin 0 -> 3821 bytes .../sca-developer-guide.data/component.svg | 160 + site/trunk/site-publish/sca-developer-guide.html | 161 + ...wnloads-remove-after-upgrade-to-new-format.html | 491 ++ site/trunk/site-publish/sca-downloads.html | 489 ++ site/trunk/site-publish/sca-general-menu.html | 119 + site/trunk/site-publish/sca-get-involved.html | 109 + .../site-publish/sca-java-090-incubating.html | 167 + .../sca-java-091-incubating-release-summary.html | 132 + .../site-publish/sca-java-091-incubating.html | 180 + .../getting_started_099_06.pdf | Bin 0 -> 517995 bytes .../getting_started_Rest-099_07pdf.pdf | Bin 0 -> 579757 bytes .../getting_started_Rest_099_07.pdf | Bin 0 -> 579757 bytes .../sca-java-099-incubating-release-summary.html | 123 + .../site-publish/sca-java-099-incubating.html | 171 + .../getting-started-1.0.pdf | Bin 0 -> 580695 bytes .../sca-java-10-incubating-release-summary.html | 125 + .../trunk/site-publish/sca-java-10-incubating.html | 173 + .../sca-java-101-incubating-release-summary.html | 118 + .../sca-java-101-incubating-release.html | 132 + .../site-publish/sca-java-101-incubating.html | 166 + .../trunk/site-publish/sca-java-11-incubating.html | 212 + .../trunk/site-publish/sca-java-12-incubating.html | 227 + .../site-publish/sca-java-121-incubating.html | 227 + site/trunk/site-publish/sca-java-13.html | 217 + site/trunk/site-publish/sca-java-131.html | 217 + site/trunk/site-publish/sca-java-132.html | 217 + site/trunk/site-publish/sca-java-14.html | 217 + site/trunk/site-publish/sca-java-15.html | 213 + site/trunk/site-publish/sca-java-151.html | 217 + site/trunk/site-publish/sca-java-16.html | 217 + site/trunk/site-publish/sca-java-161.html | 217 + site/trunk/site-publish/sca-java-162.html | 217 + site/trunk/site-publish/sca-java-1x-releases.html | 320 ++ site/trunk/site-publish/sca-java-20-beta1.html | 215 + site/trunk/site-publish/sca-java-20-beta2.html | 215 + site/trunk/site-publish/sca-java-20-beta3.html | 225 + site/trunk/site-publish/sca-java-20-m1.html | 213 + site/trunk/site-publish/sca-java-20-m2.html | 213 + site/trunk/site-publish/sca-java-20-m3.html | 229 + site/trunk/site-publish/sca-java-20-m4.html | 229 + site/trunk/site-publish/sca-java-20-m5.html | 210 + site/trunk/site-publish/sca-java-20-m51.html | 215 + site/trunk/site-publish/sca-java-20.html | 225 + .../sca-java-2x-development-guide.html | 533 ++ .../sca-java-2x-previous-releases.html | 156 + .../getting-started-1.0.pdf | Bin 0 -> 580695 bytes .../getting_started_06.pdf | Bin 0 -> 436137 bytes .../sca-java-2x-releases.data/onlineStore.pdf | Bin 0 -> 436137 bytes site/trunk/site-publish/sca-java-2x-releases.html | 311 ++ .../distributed-abstract smallest.png | Bin 0 -> 19544 bytes .../distributed-abstract smallest.png.jpeg | Bin 0 -> 4046 bytes .../sca-java-2x.data/distributed-abstract.png | Bin 0 -> 39609 bytes .../sca-java-2x.data/distributed-abstract.png.jpeg | Bin 0 -> 4011 bytes .../getting_started_Rest_099_07.pdf | Bin 0 -> 579757 bytes .../sca-java-2x.data/javasca smaller.jpg | Bin 0 -> 37463 bytes .../sca-java-2x.data/javasca smaller.jpg.jpeg | Bin 0 -> 7272 bytes .../sca-java-2x.data/javascaSmall2.jpg | Bin 0 -> 33471 bytes .../sca-java-2x.data/javascaSmall2.jpg.jpeg | Bin 0 -> 7468 bytes .../site-publish/sca-java-2x.data/tuscanylogo.jpg | Bin 0 -> 5276 bytes .../sca-java-2x.data/tuscanylogo.jpg.jpeg | Bin 0 -> 1202 bytes site/trunk/site-publish/sca-java-2x.html | 112 + .../architectureOverview.doc | Bin 0 -> 26624 bytes .../architectureOverview.jpg | Bin 0 -> 89719 bytes .../architectureOverview.jpg.jpeg | Bin 0 -> 7577 bytes .../sca-java-architecture-guide.data/assembly.jpg | Bin 0 -> 105622 bytes .../assembly.jpg.jpeg | Bin 0 -> 6062 bytes .../sca-java-architecture-guide.data/bootstrap.jpg | Bin 0 -> 116890 bytes .../bootstrap.jpg.jpeg | Bin 0 -> 4085 bytes .../bootstrap_seq.jpg | Bin 0 -> 151327 bytes .../bootstrap_seq.jpg.jpeg | Bin 0 -> 3527 bytes .../contribution_overview.jpg | Bin 0 -> 69952 bytes .../contribution_overview.jpg.jpeg | Bin 0 -> 7748 bytes .../sca-java-architecture-guide.data/invokers.jpg | Bin 0 -> 73952 bytes .../invokers.jpg.jpeg | Bin 0 -> 5665 bytes .../runtime-model.jpg | Bin 0 -> 182545 bytes .../runtime-model.jpg.jpeg | Bin 0 -> 12289 bytes .../runtime-wire.jpg | Bin 0 -> 134978 bytes .../runtime-wire.jpg.jpeg | Bin 0 -> 4889 bytes .../tuscany_composite_hierarchy.jpg | Bin 0 -> 180212 bytes .../tuscany_composite_hierarchy.jpg.jpeg | Bin 0 -> 7505 bytes .../site-publish/sca-java-architecture-guide.html | 414 ++ .../TuscanyJAVASCAM2.pdf | Bin 0 -> 746515 bytes site/trunk/site-publish/sca-java-architecture.html | 145 + .../site-publish/sca-java-binding-endpoints.html | 199 + .../site-publish/sca-java-binding-jsonrpc.html | 77 + site/trunk/site-publish/sca-java-bindingajax.html | 245 + site/trunk/site-publish/sca-java-bindingatom.html | 589 +++ site/trunk/site-publish/sca-java-bindingcorba.html | 441 ++ site/trunk/site-publish/sca-java-bindingejb.html | 211 + .../trunk/site-publish/sca-java-bindingerlang.html | 494 ++ .../high_level_design.jpg | Bin 0 -> 24533 bytes .../high_level_design.jpg.jpeg | Bin 0 -> 5945 bytes .../scenario.jpg | Bin 0 -> 28129 bytes .../scenario.jpg.jpeg | Bin 0 -> 7623 bytes ...a-java-bindinghttp-security-policy-section.html | 131 + .../high_level_design.jpg | Bin 0 -> 24533 bytes .../high_level_design.jpg.jpeg | Bin 0 -> 5945 bytes .../scenario.jpg | Bin 0 -> 28129 bytes .../scenario.jpg.jpeg | Bin 0 -> 7623 bytes .../sca-java-bindinghttp-security-policy.html | 240 + .../sca-java-bindinghttp-security.html | 235 + site/trunk/site-publish/sca-java-bindinghttp.html | 338 ++ .../DataFormatScenarios-2-reference.png | Bin 0 -> 93000 bytes .../DataFormatScenarios-2-reference.png.jpeg | Bin 0 -> 9023 bytes .../DataFormatScenarios-2-service.png | Bin 0 -> 74720 bytes .../DataFormatScenarios-2-service.png.jpeg | Bin 0 -> 7064 bytes .../jmstextxml-invocation-chain.png | Bin 0 -> 34477 bytes .../jmstextxml-invocation-chain.png.jpeg | Bin 0 -> 5845 bytes .../sca-java-bindingjms.data/providers.png | Bin 0 -> 44912 bytes .../sca-java-bindingjms.data/providers.png.jpeg | Bin 0 -> 5695 bytes site/trunk/site-publish/sca-java-bindingjms.html | 769 +++ .../site-publish/sca-java-bindingjsonrpc.html | 343 ++ site/trunk/site-publish/sca-java-bindingrmi.html | 198 + site/trunk/site-publish/sca-java-bindingrss.html | 244 + site/trunk/site-publish/sca-java-bindingws.html | 249 + .../site-publish/sca-java-definitionsxml.html | 242 + .../site-publish/sca-java-developer-reference.html | 352 ++ .../sca-java-development-guide-osgi.html | 503 ++ .../site-publish/sca-java-development-guide.html | 588 +++ site/trunk/site-publish/sca-java-development.html | 337 ++ .../trunk/site-publish/sca-java-documentation.html | 112 + .../site-publish/sca-java-event-processing.html | 140 + .../ExtendingTuscany.ppt | Bin 0 -> 2330112 bytes .../sca-java-extension-developer-guide.html | 245 + .../ExtendingTuscany-V01.pdf | Bin 0 -> 328519 bytes .../ExtendingTuscany.pdf | Bin 0 -> 89344 bytes .../ExtendingTuscany.ppt | Bin 0 -> 2330112 bytes .../ExtendingTuscany1.pdf | Bin 0 -> 89344 bytes .../ExtendingTuscany1.ppt | Bin 0 -> 2330112 bytes .../sca-java-extension-development-guide.html | 422 ++ .../site-publish/sca-java-extension-guide.html | 404 ++ .../site-publish/sca-java-extension-modules.html | 404 ++ site/trunk/site-publish/sca-java-found-a-bug.html | 170 + site/trunk/site-publish/sca-java-get-involved.html | 243 + .../sca-java-get-started-with-coding.html | 202 + .../sca-java-getting-started-guides-1x.html | 199 + .../sca-java-getting-started-guides.html | 189 + site/trunk/site-publish/sca-java-hostembedded.html | 224 + site/trunk/site-publish/sca-java-hostgeronimo.html | 112 + site/trunk/site-publish/sca-java-hostweblogic.html | 115 + .../trunk/site-publish/sca-java-hostwebsphere.html | 112 + .../site-publish/sca-java-implementationbpel.html | 163 + .../site-publish/sca-java-implementationdas.html | 112 + .../site-publish/sca-java-implementationjava.html | 192 + .../site-publish/sca-java-implementationjpa.html | 251 + .../site-publish/sca-java-implementationosgi.html | 219 + .../sca-java-implementationresource.html | 161 + .../sca-java-implementationscript.html | 251 + .../sca-java-implementationspring.html | 473 ++ .../site-publish/sca-java-implementationweb.html | 380 ++ .../sca-java-implementationwidget.html | 188 + .../sca-java-implementationxquery.html | 320 ++ .../trunk/site-publish/sca-java-incubating-m1.html | 163 + site/trunk/site-publish/sca-java-incubator-m2.html | 232 + .../trunk/site-publish/sca-java-interfacewsdl.html | 328 ++ .../sca-java-modules-dependencies.html | 294 ++ site/trunk/site-publish/sca-java-news-page.html | 151 + site/trunk/site-publish/sca-java-next-release.html | 317 ++ .../site-publish/sca-java-previous-releases.html | 173 + .../sca-java-releases.data/getting-started-1.0.pdf | Bin 0 -> 580695 bytes .../sca-java-releases.data/getting_started_06.pdf | Bin 0 -> 436137 bytes .../sca-java-releases.data/onlineStore.pdf | Bin 0 -> 436137 bytes site/trunk/site-publish/sca-java-releases.html | 209 + site/trunk/site-publish/sca-java-roadmap.html | 266 + site/trunk/site-publish/sca-java-sandbox.html | 78 + .../site-publish/sca-java-subproject-menu.html | 139 + .../sca-java-subproject.data/tuscanylogo.jpg | Bin 0 -> 5276 bytes .../sca-java-subproject.data/tuscanylogo.jpg.jpeg | Bin 0 -> 1202 bytes site/trunk/site-publish/sca-java-subproject.html | 130 + site/trunk/site-publish/sca-java-tools-guides.html | 176 + .../site-publish/sca-java-travel-sample-10.html | 199 + .../sca-java-travel-sample-1x-releases.html | 238 + site/trunk/site-publish/sca-java-tutorial.html | 176 + .../site-publish/sca-java-ug-introduction.html | 125 + ...obtaining-tuscanys-java-sca-implementation.html | 137 + .../site-publish/sca-java-user-documenations.html | 118 + .../sca-java-user-guide-introduction.html | 125 + .../sca-java-user-guide.data/CalculatorBlocks.jpg | Bin 0 -> 135002 bytes .../CalculatorBlocks.jpg.jpeg | Bin 0 -> 6009 bytes .../sca-java-user-guide.data/CalculatorBlocks2.jpg | Bin 0 -> 10087 bytes .../CalculatorBlocks2.jpg.jpeg | Bin 0 -> 3603 bytes .../sca-java-user-guide.data/calculator.png | Bin 0 -> 20552 bytes .../sca-java-user-guide.data/calculator.png.jpeg | Bin 0 -> 6794 bytes .../sca-java-user-guide.data/calculator1.png | Bin 0 -> 22520 bytes .../sca-java-user-guide.data/calculator1.png.jpeg | Bin 0 -> 7142 bytes .../sca-java-user-guide.data/calculator2.png | Bin 0 -> 26092 bytes .../sca-java-user-guide.data/calculator2.png.jpeg | Bin 0 -> 6998 bytes .../sca-java-user-guide.data/calculator3.png | Bin 0 -> 43375 bytes .../sca-java-user-guide.data/calculator3.png.jpeg | Bin 0 -> 6422 bytes .../distributed-abstract.png | Bin 0 -> 21614 bytes .../distributed-abstract.png.jpeg | Bin 0 -> 4250 bytes .../sca-java-user-guide.data/java_imp.jpg | Bin 0 -> 18462 bytes .../sca-java-user-guide.data/java_imp.jpg.jpeg | Bin 0 -> 4113 bytes site/trunk/site-publish/sca-java-user-guide.html | 239 + .../site-publish/sca-java-user-reference.html | 143 + .../site-publish/sca-java-web-applications.html | 248 + site/trunk/site-publish/sca-java-whats-new.html | 67 + site/trunk/site-publish/sca-java-wish-list.html | 173 + .../site-publish/sca-java-work-in-progress.html | 112 + .../distributed-abstract smallest.png | Bin 0 -> 19544 bytes .../distributed-abstract smallest.png.jpeg | Bin 0 -> 4046 bytes .../sca-java.data/distributed-abstract.png | Bin 0 -> 39609 bytes .../sca-java.data/distributed-abstract.png.jpeg | Bin 0 -> 3872 bytes .../sca-java.data/getting_started_Rest_099_07.pdf | Bin 0 -> 579757 bytes .../site-publish/sca-java.data/javasca smaller.jpg | Bin 0 -> 37463 bytes .../sca-java.data/javasca smaller.jpg.jpeg | Bin 0 -> 7272 bytes .../site-publish/sca-java.data/javascaSmall2.jpg | Bin 0 -> 33471 bytes .../sca-java.data/javascaSmall2.jpg.jpeg | Bin 0 -> 7468 bytes .../site-publish/sca-java.data/tuscanylogo.jpg | Bin 0 -> 5276 bytes .../sca-java.data/tuscanylogo.jpg.jpeg | Bin 0 -> 1202 bytes site/trunk/site-publish/sca-java.html | 155 + site/trunk/site-publish/sca-jumpstart.html | 118 + site/trunk/site-publish/sca-menu.html | 81 + .../sca-native-architecture-guide.html | 166 + .../site-publish/sca-native-developer-guide.html | 328 ++ .../sca-native-documentation-menu.html | 143 + site/trunk/site-publish/sca-native-faq.html | 118 + .../trunk/site-publish/sca-native-found-a-bug.html | 155 + .../site-publish/sca-native-get-involved.html | 228 + .../site-publish/sca-native-incubator-m2.html | 166 + .../site-publish/sca-native-incubator-m3.html | 164 + .../site-publish/sca-native-previous-releases.html | 124 + site/trunk/site-publish/sca-native-releases.html | 198 + .../site-publish/sca-native-subproject-menu.html | 124 + site/trunk/site-publish/sca-native-subproject.html | 119 + site/trunk/site-publish/sca-native-user-guide.html | 78 + .../site-publish/sca-native-work-in-progress.html | 112 + site/trunk/site-publish/sca-native.html | 141 + site/trunk/site-publish/sca-overview-sandbox.html | 130 + .../sca-overview.data/Tuscany-Overview-0407.pdf | Bin 0 -> 213660 bytes .../getting_started_Rest_099_07.pdf | Bin 0 -> 579757 bytes site/trunk/site-publish/sca-overview.html | 173 + site/trunk/site-publish/sca-releases.html | 102 + site/trunk/site-publish/sca-subproject-menu.html | 81 + site/trunk/site-publish/sca-videos.html | 211 + .../sca.data/SCA_AssemblyModel_V100???.pdf | Bin 0 -> 891648 bytes ...l_V100\344\270\255\346\226\207\347\211\210.pdf" | Bin 0 -> 891648 bytes .../sca.data/SCA_JavaAnnotationsAndAPIs???.pdf | Bin 0 -> 1282812 bytes ...ndAPIs\344\270\255\346\226\207\347\211\210.pdf" | Bin 0 -> 1282812 bytes .../SCA_JavaComponentImplementation_V100???.pdf | Bin 0 -> 635163 bytes ...n_V100\344\270\255\346\226\207\347\211\210.pdf" | Bin 0 -> 635163 bytes site/trunk/site-publish/sca.html | 119 + site/trunk/site-publish/scajava-tutorial.html | 80 + .../site-publish/scajavabusinessexceptions.html | 141 + site/trunk/site-publish/sdo-10-incubating.html | 131 + .../site-publish/sdo-c-documentation-menu.html | 136 + site/trunk/site-publish/sdo-c-get-involved.html | 118 + site/trunk/site-publish/sdo-c-releases.html | 134 + site/trunk/site-publish/sdo-c-subproject-menu.html | 125 + .../site-publish/sdo-cpp-documentation-menu.html | 131 + site/trunk/site-publish/sdo-cpp-faq.html | 158 + site/trunk/site-publish/sdo-cpp-found-a-bug.html | 156 + site/trunk/site-publish/sdo-cpp-get-involved.html | 229 + site/trunk/site-publish/sdo-cpp.html | 137 + site/trunk/site-publish/sdo-cts-overview.html | 163 + site/trunk/site-publish/sdo-cts.html | 246 + site/trunk/site-publish/sdo-das-menu.html | 141 + site/trunk/site-publish/sdo-downloads.html | 735 +++ site/trunk/site-publish/sdo-general-menu.html | 117 + site/trunk/site-publish/sdo-general.html | 83 + .../site-publish/sdo-java-10-incubating-beta1.html | 196 + .../sdo-java-10-incubating-release-summary.html | 122 + .../trunk/site-publish/sdo-java-10-incubating.html | 168 + .../sdo-java-11-incubating-release-summary.html | 115 + .../trunk/site-publish/sdo-java-11-incubating.html | 173 + .../site-publish/sdo-java-111-release-summary.html | 114 + site/trunk/site-publish/sdo-java-111.html | 171 + .../site-publish/sdo-java-architecture-guide.html | 112 + .../site-publish/sdo-java-documentation-menu.html | 143 + site/trunk/site-publish/sdo-java-documents.html | 162 + site/trunk/site-publish/sdo-java-download.html | 419 ++ site/trunk/site-publish/sdo-java-found-a-bug.html | 156 + site/trunk/site-publish/sdo-java-get-involved.html | 160 + .../trunk/site-publish/sdo-java-incubating-m1.html | 166 + .../trunk/site-publish/sdo-java-incubating-m2.html | 190 + .../site-publish/sdo-java-issue-tracking.html | 112 + site/trunk/site-publish/sdo-java-m3.html | 453 ++ site/trunk/site-publish/sdo-java-news.html | 133 + .../site-publish/sdo-java-previous-releases.html | 140 + site/trunk/site-publish/sdo-java-releases.html | 219 + site/trunk/site-publish/sdo-java-source-code.html | 118 + .../site-publish/sdo-java-subproject-menu.html | 125 + site/trunk/site-publish/sdo-java-user-guide.html | 171 + site/trunk/site-publish/sdo-java-whats-new.html | 118 + .../site-publish/sdo-java-whats-to-be-done.html | 128 + site/trunk/site-publish/sdo-java.data/do_uml.png | Bin 0 -> 8727 bytes .../site-publish/sdo-java.data/do_uml.png.jpeg | Bin 0 -> 4632 bytes site/trunk/site-publish/sdo-java.data/meta.png | Bin 0 -> 4912 bytes .../trunk/site-publish/sdo-java.data/meta.png.jpeg | Bin 0 -> 3136 bytes site/trunk/site-publish/sdo-java.data/meta2.png | Bin 0 -> 7348 bytes .../site-publish/sdo-java.data/meta2.png.jpeg | Bin 0 -> 5222 bytes site/trunk/site-publish/sdo-java.html | 147 + site/trunk/site-publish/sdo-overview-menu.html | 211 + site/trunk/site-publish/sdo-overview-sandbox.html | 122 + .../site-publish/sdo-overview.data/sdo_soa_sm.jpg | Bin 0 -> 14852 bytes .../sdo-overview.data/sdo_soa_sm.jpg.jpeg | Bin 0 -> 4686 bytes .../sdo-overview.data/sdocontext_sm.jpg | Bin 0 -> 29018 bytes .../sdo-overview.data/sdocontext_sm.jpg.jpeg | Bin 0 -> 7754 bytes site/trunk/site-publish/sdo-overview.html | 178 + site/trunk/site-publish/sdo-php.html | 113 + .../sdo-project-code-structure.data/do_uml.png | Bin 0 -> 15904 bytes .../do_uml.png.jpeg | Bin 0 -> 3464 bytes .../sdo-project-code-structure.data/meta.png | Bin 0 -> 4912 bytes .../sdo-project-code-structure.data/meta.png.jpeg | Bin 0 -> 3136 bytes .../sdo-project-code-structure.data/meta2.png | Bin 0 -> 7348 bytes .../sdo-project-code-structure.data/meta2.png.jpeg | Bin 0 -> 5222 bytes .../site-publish/sdo-project-code-structure.html | 402 ++ site/trunk/site-publish/sdo-releases.html | 78 + site/trunk/site-publish/sdo.html | 83 + .../VideoIcon.jpg | Bin 0 -> 9296 bytes .../VideoIcon.jpg.jpeg | Bin 0 -> 5949 bytes .../apache-feather.gif | Bin 0 -> 3230 bytes .../apache-feather.gif.jpeg | Bin 0 -> 3559 bytes .../security-aware-programming-in-tuscany.html | 247 + .../set-up-sdo-development-environment.html | 194 + .../setting-up-an-sca-developer-environment.html | 112 + site/trunk/site-publish/setting-up-ssh.html | 204 + site/trunk/site-publish/simplemenu.html | 141 + site/trunk/site-publish/spring.html | 86 + .../calculator-standalone.png | Bin 0 -> 25222 bytes .../calculator-standalone.png.jpeg | Bin 0 -> 6905 bytes .../single-node-abstract.png | Bin 0 -> 5511 bytes .../single-node-abstract.png.jpeg | Bin 0 -> 2011 bytes site/trunk/site-publish/standalone-sca-domain.html | 303 ++ site/trunk/site-publish/starting-with-das.html | 219 + site/trunk/site-publish/subproject-menus.html | 112 + site/trunk/site-publish/subprojects.html | 115 + site/trunk/site-publish/survey.html | 156 + site/trunk/site-publish/surveythanks.html | 154 + site/trunk/site-publish/technology-release.html | 151 + .../site-publish/temp-technology-release.html | 134 + site/trunk/site-publish/test-home-2.html | 191 + site/trunk/site-publish/test-home.html | 216 + site/trunk/site-publish/testhome2table.html | 127 + site/trunk/site-publish/to-be-deleted.html | 112 + ...-install-the-latest-tuscany-eclipse-plugin.html | 129 + .../install_update.jpg | Bin 0 -> 36200 bytes .../install_update.jpg.jpeg | Bin 0 -> 7855 bytes .../install_update_feature_license.jpg | Bin 0 -> 61939 bytes .../install_update_feature_license.jpg.jpeg | Bin 0 -> 10388 bytes .../install_update_feature_verification.jpg | Bin 0 -> 34245 bytes .../install_update_feature_verification.jpg.jpeg | Bin 0 -> 6874 bytes .../install_update_finish.jpg | Bin 0 -> 45162 bytes .../install_update_finish.jpg.jpeg | Bin 0 -> 8880 bytes .../install_update_installation.jpg | Bin 0 -> 43354 bytes .../install_update_installation.jpg.jpeg | Bin 0 -> 8488 bytes .../install_update_new_site.jpg | Bin 0 -> 14134 bytes .../install_update_new_site.jpg.jpeg | Bin 0 -> 6308 bytes .../install_update_restart_eclipse.jpg | Bin 0 -> 10948 bytes .../install_update_restart_eclipse.jpg.jpeg | Bin 0 -> 3933 bytes .../install_update_search_results.jpg | Bin 0 -> 35511 bytes .../install_update_search_results.jpg.jpeg | Bin 0 -> 7292 bytes .../install_update_sites.jpg | Bin 0 -> 43280 bytes .../install_update_sites.jpg.jpeg | Bin 0 -> 8600 bytes .../tools-install-tuscany-eclipse-plugins-11.html | 143 + .../tools-install-tuscany-eclipse-plugins-12.html | 128 + ...on-intents-and-transaction-manager-support.html | 264 + site/trunk/site-publish/trash.html | 112 + site/trunk/site-publish/tuscany-anniversary.html | 177 + .../tuscany-architecture-guide.data/bootstrap.jpg | Bin 0 -> 79170 bytes .../bootstrap.jpg.jpeg | Bin 0 -> 4106 bytes .../bootstrap_seq.jpg | Bin 0 -> 151327 bytes .../bootstrap_seq.jpg.jpeg | Bin 0 -> 3527 bytes .../tuscany-architecture-guide.data/component.jpg | Bin 0 -> 133816 bytes .../component.jpg.jpeg | Bin 0 -> 9028 bytes .../tuscany-architecture-guide.data/model.jpg | Bin 0 -> 76252 bytes .../tuscany-architecture-guide.data/model.jpg.jpeg | Bin 0 -> 8931 bytes .../tuscany_composite_hierarchy.jpg | Bin 0 -> 180212 bytes .../tuscany_composite_hierarchy.jpg.jpeg | Bin 0 -> 7505 bytes .../tuscany_layers.jpg | Bin 0 -> 125516 bytes .../tuscany_layers.jpg.jpeg | Bin 0 -> 10073 bytes .../site-publish/tuscany-architecture-guide.html | 478 ++ .../S313731-DataBinding.pdf | Bin 0 -> 835833 bytes .../tuscany-in-action.jpg | Bin 0 -> 21356 bytes .../tuscany-in-action.jpg.jpeg | Bin 0 -> 6801 bytes .../site-publish/tuscany-books-and-articles.html | 199 + .../WebsiteStructure.JPG | Bin 0 -> 34543 bytes .../WebsiteStructure.JPG.jpeg | Bin 0 -> 4141 bytes .../tuscany-cwiki-development-guideline.html | 187 + .../WebsiteStructure.JPG | Bin 0 -> 34543 bytes .../WebsiteStructure.JPG.jpeg | Bin 0 -> 4141 bytes .../tuscany-cwiki-website-structure.html | 227 + site/trunk/site-publish/tuscany-das-faq.html | 127 + site/trunk/site-publish/tuscany-dashboard.html | 176 + .../databinding_components.jpg | Bin 0 -> 116358 bytes .../databinding_components.jpg.jpeg | Bin 0 -> 6651 bytes .../databinding_graph.jpg | Bin 0 -> 107435 bytes .../databinding_graph.jpg.jpeg | Bin 0 -> 7491 bytes .../databinding_operation.jpg | Bin 0 -> 214352 bytes .../databinding_operation.jpg.jpeg | Bin 0 -> 9230 bytes .../databinding_property.jpg | Bin 0 -> 92834 bytes .../databinding_property.jpg.jpeg | Bin 0 -> 4151 bytes .../databinding_reference.jpg | Bin 0 -> 185938 bytes .../databinding_reference.jpg.jpeg | Bin 0 -> 5388 bytes .../databinding_scenario.jpg | Bin 0 -> 77629 bytes .../databinding_scenario.jpg.jpeg | Bin 0 -> 3783 bytes .../databinding_service.jpg | Bin 0 -> 183054 bytes .../databinding_service.jpg.jpeg | Bin 0 -> 5203 bytes .../wrapper_transformation.jpg | Bin 0 -> 198386 bytes .../wrapper_transformation.jpg.jpeg | Bin 0 -> 8433 bytes .../site-publish/tuscany-databinding-guide.html | 754 +++ .../tuscany-downloads-documentations.html | 264 + site/trunk/site-publish/tuscany-downloads.html | 132 + .../site-publish/tuscany-downloads2-java-sca.html | 168 + .../site-publish/tuscany-downloads2-java-sdo.html | 158 + site/trunk/site-publish/tuscany-downloads2.html | 133 + .../site-publish/tuscany-maven-archetypes.html | 323 ++ site/trunk/site-publish/tuscany-portal.html | 285 ++ .../site-publish/tuscany-sca-databinding-faq.html | 130 + site/trunk/site-publish/tuscany-sca-faq.html | 136 + .../tuscany-sca-java-developer-guide.html | 124 + ...tuscany-sca-java-extension-developer-guide.html | 104 + site/trunk/site-publish/tuscany-sca-java-faq.html | 958 ++++ ...cany-sca-web-application-integration-story.html | 230 + site/trunk/site-publish/tuscany-sdo-cpp-faq.html | 105 + site/trunk/site-publish/tuscany-sdo-faq.html | 146 + site/trunk/site-publish/tuscany-sdo-java-faq.html | 361 ++ site/trunk/site-publish/tuscany-subprojects.html | 160 + .../site-publish/tuscany-tomcat-distribution.html | 236 + .../site-publish/tuscany-war-dirstribution.html | 214 + .../site-publish/tuscany-war-distribution.html | 214 + .../tuscany-website-development-guideline.html | 88 + site/trunk/site-publish/tuscanydownloads2.html | 116 + .../site-publish/tuscanylogos.data/Balloons150.gif | Bin 0 -> 4571 bytes .../tuscanylogos.data/Balloons150.gif.jpeg | Bin 0 -> 4451 bytes .../site-publish/tuscanylogos.data/Balloons150.jpg | Bin 0 -> 6963 bytes .../tuscanylogos.data/Balloons150.jpg.jpeg | Bin 0 -> 3087 bytes .../site-publish/tuscanylogos.data/Balloons300.gif | Bin 0 -> 10102 bytes .../tuscanylogos.data/Balloons300.gif.jpeg | Bin 0 -> 5129 bytes .../tuscanylogos.data/Bell_Tower_Image.jpg | Bin 0 -> 2262 bytes .../tuscanylogos.data/Bell_Tower_Image.jpg.jpeg | Bin 0 -> 2625 bytes .../site-publish/tuscanylogos.data/Cake150.gif | Bin 0 -> 5274 bytes .../tuscanylogos.data/Cake150.gif.jpeg | Bin 0 -> 4751 bytes .../site-publish/tuscanylogos.data/Cake150.jpg | Bin 0 -> 8287 bytes .../tuscanylogos.data/Cake150.jpg.jpeg | Bin 0 -> 3451 bytes .../site-publish/tuscanylogos.data/Cake300.gif | Bin 0 -> 11264 bytes .../tuscanylogos.data/Cake300.gif.jpeg | Bin 0 -> 6068 bytes .../tuscanylogos.data/HappyBirthdayDog150.gif | Bin 0 -> 13230 bytes .../tuscanylogos.data/HappyBirthdayDog150.gif.jpeg | Bin 0 -> 3169 bytes .../tuscanylogos.data/HappyBirthdayDog150.jpg | Bin 0 -> 23560 bytes .../tuscanylogos.data/HappyBirthdayDog150.jpg.jpeg | Bin 0 -> 8646 bytes .../tuscanylogos.data/HappyBirthdayDog300.gif | Bin 0 -> 43317 bytes .../tuscanylogos.data/HappyBirthdayDog300.gif.jpeg | Bin 0 -> 14564 bytes .../site-publish/tuscanylogos.data/Hat150.gif | Bin 0 -> 4153 bytes .../site-publish/tuscanylogos.data/Hat150.gif.jpeg | Bin 0 -> 4327 bytes .../site-publish/tuscanylogos.data/Hat150.jpg | Bin 0 -> 7043 bytes .../site-publish/tuscanylogos.data/Hat150.jpg.jpeg | Bin 0 -> 3055 bytes .../site-publish/tuscanylogos.data/Hat300.gif | Bin 0 -> 10283 bytes .../site-publish/tuscanylogos.data/Hat300.gif.jpeg | Bin 0 -> 5466 bytes .../site-publish/tuscanylogos.data/Present150.gif | Bin 0 -> 4949 bytes .../tuscanylogos.data/Present150.gif.jpeg | Bin 0 -> 4485 bytes .../site-publish/tuscanylogos.data/Present150.jpg | Bin 0 -> 7583 bytes .../tuscanylogos.data/Present150.jpg.jpeg | Bin 0 -> 3225 bytes .../site-publish/tuscanylogos.data/Present300.gif | Bin 0 -> 11108 bytes .../tuscanylogos.data/Present300.gif.jpeg | Bin 0 -> 5679 bytes .../Road-with-Cypress-Tree-Sun-and-Moon.jpg | Bin 0 -> 44707 bytes .../Road-with-Cypress-Tree-Sun-and-Moon.jpg.jpeg | Bin 0 -> 9870 bytes .../tuscanylogos.data/TuscanyLogo100.jpg | Bin 0 -> 5257 bytes .../tuscanylogos.data/TuscanyLogo100.jpg.jpeg | Bin 0 -> 2127 bytes .../tuscanylogos.data/TuscanyLogo200.jpg | Bin 0 -> 12028 bytes .../tuscanylogos.data/TuscanyLogo200.jpg.jpeg | Bin 0 -> 4230 bytes .../tuscanylogos.data/TuscanyLogo400.jpg | Bin 0 -> 30892 bytes .../tuscanylogos.data/TuscanyLogo400.jpg.jpeg | Bin 0 -> 4354 bytes .../tuscanylogos.data/TuscanyLogo800.jpg | Bin 0 -> 80549 bytes .../tuscanylogos.data/TuscanyLogo800.jpg.jpeg | Bin 0 -> 4524 bytes .../tuscanylogos.data/TuscanyLogoBalloons.jpg | Bin 0 -> 9312 bytes .../tuscanylogos.data/TuscanyLogoBalloons.jpg.jpeg | Bin 0 -> 4621 bytes .../tuscanylogos.data/TuscanyLogoCake.jpg | Bin 0 -> 10552 bytes .../tuscanylogos.data/TuscanyLogoCake.jpg.jpeg | Bin 0 -> 4763 bytes .../tuscanylogos.data/TuscanyLogoHat.jpg | Bin 0 -> 9110 bytes .../tuscanylogos.data/TuscanyLogoHat.jpg.jpeg | Bin 0 -> 4510 bytes .../tuscanylogos.data/TuscanyLogoNEW.jpg | Bin 0 -> 61910 bytes .../tuscanylogos.data/TuscanyLogoNEW.jpg.jpeg | Bin 0 -> 4070 bytes .../tuscanylogos.data/TuscanyLogoOLD.png | Bin 0 -> 22285 bytes .../tuscanylogos.data/TuscanyLogoOLD.png.jpeg | Bin 0 -> 5745 bytes .../tuscanylogos.data/TuscanyLogoPresent.jpg | Bin 0 -> 11212 bytes .../tuscanylogos.data/TuscanyLogoPresent.jpg.jpeg | Bin 0 -> 4930 bytes .../tuscanylogos.data/TuscanyLogoSmall.jpg | Bin 0 -> 15259 bytes .../tuscanylogos.data/TuscanyLogoSmall.jpg.jpeg | Bin 0 -> 3803 bytes .../tuscanylogos.data/TuscanyTower.jpg | Bin 0 -> 25806 bytes .../tuscanylogos.data/TuscanyTower.jpg.jpeg | Bin 0 -> 2800 bytes site/trunk/site-publish/tuscanylogos.html | 138 + ...scanyjavadas-java-overviewimproved-logging.html | 183 + site/trunk/site-publish/user-guide.html | 151 + site/trunk/site-publish/using-sdo-java.html | 147 + site/trunk/site-publish/web-sample.html | 204 + site/trunk/site-publish/whats-new-in-das-java.html | 137 + site/trunk/site-publish/whats-new-in-das.html | 103 + site/trunk/site-publish/whats-new-sca-java.html | 117 + site/trunk/site-publish/whats-new.html | 78 + .../Getting Involved In Apache Projects.pdf | Bin 0 -> 85714 bytes .../Getting Involved In Apache Projects.ppt | Bin 0 -> 114688 bytes .../Learning Open Source.pdf | Bin 0 -> 401083 bytes .../Working With Apache Tuscany-workshop.pdf | Bin 0 -> 1686068 bytes .../Working With Apache Tuscany-workshop.ppt | Bin 0 -> 1681408 bytes .../trunk/site-publish/working-in-open-source.html | 186 + site/trunk/site-publish/workingwithbasiccrud.html | 153 + .../site-publish/workingwithcolumnconverters.html | 231 + .../site-publish/workingwithcompoundkeys.html | 145 + .../trunk/site-publish/workingwithconventions.html | 138 + .../workingwithgenerateddatabasekeys.html | 149 + .../trunk/site-publish/workingwithnamemapping.html | 147 + .../workingwithoptimisticconcurrencycontrol.html | 149 + site/trunk/site-publish/workingwithpaging.html | 166 + .../site-publish/workingwithrelationships.html | 149 + .../site-publish/workingwithstaticdataobjects.html | 169 + .../site-publish/workingwithstoredprocedures.html | 150 + .../site-publish/workingwithtransactions.html | 153 + .../trunk/site-publish/writeoperationordering.html | 121 + site/trunk/site-publish/xquery-java-das.html | 100 + 2138 files changed, 153760 insertions(+) create mode 100644 site/trunk/site-publish/2.html create mode 100644 site/trunk/site-publish/2007/02/07/news.html create mode 100644 site/trunk/site-publish/2008/11/11/menuall.html create mode 100644 site/trunk/site-publish/adding-the-spring-component-type.html create mode 100644 site/trunk/site-publish/adding-the-spring-implementation-type.html create mode 100644 site/trunk/site-publish/all.html create mode 100644 site/trunk/site-publish/archetype-catalog.xml create mode 100644 site/trunk/site-publish/archetypes/archetype-catalog.xml create mode 100644 site/trunk/site-publish/architecture-guide.html create mode 100644 site/trunk/site-publish/assembly-model-for-event-processing.data/Component_Diagram.jpg create mode 100644 site/trunk/site-publish/assembly-model-for-event-processing.data/Component_Diagram.jpg.jpeg create mode 100644 site/trunk/site-publish/assembly-model-for-event-processing.data/Producer_linked_to_Consumer.jpg create mode 100644 site/trunk/site-publish/assembly-model-for-event-processing.data/Producer_linked_to_Consumer.jpg.jpeg create mode 100644 site/trunk/site-publish/assembly-model-for-event-processing.html create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_Templates.zip create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v1.xml create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v2.zip create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v3.zip create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/Tuscany_template_2007_5_25_v1.zip create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-24.css create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-24.zip create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-25.zip create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/notep_16.gif create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/notep_16.gif.jpeg create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/notep_16_2007-05-24.gif create mode 100644 site/trunk/site-publish/autoexport-plugin-template.data/notep_16_2007-05-24.gif.jpeg create mode 100644 site/trunk/site-publish/autoexport-plugin-template.html create mode 100644 site/trunk/site-publish/binding-ws.html create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project_lib.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project_lib.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_User_Lib.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_User_Lib.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/Tuscany_User_Lib.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/Tuscany_User_Lib.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feed.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feed.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feeds_page.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feeds_page.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_eclipse_console.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_eclipse_console.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_proj_dlg.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_proj_dlg.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/class_btn.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/class_btn.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/eclipse_console.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/eclipse_console.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/first_composite.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/first_composite.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_license.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_license.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_verification.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_verification.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_finish.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_finish.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_installation.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_installation.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_new_site.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_new_site.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_restart_eclipse.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_restart_eclipse.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_search_results.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_search_results.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_sites.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_sites.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/interface_btn.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/interface_btn.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_btn.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_btn.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_dlg.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_dlg.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_folder.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_folder.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_dlg.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_dlg.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_folder.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_folder.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_lib.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_lib.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/project_layout.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/project_layout.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_1.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_1.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_2.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_2.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_3.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_3.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_1.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_1.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_2.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_2.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.jpg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.jpg.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.png create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.png.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project.JPG create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project.JPG.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_layout.JPG create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_layout.JPG.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_name.JPG create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_name.JPG.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_tuscany_library.JPG create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_tuscany_library.JPG.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_package.JPG create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_package.JPG.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_1.JPG create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_1.JPG.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_2.JPG create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_2.JPG.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_3.JPG create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_3.JPG.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.JPG create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.JPG.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.PNG create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.PNG.jpeg create mode 100644 site/trunk/site-publish/build-your-first-web-services-with-tuscany.html create mode 100644 site/trunk/site-publish/build-your-light-tuscany-distribution.html create mode 100644 site/trunk/site-publish/build-your-own-tuscany-distribution.html create mode 100644 site/trunk/site-publish/build-your-own-tuscany-sca-java-distribution.html create mode 100644 site/trunk/site-publish/building-an-application.data/Legacy.App.As.Tuscany.Service.ppt create mode 100644 site/trunk/site-publish/building-an-application.html create mode 100644 site/trunk/site-publish/building-from-distro.html create mode 100644 site/trunk/site-publish/building-from-svn.html create mode 100644 site/trunk/site-publish/building-sca-for-java.html create mode 100644 site/trunk/site-publish/building-your-own.html create mode 100644 site/trunk/site-publish/businessexceptions.data/StockExceptionTest.wsdl create mode 100644 site/trunk/site-publish/businessexceptions.data/jaxws.wsimport.zip create mode 100644 site/trunk/site-publish/businessexceptions.html create mode 100644 site/trunk/site-publish/c-sdo-menu.html create mode 100644 site/trunk/site-publish/changesummaryprocessing.html create mode 100644 site/trunk/site-publish/chinese-portal.html create mode 100644 site/trunk/site-publish/column1.html create mode 100644 site/trunk/site-publish/column2.html create mode 100644 site/trunk/site-publish/column3.html create mode 100644 site/trunk/site-publish/committers.html create mode 100644 site/trunk/site-publish/community-menu.html create mode 100644 site/trunk/site-publish/community.data/brazil.jpg create mode 100644 site/trunk/site-publish/community.data/brazil.jpg.jpeg create mode 100644 site/trunk/site-publish/community.data/chinese.jpg create mode 100644 site/trunk/site-publish/community.data/chinese.jpg.jpeg create mode 100644 site/trunk/site-publish/community.html create mode 100644 site/trunk/site-publish/componentizing-our-runtime.data/Architecture create mode 100644 site/trunk/site-publish/componentizing-our-runtime.data/comp-architecture.jpg create mode 100644 site/trunk/site-publish/componentizing-our-runtime.data/comp-architecture.jpg.jpeg create mode 100644 site/trunk/site-publish/componentizing-our-runtime.data/metadata-usage.jpg create mode 100644 site/trunk/site-publish/componentizing-our-runtime.data/metadata-usage.jpg.jpeg create mode 100644 site/trunk/site-publish/componentizing-our-runtime.html create mode 100644 site/trunk/site-publish/composing-components-into-composites.html create mode 100644 site/trunk/site-publish/concept-conventionoverconfiguration.html create mode 100644 site/trunk/site-publish/configurable-database-generated-keys-support.html create mode 100644 site/trunk/site-publish/connection-support-for-j2se-environment.html create mode 100644 site/trunk/site-publish/contributing-to-the-sdo-cts.html create mode 100644 site/trunk/site-publish/conventionoverconfiguration.html create mode 100644 site/trunk/site-publish/create-signing-key.html create mode 100644 site/trunk/site-publish/das-c-architecture-guide.data/das graph as I suppose it shoud be.JPG create mode 100644 site/trunk/site-publish/das-c-architecture-guide.data/das graph as I suppose it shoud be.JPG.jpeg create mode 100644 site/trunk/site-publish/das-c-architecture-guide.data/das_graph.JPG create mode 100644 site/trunk/site-publish/das-c-architecture-guide.data/das_graph.JPG.jpeg create mode 100644 site/trunk/site-publish/das-c-architecture-guide.html create mode 100644 site/trunk/site-publish/das-c-developer-guide.html create mode 100644 site/trunk/site-publish/das-c-documentation-menu.html create mode 100644 site/trunk/site-publish/das-c-found-a-bug.html create mode 100644 site/trunk/site-publish/das-c-get-involved.html create mode 100644 site/trunk/site-publish/das-c-releases.html create mode 100644 site/trunk/site-publish/das-c-subproject-menu.html create mode 100644 site/trunk/site-publish/das-c.data/das graph as I suppose it shoud be.JPG create mode 100644 site/trunk/site-publish/das-c.data/das graph as I suppose it shoud be.JPG.jpeg create mode 100644 site/trunk/site-publish/das-c.data/das_graph.JPG create mode 100644 site/trunk/site-publish/das-c.data/das_graph.JPG.jpeg create mode 100644 site/trunk/site-publish/das-c.html create mode 100644 site/trunk/site-publish/das-cplus-menu.html create mode 100644 site/trunk/site-publish/das-documentation-menu.html create mode 100644 site/trunk/site-publish/das-downloads.html create mode 100644 site/trunk/site-publish/das-faq.html create mode 100644 site/trunk/site-publish/das-general-menu.html create mode 100644 site/trunk/site-publish/das-java-beta1.html create mode 100644 site/trunk/site-publish/das-java-beta2.html create mode 100644 site/trunk/site-publish/das-java-developer-guide.data/das_class_diagram.jpg create mode 100644 site/trunk/site-publish/das-java-developer-guide.data/das_class_diagram.jpg.jpeg create mode 100644 site/trunk/site-publish/das-java-developer-guide.html create mode 100644 site/trunk/site-publish/das-java-documentation-menu.html create mode 100644 site/trunk/site-publish/das-java-faq.html create mode 100644 site/trunk/site-publish/das-java-found-a-bug.html create mode 100644 site/trunk/site-publish/das-java-get-involved.html create mode 100644 site/trunk/site-publish/das-java-incubating-m1.html create mode 100644 site/trunk/site-publish/das-java-incubator-m2.html create mode 100644 site/trunk/site-publish/das-java-m1.html create mode 100644 site/trunk/site-publish/das-java-m2-release.html create mode 100644 site/trunk/site-publish/das-java-m2.html create mode 100644 site/trunk/site-publish/das-java-menu.html create mode 100644 site/trunk/site-publish/das-java-nightly-build.html create mode 100644 site/trunk/site-publish/das-java-previous-releases.html create mode 100644 site/trunk/site-publish/das-java-project.data/das_class_diagram.jpg create mode 100644 site/trunk/site-publish/das-java-project.data/das_class_diagram.jpg.jpeg create mode 100644 site/trunk/site-publish/das-java-project.html create mode 100644 site/trunk/site-publish/das-java-release-contents.html create mode 100644 site/trunk/site-publish/das-java-releases.html create mode 100644 site/trunk/site-publish/das-java-subproject-menu.html create mode 100644 site/trunk/site-publish/das-java.data/das_class_diagram.jpg create mode 100644 site/trunk/site-publish/das-java.data/das_class_diagram.jpg.jpeg create mode 100644 site/trunk/site-publish/das-java.html create mode 100644 site/trunk/site-publish/das-lite-c.data/DAS Lite C Class Diagram create mode 100644 site/trunk/site-publish/das-lite-c.data/DAS_lite_diagram.jpg create mode 100644 site/trunk/site-publish/das-lite-c.data/DAS_lite_diagram.jpg.jpeg create mode 100644 site/trunk/site-publish/das-lite-c.html create mode 100644 site/trunk/site-publish/das-lite-cplus-menu.html create mode 100644 site/trunk/site-publish/das-menu.html create mode 100644 site/trunk/site-publish/das-outline.html create mode 100644 site/trunk/site-publish/das-overview.data/RDB-DAS-Overview.pdf create mode 100644 site/trunk/site-publish/das-overview.data/das-data-services-v01.pdf create mode 100644 site/trunk/site-publish/das-overview.data/sdo_das_sm.jpg create mode 100644 site/trunk/site-publish/das-overview.data/sdo_das_sm.jpg.jpeg create mode 100644 site/trunk/site-publish/das-overview.html create mode 100644 site/trunk/site-publish/das-previous-releases.html create mode 100644 site/trunk/site-publish/das-rdb-menu.html create mode 100644 site/trunk/site-publish/das-release-process-menu.html create mode 100644 site/trunk/site-publish/das-release-process.html create mode 100644 site/trunk/site-publish/das-releases.html create mode 100644 site/trunk/site-publish/das-users-guide.html create mode 100644 site/trunk/site-publish/das.html create mode 100644 site/trunk/site-publish/delete-java-sca-architecture-overview.data/TuscanyJAVASCAM2.pdf create mode 100644 site/trunk/site-publish/delete-java-sca-architecture-overview.html create mode 100644 site/trunk/site-publish/delete-java-sca-kernel.html create mode 100644 site/trunk/site-publish/delete-junk.html create mode 100644 site/trunk/site-publish/delete-old-sca-developer-guide.data/component.png create mode 100644 site/trunk/site-publish/delete-old-sca-developer-guide.data/component.png.jpeg create mode 100644 site/trunk/site-publish/delete-old-sca-developer-guide.data/component.svg create mode 100644 site/trunk/site-publish/delete-old-sca-developer-guide.html create mode 100644 site/trunk/site-publish/delete-overview.html create mode 100644 site/trunk/site-publish/delete-sca-java-documentation-delete.html create mode 100644 site/trunk/site-publish/delete-this-page-old-introduction-page.html create mode 100644 site/trunk/site-publish/delete-this-page-using-sdo-java.html create mode 100644 site/trunk/site-publish/delete-this-page.html create mode 100644 site/trunk/site-publish/delete-tuscany-sca-databinding-faq.html create mode 100644 site/trunk/site-publish/deploying-to-server-runtime.html create mode 100644 site/trunk/site-publish/deployment.data/Artifact Resolver.gif create mode 100644 site/trunk/site-publish/deployment.data/Artifact Resolver.gif.jpeg create mode 100644 site/trunk/site-publish/deployment.data/Contribution Diagram.GIF create mode 100644 site/trunk/site-publish/deployment.data/Contribution Diagram.GIF.jpeg create mode 100644 site/trunk/site-publish/deployment.data/Contribution Processors.gif create mode 100644 site/trunk/site-publish/deployment.data/Contribution Processors.gif.jpeg create mode 100644 site/trunk/site-publish/deployment.data/Contribution Services.gif create mode 100644 site/trunk/site-publish/deployment.data/Contribution Services.gif.jpeg create mode 100644 site/trunk/site-publish/deployment.data/Tuscany_deployment.doc create mode 100644 site/trunk/site-publish/deployment.data/tuscany_contribution_service.jpg create mode 100644 site/trunk/site-publish/deployment.data/tuscany_contribution_service.jpg.jpeg create mode 100644 site/trunk/site-publish/deployment.html create mode 100644 site/trunk/site-publish/design-discussions.html create mode 100644 site/trunk/site-publish/developing-sdo-java.html create mode 100644 site/trunk/site-publish/developing-using-tuscany-sca-best-practices.html create mode 100644 site/trunk/site-publish/discovery.html create mode 100644 site/trunk/site-publish/distributed-runtime.data/distribution1.png create mode 100644 site/trunk/site-publish/distributed-runtime.data/distribution1.png.jpeg create mode 100644 site/trunk/site-publish/distributed-runtime.data/distribution3.png create mode 100644 site/trunk/site-publish/distributed-runtime.data/distribution3.png.jpeg create mode 100644 site/trunk/site-publish/distributed-runtime.data/distribution4.png create mode 100644 site/trunk/site-publish/distributed-runtime.data/distribution4.png.jpeg create mode 100644 site/trunk/site-publish/distributed-runtime.html create mode 100644 site/trunk/site-publish/distributed-sca-domain.data/calculator-distributed.png create mode 100644 site/trunk/site-publish/distributed-sca-domain.data/calculator-distributed.png.jpeg create mode 100644 site/trunk/site-publish/distributed-sca-domain.data/calculator2.png create mode 100644 site/trunk/site-publish/distributed-sca-domain.data/calculator2.png.jpeg create mode 100644 site/trunk/site-publish/distributed-sca-domain.data/calculator3.png create mode 100644 site/trunk/site-publish/distributed-sca-domain.data/calculator3.png.jpeg create mode 100644 site/trunk/site-publish/distributed-sca-domain.data/distributed-overview.png create mode 100644 site/trunk/site-publish/distributed-sca-domain.data/distributed-overview.png.jpeg create mode 100644 site/trunk/site-publish/distributed-sca-domain.data/multi-node-abstract.png create mode 100644 site/trunk/site-publish/distributed-sca-domain.data/multi-node-abstract.png.jpeg create mode 100644 site/trunk/site-publish/distributed-sca-domain.html create mode 100644 site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/01-overview.html create mode 100644 site/trunk/site-publish/documentation-2x/02-getting-started.html create mode 100644 site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg create mode 100644 site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png create mode 100644 site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg create mode 100644 site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/02-sca-introduction.html create mode 100644 site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/03-development-guides.html create mode 100644 site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg create mode 100644 site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png create mode 100644 site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg create mode 100644 site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/03-sca-introduction.html create mode 100644 site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/03development-guides.html create mode 100644 site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/04-development-guides.html create mode 100644 site/trunk/site-publish/documentation-2x/20-beta-samples-documentation.html create mode 100644 site/trunk/site-publish/documentation-2x/20-release-notes.html create mode 100644 site/trunk/site-publish/documentation-2x/classloading.html create mode 100644 site/trunk/site-publish/documentation-2x/converting-tuscany-1x-applications.html create mode 100644 site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html create mode 100644 site/trunk/site-publish/documentation-2x/create-signing-key.html create mode 100644 site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Enablement for Tuscany.ppt create mode 100644 site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Remote Services with Tuscany SCA.ppt create mode 100644 site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany 2.x Extensibility and SPIs.ppt create mode 100644 site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany SCA Domain Node.odp create mode 100644 site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/development-guides.html create mode 100644 site/trunk/site-publish/documentation-2x/extension-reference.html create mode 100644 site/trunk/site-publish/documentation-2x/get-hold-of-rat.html create mode 100644 site/trunk/site-publish/documentation-2x/getting-started.html create mode 100644 site/trunk/site-publish/documentation-2x/glossary.html create mode 100644 site/trunk/site-publish/documentation-2x/index.html create mode 100644 site/trunk/site-publish/documentation-2x/logging-tracing-and-timing.html create mode 100644 site/trunk/site-publish/documentation-2x/making-releases.html create mode 100644 site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG create mode 100644 site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg create mode 100644 site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.html create mode 100644 site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/OSGi Enablement for Tuscany.ppt create mode 100644 site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/tuscany-osgi.pdf create mode 100644 site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.html create mode 100644 site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/overview.html create mode 100644 site/trunk/site-publish/documentation-2x/resources/space.css create mode 100644 site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg create mode 100644 site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.html create mode 100644 site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.data/sample-calculator-jaxws-client.jar create mode 100644 site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html create mode 100644 site/trunk/site-publish/documentation-2x/samples-beta1.html create mode 100644 site/trunk/site-publish/documentation-2x/samples.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg create mode 100644 site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg create mode 100644 site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-introduction.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingatom.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingejb.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindinghttp.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingjms.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingjsonrpc.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingrest.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingrmi.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-bindingws.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-definitionsxml.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-deployment.data/Contribution-ClassLoading.doc create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-deployment.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-development-guide.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-extensions-guide.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-implementationbpel.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-implementationjava.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-implementationosgi.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-implementationspring.data/Spring Tuscany.pptx create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-implementationspring.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-implementationweb.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-implementationwidget.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-interfacewsdl.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.html create mode 100644 site/trunk/site-publish/documentation-2x/sca-overview.html create mode 100644 site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg create mode 100644 site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg create mode 100644 site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg create mode 100644 site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.html create mode 100644 site/trunk/site-publish/documentation-2x/setting-up-ssh.html create mode 100644 site/trunk/site-publish/documentation-2x/treenavigation.html create mode 100644 site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.data/Tuscany 2.x Extensibility and SPIs.ppt create mode 100644 site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.html create mode 100644 site/trunk/site-publish/documentation-2x/tuscany-maven-archetypes.html create mode 100644 site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png create mode 100644 site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png create mode 100644 site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png.jpeg create mode 100644 site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.html create mode 100644 site/trunk/site-publish/documentation-2x/tuscany-tomcat-distribution.html create mode 100644 site/trunk/site-publish/documentation-2x/user-reference.html create mode 100644 site/trunk/site-publish/documentation-2x/webnavigation.html create mode 100644 site/trunk/site-publish/documentation.html create mode 100644 site/trunk/site-publish/events.html create mode 100644 site/trunk/site-publish/explicit-createupdatedelete.html create mode 100644 site/trunk/site-publish/explicit-resultset-shape-definition.html create mode 100644 site/trunk/site-publish/feature-areas-and-what-folks-are-working-on.html create mode 100644 site/trunk/site-publish/features-for-java-das-m3-release.html create mode 100644 site/trunk/site-publish/features.html create mode 100644 site/trunk/site-publish/federation-notes.html create mode 100644 site/trunk/site-publish/foreignkeyrepresentationandmanagement.html create mode 100644 site/trunk/site-publish/found-a-bug-section.html create mode 100644 site/trunk/site-publish/general-das-subproject-menu.html create mode 100644 site/trunk/site-publish/general-info.html create mode 100644 site/trunk/site-publish/general-menu.html create mode 100644 site/trunk/site-publish/general-subproject-menu.html create mode 100644 site/trunk/site-publish/general.html create mode 100644 site/trunk/site-publish/get-hold-of-rat.html create mode 100644 site/trunk/site-publish/get-involved-section.html create mode 100644 site/trunk/site-publish/getting-involved-projects-panel.html create mode 100644 site/trunk/site-publish/getting-involved-projects.html create mode 100644 site/trunk/site-publish/getting-involved.html create mode 100644 site/trunk/site-publish/getting-source.html create mode 100644 site/trunk/site-publish/getting-started-build-your-first-web-services-with-tuscany.html create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project_lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project_lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_User_Lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_User_Lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/Tuscany_User_Lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/Tuscany_User_Lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feed.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feed.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feeds_page.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feeds_page.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_eclipse_console.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_eclipse_console.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_proj_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_proj_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/class_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/class_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/eclipse_console.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/eclipse_console.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/first_composite.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/first_composite.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/folder_structure.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/folder_structure.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/interface_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/interface_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/project_layout.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/project_layout.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/release_zips.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/release_zips.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment_config.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment_config.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_1.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_1.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_2.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_2.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_3.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_3.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_1.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_1.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_2.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_2.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_3.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_3.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_4.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_4.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_5.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_5.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_samples_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_samples_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-release-10.html create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator1.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator1.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator2.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator2.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator3.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator3.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator4.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator4.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculatorblocks.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculatorblocks.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.html create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project_lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project_lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_User_Lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_User_Lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/Tuscany_User_Lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/Tuscany_User_Lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feed.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feed.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feeds_page.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feeds_page.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_eclipse_console.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_eclipse_console.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_proj_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_proj_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/class_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/class_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/eclipse_console.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/eclipse_console.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/first_composite.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/first_composite.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_license.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_license.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_verification.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_verification.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_finish.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_finish.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_installation.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_installation.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_new_site.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_new_site.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_restart_eclipse.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_restart_eclipse.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_search_results.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_search_results.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_sites.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_sites.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/interface_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/interface_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/project_layout.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/project_layout.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_1.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_1.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_2.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_2.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_3.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_3.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_1.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_1.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_2.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_2.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.html create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project_lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project_lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_User_Lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_User_Lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/Tuscany_User_Lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/Tuscany_User_Lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feed.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feed.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feeds_page.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feeds_page.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_eclipse_console.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_eclipse_console.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_proj_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_proj_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/class_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/class_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/eclipse_console.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/eclipse_console.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/first_composite.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/first_composite.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_license.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_license.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_verification.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_verification.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_finish.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_finish.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_installation.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_installation.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_new_site.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_new_site.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_restart_eclipse.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_restart_eclipse.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_search_results.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_search_results.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_sites.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_sites.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/interface_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/interface_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/project_layout.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/project_layout.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_1.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_1.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_2.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_2.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_3.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_3.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_1.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_1.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_2.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_2.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.html create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project_lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project_lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/New_User_Lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/New_User_Lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/Tuscany_User_Lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/Tuscany_User_Lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/atom_feed.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/atom_feed.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/atom_feeds_page.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/atom_feeds_page.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/calculator_eclipse_console.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/calculator_eclipse_console.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/calculator_proj_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/calculator_proj_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/class_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/class_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/eclipse_console.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/eclipse_console.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/first_composite.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/first_composite.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/interface_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/interface_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_btn.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_btn.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_dlg.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_dlg.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_lib.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_lib.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/project_layout.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/project_layout.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_page.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_page.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_page_1.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_page_1.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_page_2.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_page_2.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_page_3.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_page_3.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_1.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_1.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_2.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_2.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.jpg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.png create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.png.jpeg create mode 100644 site/trunk/site-publish/getting-started-with-tuscany.html create mode 100644 site/trunk/site-publish/getting-started.data/eclipse_m2_repo.jpg create mode 100644 site/trunk/site-publish/getting-started.data/eclipse_m2_repo.jpg.jpeg create mode 100644 site/trunk/site-publish/getting-started.html create mode 100644 site/trunk/site-publish/getting-tuscanys-java-sca-implementation.html create mode 100644 site/trunk/site-publish/getting-tuscnays-java-sca.html create mode 100644 site/trunk/site-publish/graph-merge.html create mode 100644 site/trunk/site-publish/haleh-sandbox.html create mode 100644 site/trunk/site-publish/home-subpage.html create mode 100644 site/trunk/site-publish/home.data/Logo.png create mode 100644 site/trunk/site-publish/home.data/Logo.png.jpeg create mode 100644 site/trunk/site-publish/home.data/SCAMessage.JPG create mode 100644 site/trunk/site-publish/home.data/SCAMessage.JPG.jpeg create mode 100644 site/trunk/site-publish/home.data/TitleC.png create mode 100644 site/trunk/site-publish/home.data/TitleC.png.jpeg create mode 100644 site/trunk/site-publish/home.data/Tuscany Logo.png create mode 100644 site/trunk/site-publish/home.data/Tuscany Logo.png.jpeg create mode 100644 site/trunk/site-publish/home.html create mode 100644 site/trunk/site-publish/homenew.html create mode 100644 site/trunk/site-publish/images/bad.gif create mode 100644 site/trunk/site-publish/images/border/border_bottom.gif create mode 100644 site/trunk/site-publish/images/border/spacer.gif create mode 100644 site/trunk/site-publish/images/confluence_logo.gif create mode 100644 site/trunk/site-publish/images/confluence_logo_darkbg.gif create mode 100644 site/trunk/site-publish/images/en_UK.gif create mode 100644 site/trunk/site-publish/images/encodingtest.jpg create mode 100644 site/trunk/site-publish/images/good.gif create mode 100644 site/trunk/site-publish/images/icons/about_16.gif create mode 100644 site/trunk/site-publish/images/icons/about_16.png create mode 100644 site/trunk/site-publish/images/icons/add_16.gif create mode 100644 site/trunk/site-publish/images/icons/add_blogentry_16.gif create mode 100644 site/trunk/site-publish/images/icons/add_blogentry_32.gif create mode 100644 site/trunk/site-publish/images/icons/add_comment_16.gif create mode 100644 site/trunk/site-publish/images/icons/add_page_16.gif create mode 100644 site/trunk/site-publish/images/icons/add_page_32.gif create mode 100644 site/trunk/site-publish/images/icons/add_page_child_16.gif create mode 100644 site/trunk/site-publish/images/icons/add_page_faded_16.gif create mode 100644 site/trunk/site-publish/images/icons/add_page_notification_16.gif create mode 100644 site/trunk/site-publish/images/icons/add_space_16.gif create mode 100644 site/trunk/site-publish/images/icons/add_space_32.gif create mode 100644 site/trunk/site-publish/images/icons/add_space_notification_16.gif create mode 100644 site/trunk/site-publish/images/icons/addbk_16.gif create mode 100644 site/trunk/site-publish/images/icons/adfav_16.gif create mode 100644 site/trunk/site-publish/images/icons/alarm_16.gif create mode 100644 site/trunk/site-publish/images/icons/apps_16.gif create mode 100644 site/trunk/site-publish/images/icons/arrow_block_16.gif create mode 100644 site/trunk/site-publish/images/icons/arrow_closed_active_16.gif create mode 100644 site/trunk/site-publish/images/icons/arrow_closing_active_16.gif create mode 100644 site/trunk/site-publish/images/icons/arrow_open_active_16.gif create mode 100644 site/trunk/site-publish/images/icons/arrow_opening_active_16.gif create mode 100644 site/trunk/site-publish/images/icons/atom.gif create mode 100644 site/trunk/site-publish/images/icons/attach_file_16.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/excel.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/file.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/html.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/image.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/java.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/pdf.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/powerpoint.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/text.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/word.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/xml.gif create mode 100644 site/trunk/site-publish/images/icons/attachments/zip.gif create mode 100644 site/trunk/site-publish/images/icons/back_16.gif create mode 100644 site/trunk/site-publish/images/icons/blogentry_16.gif create mode 100644 site/trunk/site-publish/images/icons/blogentry_faded_16.gif create mode 100644 site/trunk/site-publish/images/icons/browse_space.gif create mode 100644 site/trunk/site-publish/images/icons/bullet_blue.gif create mode 100644 site/trunk/site-publish/images/icons/bullet_creme.gif create mode 100644 site/trunk/site-publish/images/icons/bullet_creme_6.gif create mode 100644 site/trunk/site-publish/images/icons/bullet_done.gif create mode 100644 site/trunk/site-publish/images/icons/bullet_inprogress.gif create mode 100644 site/trunk/site-publish/images/icons/bullet_notdone.gif create mode 100644 site/trunk/site-publish/images/icons/bullet_red.gif create mode 100644 site/trunk/site-publish/images/icons/cal_16.gif create mode 100644 site/trunk/site-publish/images/icons/calc_16.gif create mode 100644 site/trunk/site-publish/images/icons/cancl_16.gif create mode 100644 site/trunk/site-publish/images/icons/cart_16.gif create mode 100644 site/trunk/site-publish/images/icons/cd_16.gif create mode 100644 site/trunk/site-publish/images/icons/chart_16.gif create mode 100644 site/trunk/site-publish/images/icons/close_16.gif create mode 100644 site/trunk/site-publish/images/icons/comment_16.gif create mode 100644 site/trunk/site-publish/images/icons/confg_16.gif create mode 100644 site/trunk/site-publish/images/icons/configure_icon_16.gif create mode 100644 site/trunk/site-publish/images/icons/copy_16.gif create mode 100644 site/trunk/site-publish/images/icons/cut_16.gif create mode 100644 site/trunk/site-publish/images/icons/del_16.gif create mode 100644 site/trunk/site-publish/images/icons/del_blogentry_16.gif create mode 100644 site/trunk/site-publish/images/icons/del_comment_16.gif create mode 100644 site/trunk/site-publish/images/icons/del_page_16.gif create mode 100644 site/trunk/site-publish/images/icons/del_page_notification_16.gif create mode 100644 site/trunk/site-publish/images/icons/del_space_16.gif create mode 100644 site/trunk/site-publish/images/icons/del_space_notification_16.gif create mode 100644 site/trunk/site-publish/images/icons/docs_16.gif create mode 100644 site/trunk/site-publish/images/icons/document_attachment.png create mode 100644 site/trunk/site-publish/images/icons/document_exchange.gif create mode 100644 site/trunk/site-publish/images/icons/document_exchange.png create mode 100644 site/trunk/site-publish/images/icons/document_zoom_in_16.gif create mode 100644 site/trunk/site-publish/images/icons/document_zoom_in_16.png create mode 100644 site/trunk/site-publish/images/icons/down_16.gif create mode 100644 site/trunk/site-publish/images/icons/dummy.gif create mode 100644 site/trunk/site-publish/images/icons/edit_16.gif create mode 100644 site/trunk/site-publish/images/icons/edit_blogentry_16.gif create mode 100644 site/trunk/site-publish/images/icons/edit_only_16.gif create mode 100644 site/trunk/site-publish/images/icons/edit_space_16.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/add.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/add.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/biggrin.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/check.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/check.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/error.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/error.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/forbidden.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/forbidden.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/help_16.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/information.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/information.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/lightbulb.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/lightbulb.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/lightbulb_on.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/lightbulb_on.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/sad.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/smile.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/star_blue.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/star_blue.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/star_green.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/star_green.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/star_red.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/star_red.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/star_yellow.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/star_yellow.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/thumbs_down.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/thumbs_up.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/tongue.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/warning.gif create mode 100644 site/trunk/site-publish/images/icons/emoticons/warning.png create mode 100644 site/trunk/site-publish/images/icons/emoticons/wink.gif create mode 100644 site/trunk/site-publish/images/icons/exp_16.gif create mode 100644 site/trunk/site-publish/images/icons/exp_32.gif create mode 100644 site/trunk/site-publish/images/icons/fastf_16.gif create mode 100644 site/trunk/site-publish/images/icons/favicon.ico create mode 100644 site/trunk/site-publish/images/icons/favicon.png create mode 100644 site/trunk/site-publish/images/icons/favs_16.gif create mode 100644 site/trunk/site-publish/images/icons/fax_16.gif create mode 100644 site/trunk/site-publish/images/icons/feed-icon-10x10.png create mode 100644 site/trunk/site-publish/images/icons/feed-icon-12x12.png create mode 100644 site/trunk/site-publish/images/icons/feed-icon-16x16.png create mode 100644 site/trunk/site-publish/images/icons/feed-icon-24x24.png create mode 100644 site/trunk/site-publish/images/icons/feed-icon-32x32.png create mode 100644 site/trunk/site-publish/images/icons/feed_wizard.gif create mode 100644 site/trunk/site-publish/images/icons/flag_16.gif create mode 100644 site/trunk/site-publish/images/icons/foldr_16.gif create mode 100644 site/trunk/site-publish/images/icons/forwd_16.gif create mode 100644 site/trunk/site-publish/images/icons/forwd_24.png create mode 100644 site/trunk/site-publish/images/icons/games_16.gif create mode 100644 site/trunk/site-publish/images/icons/go_16.gif create mode 100644 site/trunk/site-publish/images/icons/group_16.gif create mode 100644 site/trunk/site-publish/images/icons/group_anyone_16.gif create mode 100644 site/trunk/site-publish/images/icons/hd_16.gif create mode 100644 site/trunk/site-publish/images/icons/help_16.gif create mode 100644 site/trunk/site-publish/images/icons/help_24.gif create mode 100644 site/trunk/site-publish/images/icons/help_24.png create mode 100644 site/trunk/site-publish/images/icons/hist_16.gif create mode 100644 site/trunk/site-publish/images/icons/history_16.gif create mode 100644 site/trunk/site-publish/images/icons/home_16.gif create mode 100644 site/trunk/site-publish/images/icons/home_faded_16.gif create mode 100644 site/trunk/site-publish/images/icons/image_16.gif create mode 100644 site/trunk/site-publish/images/icons/import_mbox_16.gif create mode 100644 site/trunk/site-publish/images/icons/impt_16.gif create mode 100644 site/trunk/site-publish/images/icons/label_16.gif create mode 100644 site/trunk/site-publish/images/icons/layout_northwest.gif create mode 100644 site/trunk/site-publish/images/icons/layout_northwest.png create mode 100644 site/trunk/site-publish/images/icons/lgicn_16.gif create mode 100644 site/trunk/site-publish/images/icons/link_16.gif create mode 100644 site/trunk/site-publish/images/icons/link_attachment_7.gif create mode 100644 site/trunk/site-publish/images/icons/link_in_bot.gif create mode 100644 site/trunk/site-publish/images/icons/link_in_mid.gif create mode 100644 site/trunk/site-publish/images/icons/link_in_only.gif create mode 100644 site/trunk/site-publish/images/icons/link_in_top.gif create mode 100644 site/trunk/site-publish/images/icons/link_out_bot.gif create mode 100644 site/trunk/site-publish/images/icons/link_out_mid.gif create mode 100644 site/trunk/site-publish/images/icons/link_out_top.gif create mode 100644 site/trunk/site-publish/images/icons/linkext7.gif create mode 100644 site/trunk/site-publish/images/icons/list_blogentries_32.gif create mode 100644 site/trunk/site-publish/images/icons/list_blogposts_32.gif create mode 100644 site/trunk/site-publish/images/icons/list_less_pages_16.gif create mode 100644 site/trunk/site-publish/images/icons/list_mail_32.gif create mode 100644 site/trunk/site-publish/images/icons/list_mail_content_16.gif create mode 100644 site/trunk/site-publish/images/icons/list_mail_faded_16.gif create mode 100644 site/trunk/site-publish/images/icons/list_pages_16.gif create mode 100644 site/trunk/site-publish/images/icons/list_pages_32.gif create mode 100644 site/trunk/site-publish/images/icons/list_pages_faded_16.gif create mode 100644 site/trunk/site-publish/images/icons/lock_16.gif create mode 100644 site/trunk/site-publish/images/icons/locked_pages_16.gif create mode 100644 site/trunk/site-publish/images/icons/logo_add_16.gif create mode 100644 site/trunk/site-publish/images/icons/mail.png create mode 100644 site/trunk/site-publish/images/icons/mail_16.gif create mode 100644 site/trunk/site-publish/images/icons/mail_content_16.gif create mode 100644 site/trunk/site-publish/images/icons/mail_delete.png create mode 100644 site/trunk/site-publish/images/icons/mail_small.gif create mode 100644 site/trunk/site-publish/images/icons/mail_thread_16.gif create mode 100644 site/trunk/site-publish/images/icons/move_16.gif create mode 100644 site/trunk/site-publish/images/icons/music_16.gif create mode 100644 site/trunk/site-publish/images/icons/nav_down.gif create mode 100644 site/trunk/site-publish/images/icons/nav_up.gif create mode 100644 site/trunk/site-publish/images/icons/new_16.gif create mode 100644 site/trunk/site-publish/images/icons/news.gif create mode 100644 site/trunk/site-publish/images/icons/notep_16.gif create mode 100644 site/trunk/site-publish/images/icons/ntwrk_16.gif create mode 100644 site/trunk/site-publish/images/icons/open_16.gif create mode 100644 site/trunk/site-publish/images/icons/opnbr_16.gif create mode 100644 site/trunk/site-publish/images/icons/opts_16.gif create mode 100644 site/trunk/site-publish/images/icons/page_hierarchy_16.gif create mode 100644 site/trunk/site-publish/images/icons/paint_16.gif create mode 100644 site/trunk/site-publish/images/icons/paste_16.gif create mode 100644 site/trunk/site-publish/images/icons/pause_16.gif create mode 100644 site/trunk/site-publish/images/icons/phone_16.gif create mode 100644 site/trunk/site-publish/images/icons/photo_scenery.gif create mode 100644 site/trunk/site-publish/images/icons/picts_16.gif create mode 100644 site/trunk/site-publish/images/icons/play_16.gif create mode 100644 site/trunk/site-publish/images/icons/plus.gif create mode 100644 site/trunk/site-publish/images/icons/prefs_16.gif create mode 100644 site/trunk/site-publish/images/icons/print_16.gif create mode 100644 site/trunk/site-publish/images/icons/profilepics/angel.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/businessman.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/businessman2.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/default.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/devil.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/doctor.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/dude1.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/dude2.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/dude3.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/dude4.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/dude5.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/ghost.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/security_agent.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/user1.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/user2.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/user3.png create mode 100644 site/trunk/site-publish/images/icons/profilepics/user_headphones.png create mode 100644 site/trunk/site-publish/images/icons/prtpv_16.gif create mode 100644 site/trunk/site-publish/images/icons/redo_116.gif create mode 100644 site/trunk/site-publish/images/icons/ref_16.gif create mode 100644 site/trunk/site-publish/images/icons/refresh_16.png create mode 100644 site/trunk/site-publish/images/icons/refresh_24.png create mode 100644 site/trunk/site-publish/images/icons/remov_16.gif create mode 100644 site/trunk/site-publish/images/icons/rewnd_16.gif create mode 100644 site/trunk/site-publish/images/icons/rss.gif create mode 100644 site/trunk/site-publish/images/icons/rss10.gif create mode 100644 site/trunk/site-publish/images/icons/rss20.gif create mode 100644 site/trunk/site-publish/images/icons/rss_32.gif create mode 100644 site/trunk/site-publish/images/icons/run_test_fail_16.gif create mode 100644 site/trunk/site-publish/images/icons/run_test_pass_16.gif create mode 100644 site/trunk/site-publish/images/icons/savas_16.gif create mode 100644 site/trunk/site-publish/images/icons/save_16.gif create mode 100644 site/trunk/site-publish/images/icons/sinfo_16.gif create mode 100644 site/trunk/site-publish/images/icons/skipb_16.gif create mode 100644 site/trunk/site-publish/images/icons/skipf_16.gif create mode 100644 site/trunk/site-publish/images/icons/smicn_16.gif create mode 100644 site/trunk/site-publish/images/icons/splay_16.gif create mode 100644 site/trunk/site-publish/images/icons/srch_16.gif create mode 100644 site/trunk/site-publish/images/icons/star_grey.gif create mode 100644 site/trunk/site-publish/images/icons/star_yellow.gif create mode 100644 site/trunk/site-publish/images/icons/stop_16.gif create mode 100644 site/trunk/site-publish/images/icons/subtract_16.gif create mode 100644 site/trunk/site-publish/images/icons/text_abc.gif create mode 100644 site/trunk/site-publish/images/icons/text_abc_16.gif create mode 100644 site/trunk/site-publish/images/icons/text_bold.gif create mode 100644 site/trunk/site-publish/images/icons/text_bold_16.png create mode 100644 site/trunk/site-publish/images/icons/text_italics.gif create mode 100644 site/trunk/site-publish/images/icons/text_tree.png create mode 100644 site/trunk/site-publish/images/icons/text_tree_16.png create mode 100644 site/trunk/site-publish/images/icons/text_underlined.gif create mode 100644 site/trunk/site-publish/images/icons/text_view.png create mode 100644 site/trunk/site-publish/images/icons/text_view_16.png create mode 100644 site/trunk/site-publish/images/icons/thread.png create mode 100644 site/trunk/site-publish/images/icons/tools_16.gif create mode 100644 site/trunk/site-publish/images/icons/trafficlight_green_16.png create mode 100644 site/trunk/site-publish/images/icons/trafficlight_green_24.png create mode 100644 site/trunk/site-publish/images/icons/trafficlight_red_16.png create mode 100644 site/trunk/site-publish/images/icons/trafficlight_red_24.png create mode 100644 site/trunk/site-publish/images/icons/trash_16.gif create mode 100644 site/trunk/site-publish/images/icons/tree_minus.gif create mode 100644 site/trunk/site-publish/images/icons/tree_plus.gif create mode 100644 site/trunk/site-publish/images/icons/tree_square.gif create mode 100644 site/trunk/site-publish/images/icons/ulock_16.gif create mode 100644 site/trunk/site-publish/images/icons/undo_16.gif create mode 100644 site/trunk/site-publish/images/icons/up_16.gif create mode 100644 site/trunk/site-publish/images/icons/user_12.gif create mode 100644 site/trunk/site-publish/images/icons/user_16.gif create mode 100644 site/trunk/site-publish/images/icons/user_bw_16.gif create mode 100644 site/trunk/site-publish/images/icons/wait.gif create mode 100644 site/trunk/site-publish/images/icons/watch_16.gif create mode 100644 site/trunk/site-publish/images/icons/watch_32.gif create mode 100644 site/trunk/site-publish/images/icons/watch_cancel_16.gif create mode 100644 site/trunk/site-publish/images/icons/watch_cancel_32.gif create mode 100644 site/trunk/site-publish/images/icons/web_16.gif create mode 100644 site/trunk/site-publish/images/icons/web_faded_16.gif create mode 100644 site/trunk/site-publish/images/icons/wiz_16.gif create mode 100644 site/trunk/site-publish/images/icons/zoomi_16.gif create mode 100644 site/trunk/site-publish/images/icons/zoomo_16.gif create mode 100644 site/trunk/site-publish/images/logo.gif create mode 100644 site/trunk/site-publish/images/logo2.gif create mode 100644 site/trunk/site-publish/images/raw/arrow_block.png create mode 100644 site/trunk/site-publish/images/raw/arrow_closing_active.png create mode 100644 site/trunk/site-publish/images/raw/arrow_opening_active.png create mode 100644 site/trunk/site-publish/images/raw/attach-file.png create mode 100644 site/trunk/site-publish/images/raw/attachment-icons.png create mode 100644 site/trunk/site-publish/images/raw/blogentry.png create mode 100644 site/trunk/site-publish/images/raw/blogentry_24.png create mode 100644 site/trunk/site-publish/images/raw/blogentry_add_32.png create mode 100644 site/trunk/site-publish/images/raw/blogentry_faded_16.png create mode 100644 site/trunk/site-publish/images/raw/bullet_done.png create mode 100644 site/trunk/site-publish/images/raw/bullet_inprogress.png create mode 100644 site/trunk/site-publish/images/raw/bullet_notdone.png create mode 100644 site/trunk/site-publish/images/raw/comment-add.png create mode 100644 site/trunk/site-publish/images/raw/comment-del.png create mode 100644 site/trunk/site-publish/images/raw/comment.png create mode 100644 site/trunk/site-publish/images/raw/configure_icon_16.png create mode 100644 site/trunk/site-publish/images/raw/discussion-large.png create mode 100644 site/trunk/site-publish/images/raw/edit_16.png create mode 100644 site/trunk/site-publish/images/raw/edit_only_16.png create mode 100644 site/trunk/site-publish/images/raw/group-anyone.png create mode 100644 site/trunk/site-publish/images/raw/history_arrow.png create mode 100644 site/trunk/site-publish/images/raw/home_16_faded.png create mode 100644 site/trunk/site-publish/images/raw/import_mbox_16.png create mode 100644 site/trunk/site-publish/images/raw/left-nav-theme.png create mode 100644 site/trunk/site-publish/images/raw/link-attachment.png create mode 100644 site/trunk/site-publish/images/raw/link-external.png create mode 100644 site/trunk/site-publish/images/raw/list-pages-large.png create mode 100644 site/trunk/site-publish/images/raw/list-pages.png create mode 100644 site/trunk/site-publish/images/raw/list-pages_faded_16.png create mode 100644 site/trunk/site-publish/images/raw/list_blogentries_32.png create mode 100644 site/trunk/site-publish/images/raw/list_less_pages_16.png create mode 100644 site/trunk/site-publish/images/raw/list_mail_16.png create mode 100644 site/trunk/site-publish/images/raw/list_mail_32.png create mode 100644 site/trunk/site-publish/images/raw/list_mail_faded_16.png create mode 100644 site/trunk/site-publish/images/raw/locked-pages_16.png create mode 100644 site/trunk/site-publish/images/raw/mail_16.png create mode 100644 site/trunk/site-publish/images/raw/mail_small.png create mode 100644 site/trunk/site-publish/images/raw/mail_thread_16.png create mode 100644 site/trunk/site-publish/images/raw/main-theme.png create mode 100644 site/trunk/site-publish/images/raw/open-active.png create mode 100644 site/trunk/site-publish/images/raw/page-add-child.png create mode 100644 site/trunk/site-publish/images/raw/page-add-large.png create mode 100644 site/trunk/site-publish/images/raw/page-add.png create mode 100644 site/trunk/site-publish/images/raw/page-add_faded_16.png create mode 100644 site/trunk/site-publish/images/raw/page-del.png create mode 100644 site/trunk/site-publish/images/raw/page-hierarchy-large.png create mode 100644 site/trunk/site-publish/images/raw/page-hierarchy.png create mode 100644 site/trunk/site-publish/images/raw/page-history.png create mode 100644 site/trunk/site-publish/images/raw/page-notification.png create mode 100644 site/trunk/site-publish/images/raw/plus_sign.png create mode 100644 site/trunk/site-publish/images/raw/rss.png create mode 100644 site/trunk/site-publish/images/raw/rss_32.png create mode 100644 site/trunk/site-publish/images/raw/space-add-large.png create mode 100644 site/trunk/site-publish/images/raw/space-add.png create mode 100644 site/trunk/site-publish/images/raw/space-del.png create mode 100644 site/trunk/site-publish/images/raw/space-edit.png create mode 100644 site/trunk/site-publish/images/raw/space-notification.png create mode 100644 site/trunk/site-publish/images/raw/test-ran-green.png create mode 100644 site/trunk/site-publish/images/raw/test-ran-red.png create mode 100644 site/trunk/site-publish/images/raw/tree_square.png create mode 100644 site/trunk/site-publish/images/raw/uat-test-theme.png create mode 100644 site/trunk/site-publish/images/raw/user_small.png create mode 100644 site/trunk/site-publish/images/raw/watch-large.png create mode 100644 site/trunk/site-publish/images/raw/watch_16.png create mode 100644 site/trunk/site-publish/images/raw/web_faded_16.png create mode 100644 site/trunk/site-publish/images/themes/left-nav-theme.gif create mode 100644 site/trunk/site-publish/images/themes/main-theme.gif create mode 100644 site/trunk/site-publish/images/themes/no-icon.gif create mode 100644 site/trunk/site-publish/images/xtree/I.png create mode 100644 site/trunk/site-publish/images/xtree/L.png create mode 100644 site/trunk/site-publish/images/xtree/Lminus.png create mode 100644 site/trunk/site-publish/images/xtree/Lplus.png create mode 100644 site/trunk/site-publish/images/xtree/T.png create mode 100644 site/trunk/site-publish/images/xtree/Thumbs.db create mode 100644 site/trunk/site-publish/images/xtree/Tminus.png create mode 100644 site/trunk/site-publish/images/xtree/Tplus.png create mode 100644 site/trunk/site-publish/images/xtree/blank.png create mode 100644 site/trunk/site-publish/images/xtree/file.png create mode 100644 site/trunk/site-publish/images/xtree/foldericon.png create mode 100644 site/trunk/site-publish/images/xtree/new.png create mode 100644 site/trunk/site-publish/images/xtree/openfoldericon.png create mode 100644 site/trunk/site-publish/images/xtree/pspbrwse.jbf create mode 100644 site/trunk/site-publish/implementationscript.html create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libraries.png create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libs.png create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libs.png.jpeg create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-sources.png create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-sources.png.jpeg create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project.png create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project.png.jpeg create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project2.png create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project2.png.jpeg create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/project-properties.png create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/project-properties.png.jpeg create mode 100644 site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.html create mode 100644 site/trunk/site-publish/incubator-m2.html create mode 100644 site/trunk/site-publish/incubator-report-may-2007.html create mode 100644 site/trunk/site-publish/incubator-reports.html create mode 100644 site/trunk/site-publish/index.html create mode 100644 site/trunk/site-publish/introduction.html create mode 100644 site/trunk/site-publish/issue-management.html create mode 100644 site/trunk/site-publish/issue-tracking.html create mode 100644 site/trunk/site-publish/j2se-sample.html create mode 100644 site/trunk/site-publish/java-das-please-remove.html create mode 100644 site/trunk/site-publish/java-das.html create mode 100644 site/trunk/site-publish/java-implementation-model-for-event-processing.html create mode 100644 site/trunk/site-publish/java-implementation.html create mode 100644 site/trunk/site-publish/java-sca-090-release-contents.html create mode 100644 site/trunk/site-publish/java-sca-091-release-contents.html create mode 100644 site/trunk/site-publish/java-sca-099-release-contents.html create mode 100644 site/trunk/site-publish/java-sca-10-release-contents.html create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.doc create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/assembly.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/assembly.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap_seq.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap_seq.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/component.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/component.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/contribution_overview.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/contribution_overview.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/model.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/model.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/runtime-model.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/runtime-model.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/runtime-wire.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/runtime-wire.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_composite_hierarchy.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_layers.jpg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_layers.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-architecture-guide.html create mode 100644 site/trunk/site-publish/java-sca-architecture-overview.data/TuscanyJAVASCAM2.pdf create mode 100644 site/trunk/site-publish/java-sca-architecture-overview.html create mode 100644 site/trunk/site-publish/java-sca-architecture.html create mode 100644 site/trunk/site-publish/java-sca-developer-guide.html create mode 100644 site/trunk/site-publish/java-sca-distributed.html create mode 100644 site/trunk/site-publish/java-sca-documentation-menu.html create mode 100644 site/trunk/site-publish/java-sca-documentation-toc.html create mode 100644 site/trunk/site-publish/java-sca-download-page.html create mode 100644 site/trunk/site-publish/java-sca-extension-developer-guide.data/ExtendingTuscany.ppt create mode 100644 site/trunk/site-publish/java-sca-extension-developer-guide.html create mode 100644 site/trunk/site-publish/java-sca-extension-guide.html create mode 100644 site/trunk/site-publish/java-sca-extensions-menu.html create mode 100644 site/trunk/site-publish/java-sca-extensions.html create mode 100644 site/trunk/site-publish/java-sca-implementationdata.html create mode 100644 site/trunk/site-publish/java-sca-implementationscript.html create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap.jpg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap_seq.jpg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap_seq.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/component.jpg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/component.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/model.jpg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/model.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_composite_hierarchy.jpg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_layers.jpg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_layers.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-kernel-architecture-guide.html create mode 100644 site/trunk/site-publish/java-sca-kernel-menu.html create mode 100644 site/trunk/site-publish/java-sca-kernel.html create mode 100644 site/trunk/site-publish/java-sca-menu-new.html create mode 100644 site/trunk/site-publish/java-sca-menu.html create mode 100644 site/trunk/site-publish/java-sca-modulization-design-discussions.data/Contribution Diagram.GIF create mode 100644 site/trunk/site-publish/java-sca-modulization-design-discussions.data/Contribution Diagram.GIF.jpeg create mode 100644 site/trunk/site-publish/java-sca-modulization-design-discussions.data/Tuscany-Kernel.doc create mode 100644 site/trunk/site-publish/java-sca-modulization-design-discussions.data/tuscany-kernel-modulization.jpg create mode 100644 site/trunk/site-publish/java-sca-modulization-design-discussions.data/tuscany-kernel-modulization.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-modulization-design-discussions.html create mode 100644 site/trunk/site-publish/java-sca-next-release-contents.html create mode 100644 site/trunk/site-publish/java-sca-next-release-planning.html create mode 100644 site/trunk/site-publish/java-sca-overview.html create mode 100644 site/trunk/site-publish/java-sca-runtime-component-hierarchy.data/recursive_composite.jpg create mode 100644 site/trunk/site-publish/java-sca-runtime-component-hierarchy.data/recursive_composite.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-runtime-component-hierarchy.html create mode 100644 site/trunk/site-publish/java-sca-runtimes-menu.html create mode 100644 site/trunk/site-publish/java-sca-runtimes.html create mode 100644 site/trunk/site-publish/java-sca-subproject.data/junk.jpg create mode 100644 site/trunk/site-publish/java-sca-subproject.data/junk.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-subproject.data/junk2.jpg create mode 100644 site/trunk/site-publish/java-sca-subproject.data/junk2.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-subproject.data/tuscanylogo.jpg create mode 100644 site/trunk/site-publish/java-sca-subproject.data/tuscanylogo.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-subproject.html create mode 100644 site/trunk/site-publish/java-sca-tools.data/SCA Tooling.ppt create mode 100644 site/trunk/site-publish/java-sca-tools.data/SCACompositeDesigner.PNG create mode 100644 site/trunk/site-publish/java-sca-tools.data/SCACompositeDesigner.PNG.jpeg create mode 100644 site/trunk/site-publish/java-sca-tools.html create mode 100644 site/trunk/site-publish/java-sca-user-guide.data/java_imp.jpg create mode 100644 site/trunk/site-publish/java-sca-user-guide.data/java_imp.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca-user-guide.html create mode 100644 site/trunk/site-publish/java-sca.data/Extensions2.jpg create mode 100644 site/trunk/site-publish/java-sca.data/Extensions2.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca.data/junk.jpg create mode 100644 site/trunk/site-publish/java-sca.data/junk.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca.data/junk2.jpg create mode 100644 site/trunk/site-publish/java-sca.data/junk2.jpg.jpeg create mode 100644 site/trunk/site-publish/java-sca.html create mode 100644 site/trunk/site-publish/java-sdo-menu.html create mode 100644 site/trunk/site-publish/javaone-demo.data/J1_BOF_01.jpg create mode 100644 site/trunk/site-publish/javaone-demo.data/J1_BOF_01.jpg.jpeg create mode 100644 site/trunk/site-publish/javaone-demo.data/J1_BOF_01.pdf create mode 100644 site/trunk/site-publish/javaone-demo.html create mode 100644 site/trunk/site-publish/javascaimplementationscript.html create mode 100644 site/trunk/site-publish/kernel-architecture.data/TuscanyJAVASCAM2.pdf create mode 100644 site/trunk/site-publish/kernel-architecture.html create mode 100644 site/trunk/site-publish/kernel-modulization-design-discussions.data/Contribution Diagram.GIF create mode 100644 site/trunk/site-publish/kernel-modulization-design-discussions.data/Contribution Diagram.GIF.jpeg create mode 100644 site/trunk/site-publish/kernel-modulization-design-discussions.data/Tuscany-Kernel.doc create mode 100644 site/trunk/site-publish/kernel-modulization-design-discussions.data/tuscany-kernel-modulization.jpg create mode 100644 site/trunk/site-publish/kernel-modulization-design-discussions.data/tuscany-kernel-modulization.jpg.jpeg create mode 100644 site/trunk/site-publish/kernel-modulization-design-discussions.html create mode 100644 site/trunk/site-publish/latest-release-apache-tuscany-data-access-service.html create mode 100644 site/trunk/site-publish/latest-release-das-java-m2-release.html create mode 100644 site/trunk/site-publish/ldap-das-architecture-guide.html create mode 100644 site/trunk/site-publish/ldap-das-java.html create mode 100644 site/trunk/site-publish/ldap-java-das.html create mode 100644 site/trunk/site-publish/license.html create mode 100644 site/trunk/site-publish/logging-tracing-and-timing-in-tuscany.html create mode 100644 site/trunk/site-publish/m3-process-notes.html create mode 100644 site/trunk/site-publish/mailing-lists.html create mode 100644 site/trunk/site-publish/main-menu.html create mode 100644 site/trunk/site-publish/making-releases.html create mode 100644 site/trunk/site-publish/maven-plugins.html create mode 100644 site/trunk/site-publish/menu3.html create mode 100644 site/trunk/site-publish/menus.html create mode 100644 site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html create mode 100644 site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-implementation-type.html create mode 100644 site/trunk/site-publish/named-parameters-support.html create mode 100644 site/trunk/site-publish/native-sca-menu.html create mode 100644 site/trunk/site-publish/native-sdo-menu.html create mode 100644 site/trunk/site-publish/navigation.html create mode 100644 site/trunk/site-publish/new-home-page.html create mode 100644 site/trunk/site-publish/news-and-events.html create mode 100644 site/trunk/site-publish/news-past-events.html create mode 100644 site/trunk/site-publish/news.data/BuildingSOAWithApacheTuscany.ppt create mode 100644 site/trunk/site-publish/news.html create mode 100644 site/trunk/site-publish/obtaining-a-tuscany-java-sca-implementation.html create mode 100644 site/trunk/site-publish/obtaining-the-sdo-21-cts.html create mode 100644 site/trunk/site-publish/obtaining-tuscanys-java-sca-implementation.html create mode 100644 site/trunk/site-publish/old-sandbox.html create mode 100644 site/trunk/site-publish/optimisticconcurrencycontrol.html create mode 100644 site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG create mode 100644 site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg create mode 100644 site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg create mode 100644 site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg create mode 100644 site/trunk/site-publish/osgi-aware-programming-in-tuscany.html create mode 100644 site/trunk/site-publish/othermenu.html create mode 100644 site/trunk/site-publish/overview.html create mode 100644 site/trunk/site-publish/partialupdate.html create mode 100644 site/trunk/site-publish/past-events.html create mode 100644 site/trunk/site-publish/php-sca.html create mode 100644 site/trunk/site-publish/place-holder-for-the-old-user-guide-page.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/composite-mojo.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/css/maven-base.css create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/css/maven-theme.css create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/css/print.css create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/dependencies.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/images/collapsed.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/images/expanded.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/images/external.png create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_error_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_info_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_success_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_warning_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/images/logos/maven-feather.png create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/images/newwindow.png create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/index.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/integration.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/issue-tracking.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/license.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/mail-lists.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/plugin-info.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/project-info.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/project-reports.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/project-summary.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/source-repository.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/team-list.html create mode 100644 site/trunk/site-publish/plugins/tuscany-composite-plugin/usage.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/css/maven-base.css create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/css/maven-theme.css create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/css/print.css create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/dependencies.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/faq.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/images/collapsed.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/images/expanded.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/images/external.png create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_error_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_info_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_success_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_warning_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/images/logos/maven-feather.png create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/images/newwindow.png create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/index.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/integration.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/issue-tracking.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/license.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/mail-lists.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/plugin-info.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/project-info.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/project-reports.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/project-summary.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/source-repository.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/team-list.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/test-mojo.html create mode 100644 site/trunk/site-publish/plugins/tuscany-itest-plugin/usage.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/css/maven-base.css create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/css/maven-theme.css create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/css/print.css create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/dependencies.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/images/collapsed.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/images/expanded.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/images/external.png create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_error_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_info_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_success_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_warning_sml.gif create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/images/logos/maven-feather.png create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/images/newwindow.png create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/index.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/integration.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/issue-tracking.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/license.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/mail-lists.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/plugin-info.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/project-info.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/project-reports.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/project-summary.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/source-repository.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/team-list.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/tuscany-war-mojo.html create mode 100644 site/trunk/site-publish/plugins/tuscany-war-plugin/usage.html create mode 100644 site/trunk/site-publish/portuguese-portal.html create mode 100644 site/trunk/site-publish/pre-packaged-or-roll-your-own.html create mode 100644 site/trunk/site-publish/privacy-policy.html create mode 100644 site/trunk/site-publish/projects-using-tuscany.html create mode 100644 site/trunk/site-publish/quick-guide-to-sca.data/calc.jpg create mode 100644 site/trunk/site-publish/quick-guide-to-sca.data/calc.jpg.jpeg create mode 100644 site/trunk/site-publish/quick-guide-to-sca.data/calc.ppt create mode 100644 site/trunk/site-publish/quick-guide-to-sca.data/component.png create mode 100644 site/trunk/site-publish/quick-guide-to-sca.data/component.png.jpeg create mode 100644 site/trunk/site-publish/quick-guide-to-sca.data/delete-calc.jpg create mode 100644 site/trunk/site-publish/quick-guide-to-sca.data/delete-calc.jpg.jpeg create mode 100644 site/trunk/site-publish/quick-guide-to-sca.data/domain.jpg create mode 100644 site/trunk/site-publish/quick-guide-to-sca.data/domain.jpg.jpeg create mode 100644 site/trunk/site-publish/quick-guide-to-sca.html create mode 100644 site/trunk/site-publish/rdb-das-architecture-guide.data/ClassDiag.jpg create mode 100644 site/trunk/site-publish/rdb-das-architecture-guide.data/ClassDiag.jpg.jpeg create mode 100644 site/trunk/site-publish/rdb-das-architecture-guide.data/rdbDAS.gif create mode 100644 site/trunk/site-publish/rdb-das-architecture-guide.data/rdbDAS.gif.jpeg create mode 100644 site/trunk/site-publish/rdb-das-architecture-guide.html create mode 100644 site/trunk/site-publish/rdb-das-c-architecture.data/DAS_lite_diagram.jpg create mode 100644 site/trunk/site-publish/rdb-das-c-architecture.data/DAS_lite_diagram.jpg.jpeg create mode 100644 site/trunk/site-publish/rdb-das-c-architecture.html create mode 100644 site/trunk/site-publish/rdb-das-c-changesummaryprocessing.html create mode 100644 site/trunk/site-publish/rdb-das-c-conventionoverconfiguration.html create mode 100644 site/trunk/site-publish/rdb-das-c-foreignkeyrepresentationandmanagement.html create mode 100644 site/trunk/site-publish/rdb-das-c-optimisticconcurrencycontrol.html create mode 100644 site/trunk/site-publish/rdb-das-c-partialupdate.html create mode 100644 site/trunk/site-publish/rdb-das-c-resultsetdrivendataobjecttypes.html create mode 100644 site/trunk/site-publish/rdb-das-c-user-guide.html create mode 100644 site/trunk/site-publish/rdb-das-c-workingwithbasiccrud.html create mode 100644 site/trunk/site-publish/rdb-das-c-workingwithoptimisticconcurrencycontrol.html create mode 100644 site/trunk/site-publish/rdb-das-c-workingwithrelationships.html create mode 100644 site/trunk/site-publish/rdb-das-c-writeoperationordering.html create mode 100644 site/trunk/site-publish/rdb-das-class-diagram.data/ClassDiag.jpg create mode 100644 site/trunk/site-publish/rdb-das-class-diagram.data/ClassDiag.jpg.jpeg create mode 100644 site/trunk/site-publish/rdb-das-class-diagram.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-changesummaryprocessing.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-conventionoverconfiguration.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-foreignkeyrepresentationandmanagement.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-optimisticconcurrencycontrol.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-partialupdate.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-resultsetdrivendataobjecttypes.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-workingwithbasiccrud.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-workingwithcompoundkeys.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-workingwithconventions.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-workingwithnamemapping.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-workingwithoptimisticconcurrencycontrol.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-workingwithrelationships.html create mode 100644 site/trunk/site-publish/rdb-das-cpp-writeoperationordering.html create mode 100644 site/trunk/site-publish/rdb-das-faq.html create mode 100644 site/trunk/site-publish/rdb-das-ideas-wish-lists-todos-etc.html create mode 100644 site/trunk/site-publish/rdb-das-java-beta1-incubating.html create mode 100644 site/trunk/site-publish/rdb-das-java-das-beta1-release.html create mode 100644 site/trunk/site-publish/rdb-das-java-das-m3-release.html create mode 100644 site/trunk/site-publish/rdb-das-java-faq.html create mode 100644 site/trunk/site-publish/rdb-das-java-previous-releases.html create mode 100644 site/trunk/site-publish/rdb-das-java.data/RDB DAS.PNG create mode 100644 site/trunk/site-publish/rdb-das-java.data/RDB DAS.PNG.jpeg create mode 100644 site/trunk/site-publish/rdb-das-java.data/rdbDAS.gif create mode 100644 site/trunk/site-publish/rdb-das-java.data/rdbDAS.gif.jpeg create mode 100644 site/trunk/site-publish/rdb-das-java.html create mode 100644 site/trunk/site-publish/rdb-das-releases.html create mode 100644 site/trunk/site-publish/rdb-das-transaction-control.html create mode 100644 site/trunk/site-publish/rdb-das-user-guide.html create mode 100644 site/trunk/site-publish/rdb-das-users-guide.html create mode 100644 site/trunk/site-publish/rdb-das.data/RDB DAS.PNG create mode 100644 site/trunk/site-publish/rdb-das.data/RDB DAS.PNG.jpeg create mode 100644 site/trunk/site-publish/rdb-das.data/rdbDAS.gif create mode 100644 site/trunk/site-publish/rdb-das.data/rdbDAS.gif.jpeg create mode 100644 site/trunk/site-publish/rdb-das.html create mode 100644 site/trunk/site-publish/related-projects.html create mode 100644 site/trunk/site-publish/release-process.html create mode 100644 site/trunk/site-publish/repeating-menu.html create mode 100644 site/trunk/site-publish/repeating-subproject-menu.html create mode 100644 site/trunk/site-publish/resources/space.css create mode 100644 site/trunk/site-publish/resultsetdrivendataobjecttypes.html create mode 100644 site/trunk/site-publish/running-the-samples.data/BigBank.Apache.Tuscany.ppt create mode 100644 site/trunk/site-publish/running-the-samples.data/DELETE.txt create mode 100644 site/trunk/site-publish/running-the-samples.data/DELETEME.txt create mode 100644 site/trunk/site-publish/running-the-samples.data/DELETEMETOO.txt create mode 100644 site/trunk/site-publish/running-the-samples.data/ModifiedCalculatorExample.pdf create mode 100644 site/trunk/site-publish/running-the-samples.data/ModifiedCalculatorExample.ppt create mode 100644 site/trunk/site-publish/running-the-samples.html create mode 100644 site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/EclipseAppConfig.png create mode 100644 site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/EclipseAppConfig.png.jpeg create mode 100644 site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/tuscany.policy create mode 100644 site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.html create mode 100644 site/trunk/site-publish/sandbox-for-website.html create mode 100644 site/trunk/site-publish/sandbox-implementation-of-sca-event-processing.html create mode 100644 site/trunk/site-publish/sandbox-sca-java.data/TuscanyJAVASCA.pdf create mode 100644 site/trunk/site-publish/sandbox-sca-java.data/TuscanyJAVASCA.ppt create mode 100644 site/trunk/site-publish/sandbox-sca-java.data/highleveloverview.PNG create mode 100644 site/trunk/site-publish/sandbox-sca-java.data/highleveloverview.PNG.jpeg create mode 100644 site/trunk/site-publish/sandbox-sca-java.html create mode 100644 site/trunk/site-publish/sandbox-sdo-java.html create mode 100644 site/trunk/site-publish/sca-c-faq.html create mode 100644 site/trunk/site-publish/sca-cpp-bindings-rest.html create mode 100644 site/trunk/site-publish/sca-cpp-dependencies.html create mode 100644 site/trunk/site-publish/sca-cpp-developers.html create mode 100644 site/trunk/site-publish/sca-cpp-environment-settings.html create mode 100644 site/trunk/site-publish/sca-cpp-users.html create mode 100644 site/trunk/site-publish/sca-cpp.html create mode 100644 site/trunk/site-publish/sca-developer-guide.data/component.png create mode 100644 site/trunk/site-publish/sca-developer-guide.data/component.png.jpeg create mode 100644 site/trunk/site-publish/sca-developer-guide.data/component.svg create mode 100644 site/trunk/site-publish/sca-developer-guide.html create mode 100644 site/trunk/site-publish/sca-downloads-remove-after-upgrade-to-new-format.html create mode 100644 site/trunk/site-publish/sca-downloads.html create mode 100644 site/trunk/site-publish/sca-general-menu.html create mode 100644 site/trunk/site-publish/sca-get-involved.html create mode 100644 site/trunk/site-publish/sca-java-090-incubating.html create mode 100644 site/trunk/site-publish/sca-java-091-incubating-release-summary.html create mode 100644 site/trunk/site-publish/sca-java-091-incubating.html create mode 100644 site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_099_06.pdf create mode 100644 site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_Rest-099_07pdf.pdf create mode 100644 site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_Rest_099_07.pdf create mode 100644 site/trunk/site-publish/sca-java-099-incubating-release-summary.html create mode 100644 site/trunk/site-publish/sca-java-099-incubating.html create mode 100644 site/trunk/site-publish/sca-java-10-incubating-release-summary.data/getting-started-1.0.pdf create mode 100644 site/trunk/site-publish/sca-java-10-incubating-release-summary.html create mode 100644 site/trunk/site-publish/sca-java-10-incubating.html create mode 100644 site/trunk/site-publish/sca-java-101-incubating-release-summary.html create mode 100644 site/trunk/site-publish/sca-java-101-incubating-release.html create mode 100644 site/trunk/site-publish/sca-java-101-incubating.html create mode 100644 site/trunk/site-publish/sca-java-11-incubating.html create mode 100644 site/trunk/site-publish/sca-java-12-incubating.html create mode 100644 site/trunk/site-publish/sca-java-121-incubating.html create mode 100644 site/trunk/site-publish/sca-java-13.html create mode 100644 site/trunk/site-publish/sca-java-131.html create mode 100644 site/trunk/site-publish/sca-java-132.html create mode 100644 site/trunk/site-publish/sca-java-14.html create mode 100644 site/trunk/site-publish/sca-java-15.html create mode 100644 site/trunk/site-publish/sca-java-151.html create mode 100644 site/trunk/site-publish/sca-java-16.html create mode 100644 site/trunk/site-publish/sca-java-161.html create mode 100644 site/trunk/site-publish/sca-java-162.html create mode 100644 site/trunk/site-publish/sca-java-1x-releases.html create mode 100644 site/trunk/site-publish/sca-java-20-beta1.html create mode 100644 site/trunk/site-publish/sca-java-20-beta2.html create mode 100644 site/trunk/site-publish/sca-java-20-beta3.html create mode 100644 site/trunk/site-publish/sca-java-20-m1.html create mode 100644 site/trunk/site-publish/sca-java-20-m2.html create mode 100644 site/trunk/site-publish/sca-java-20-m3.html create mode 100644 site/trunk/site-publish/sca-java-20-m4.html create mode 100644 site/trunk/site-publish/sca-java-20-m5.html create mode 100644 site/trunk/site-publish/sca-java-20-m51.html create mode 100644 site/trunk/site-publish/sca-java-20.html create mode 100644 site/trunk/site-publish/sca-java-2x-development-guide.html create mode 100644 site/trunk/site-publish/sca-java-2x-previous-releases.html create mode 100644 site/trunk/site-publish/sca-java-2x-releases.data/getting-started-1.0.pdf create mode 100644 site/trunk/site-publish/sca-java-2x-releases.data/getting_started_06.pdf create mode 100644 site/trunk/site-publish/sca-java-2x-releases.data/onlineStore.pdf create mode 100644 site/trunk/site-publish/sca-java-2x-releases.html create mode 100644 site/trunk/site-publish/sca-java-2x.data/distributed-abstract smallest.png create mode 100644 site/trunk/site-publish/sca-java-2x.data/distributed-abstract smallest.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-2x.data/distributed-abstract.png create mode 100644 site/trunk/site-publish/sca-java-2x.data/distributed-abstract.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-2x.data/getting_started_Rest_099_07.pdf create mode 100644 site/trunk/site-publish/sca-java-2x.data/javasca smaller.jpg create mode 100644 site/trunk/site-publish/sca-java-2x.data/javasca smaller.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-2x.data/javascaSmall2.jpg create mode 100644 site/trunk/site-publish/sca-java-2x.data/javascaSmall2.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-2x.data/tuscanylogo.jpg create mode 100644 site/trunk/site-publish/sca-java-2x.data/tuscanylogo.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-2x.html create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.doc create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.jpg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/assembly.jpg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/assembly.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap.jpg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap_seq.jpg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap_seq.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/contribution_overview.jpg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/contribution_overview.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/invokers.jpg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/invokers.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/runtime-model.jpg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/runtime-model.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/runtime-wire.jpg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/runtime-wire.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/tuscany_composite_hierarchy.jpg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-architecture-guide.html create mode 100644 site/trunk/site-publish/sca-java-architecture.data/TuscanyJAVASCAM2.pdf create mode 100644 site/trunk/site-publish/sca-java-architecture.html create mode 100644 site/trunk/site-publish/sca-java-binding-endpoints.html create mode 100644 site/trunk/site-publish/sca-java-binding-jsonrpc.html create mode 100644 site/trunk/site-publish/sca-java-bindingajax.html create mode 100644 site/trunk/site-publish/sca-java-bindingatom.html create mode 100644 site/trunk/site-publish/sca-java-bindingcorba.html create mode 100644 site/trunk/site-publish/sca-java-bindingejb.html create mode 100644 site/trunk/site-publish/sca-java-bindingerlang.html create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/high_level_design.jpg create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/high_level_design.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/scenario.jpg create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/scenario.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.html create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/high_level_design.jpg create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/high_level_design.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/scenario.jpg create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/scenario.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security-policy.html create mode 100644 site/trunk/site-publish/sca-java-bindinghttp-security.html create mode 100644 site/trunk/site-publish/sca-java-bindinghttp.html create mode 100644 site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png create mode 100644 site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-service.png create mode 100644 site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-bindingjms.data/jmstextxml-invocation-chain.png create mode 100644 site/trunk/site-publish/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-bindingjms.data/providers.png create mode 100644 site/trunk/site-publish/sca-java-bindingjms.data/providers.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-bindingjms.html create mode 100644 site/trunk/site-publish/sca-java-bindingjsonrpc.html create mode 100644 site/trunk/site-publish/sca-java-bindingrmi.html create mode 100644 site/trunk/site-publish/sca-java-bindingrss.html create mode 100644 site/trunk/site-publish/sca-java-bindingws.html create mode 100644 site/trunk/site-publish/sca-java-definitionsxml.html create mode 100644 site/trunk/site-publish/sca-java-developer-reference.html create mode 100644 site/trunk/site-publish/sca-java-development-guide-osgi.html create mode 100644 site/trunk/site-publish/sca-java-development-guide.html create mode 100644 site/trunk/site-publish/sca-java-development.html create mode 100644 site/trunk/site-publish/sca-java-documentation.html create mode 100644 site/trunk/site-publish/sca-java-event-processing.html create mode 100644 site/trunk/site-publish/sca-java-extension-developer-guide.data/ExtendingTuscany.ppt create mode 100644 site/trunk/site-publish/sca-java-extension-developer-guide.html create mode 100644 site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany-V01.pdf create mode 100644 site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany.pdf create mode 100644 site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany.ppt create mode 100644 site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany1.pdf create mode 100644 site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany1.ppt create mode 100644 site/trunk/site-publish/sca-java-extension-development-guide.html create mode 100644 site/trunk/site-publish/sca-java-extension-guide.html create mode 100644 site/trunk/site-publish/sca-java-extension-modules.html create mode 100644 site/trunk/site-publish/sca-java-found-a-bug.html create mode 100644 site/trunk/site-publish/sca-java-get-involved.html create mode 100644 site/trunk/site-publish/sca-java-get-started-with-coding.html create mode 100644 site/trunk/site-publish/sca-java-getting-started-guides-1x.html create mode 100644 site/trunk/site-publish/sca-java-getting-started-guides.html create mode 100644 site/trunk/site-publish/sca-java-hostembedded.html create mode 100644 site/trunk/site-publish/sca-java-hostgeronimo.html create mode 100644 site/trunk/site-publish/sca-java-hostweblogic.html create mode 100644 site/trunk/site-publish/sca-java-hostwebsphere.html create mode 100644 site/trunk/site-publish/sca-java-implementationbpel.html create mode 100644 site/trunk/site-publish/sca-java-implementationdas.html create mode 100644 site/trunk/site-publish/sca-java-implementationjava.html create mode 100644 site/trunk/site-publish/sca-java-implementationjpa.html create mode 100644 site/trunk/site-publish/sca-java-implementationosgi.html create mode 100644 site/trunk/site-publish/sca-java-implementationresource.html create mode 100644 site/trunk/site-publish/sca-java-implementationscript.html create mode 100644 site/trunk/site-publish/sca-java-implementationspring.html create mode 100644 site/trunk/site-publish/sca-java-implementationweb.html create mode 100644 site/trunk/site-publish/sca-java-implementationwidget.html create mode 100644 site/trunk/site-publish/sca-java-implementationxquery.html create mode 100644 site/trunk/site-publish/sca-java-incubating-m1.html create mode 100644 site/trunk/site-publish/sca-java-incubator-m2.html create mode 100644 site/trunk/site-publish/sca-java-interfacewsdl.html create mode 100644 site/trunk/site-publish/sca-java-modules-dependencies.html create mode 100644 site/trunk/site-publish/sca-java-news-page.html create mode 100644 site/trunk/site-publish/sca-java-next-release.html create mode 100644 site/trunk/site-publish/sca-java-previous-releases.html create mode 100644 site/trunk/site-publish/sca-java-releases.data/getting-started-1.0.pdf create mode 100644 site/trunk/site-publish/sca-java-releases.data/getting_started_06.pdf create mode 100644 site/trunk/site-publish/sca-java-releases.data/onlineStore.pdf create mode 100644 site/trunk/site-publish/sca-java-releases.html create mode 100644 site/trunk/site-publish/sca-java-roadmap.html create mode 100644 site/trunk/site-publish/sca-java-sandbox.html create mode 100644 site/trunk/site-publish/sca-java-subproject-menu.html create mode 100644 site/trunk/site-publish/sca-java-subproject.data/tuscanylogo.jpg create mode 100644 site/trunk/site-publish/sca-java-subproject.data/tuscanylogo.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-subproject.html create mode 100644 site/trunk/site-publish/sca-java-tools-guides.html create mode 100644 site/trunk/site-publish/sca-java-travel-sample-10.html create mode 100644 site/trunk/site-publish/sca-java-travel-sample-1x-releases.html create mode 100644 site/trunk/site-publish/sca-java-tutorial.html create mode 100644 site/trunk/site-publish/sca-java-ug-introduction.html create mode 100644 site/trunk/site-publish/sca-java-ug-obtaining-tuscanys-java-sca-implementation.html create mode 100644 site/trunk/site-publish/sca-java-user-documenations.html create mode 100644 site/trunk/site-publish/sca-java-user-guide-introduction.html create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks.jpg create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks2.jpg create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks2.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/calculator.png create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/calculator.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/calculator1.png create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/calculator1.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/calculator2.png create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/calculator2.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/calculator3.png create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/calculator3.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/distributed-abstract.png create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/distributed-abstract.png.jpeg create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/java_imp.jpg create mode 100644 site/trunk/site-publish/sca-java-user-guide.data/java_imp.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java-user-guide.html create mode 100644 site/trunk/site-publish/sca-java-user-reference.html create mode 100644 site/trunk/site-publish/sca-java-web-applications.html create mode 100644 site/trunk/site-publish/sca-java-whats-new.html create mode 100644 site/trunk/site-publish/sca-java-wish-list.html create mode 100644 site/trunk/site-publish/sca-java-work-in-progress.html create mode 100644 site/trunk/site-publish/sca-java.data/distributed-abstract smallest.png create mode 100644 site/trunk/site-publish/sca-java.data/distributed-abstract smallest.png.jpeg create mode 100644 site/trunk/site-publish/sca-java.data/distributed-abstract.png create mode 100644 site/trunk/site-publish/sca-java.data/distributed-abstract.png.jpeg create mode 100644 site/trunk/site-publish/sca-java.data/getting_started_Rest_099_07.pdf create mode 100644 site/trunk/site-publish/sca-java.data/javasca smaller.jpg create mode 100644 site/trunk/site-publish/sca-java.data/javasca smaller.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java.data/javascaSmall2.jpg create mode 100644 site/trunk/site-publish/sca-java.data/javascaSmall2.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java.data/tuscanylogo.jpg create mode 100644 site/trunk/site-publish/sca-java.data/tuscanylogo.jpg.jpeg create mode 100644 site/trunk/site-publish/sca-java.html create mode 100644 site/trunk/site-publish/sca-jumpstart.html create mode 100644 site/trunk/site-publish/sca-menu.html create mode 100644 site/trunk/site-publish/sca-native-architecture-guide.html create mode 100644 site/trunk/site-publish/sca-native-developer-guide.html create mode 100644 site/trunk/site-publish/sca-native-documentation-menu.html create mode 100644 site/trunk/site-publish/sca-native-faq.html create mode 100644 site/trunk/site-publish/sca-native-found-a-bug.html create mode 100644 site/trunk/site-publish/sca-native-get-involved.html create mode 100644 site/trunk/site-publish/sca-native-incubator-m2.html create mode 100644 site/trunk/site-publish/sca-native-incubator-m3.html create mode 100644 site/trunk/site-publish/sca-native-previous-releases.html create mode 100644 site/trunk/site-publish/sca-native-releases.html create mode 100644 site/trunk/site-publish/sca-native-subproject-menu.html create mode 100644 site/trunk/site-publish/sca-native-subproject.html create mode 100644 site/trunk/site-publish/sca-native-user-guide.html create mode 100644 site/trunk/site-publish/sca-native-work-in-progress.html create mode 100644 site/trunk/site-publish/sca-native.html create mode 100644 site/trunk/site-publish/sca-overview-sandbox.html create mode 100644 site/trunk/site-publish/sca-overview.data/Tuscany-Overview-0407.pdf create mode 100644 site/trunk/site-publish/sca-overview.data/getting_started_Rest_099_07.pdf create mode 100644 site/trunk/site-publish/sca-overview.html create mode 100644 site/trunk/site-publish/sca-releases.html create mode 100644 site/trunk/site-publish/sca-subproject-menu.html create mode 100644 site/trunk/site-publish/sca-videos.html create mode 100644 site/trunk/site-publish/sca.data/SCA_AssemblyModel_V100???.pdf create mode 100644 "site/trunk/site-publish/sca.data/SCA_AssemblyModel_V100\344\270\255\346\226\207\347\211\210.pdf" create mode 100644 site/trunk/site-publish/sca.data/SCA_JavaAnnotationsAndAPIs???.pdf create mode 100644 "site/trunk/site-publish/sca.data/SCA_JavaAnnotationsAndAPIs\344\270\255\346\226\207\347\211\210.pdf" create mode 100644 site/trunk/site-publish/sca.data/SCA_JavaComponentImplementation_V100???.pdf create mode 100644 "site/trunk/site-publish/sca.data/SCA_JavaComponentImplementation_V100\344\270\255\346\226\207\347\211\210.pdf" create mode 100644 site/trunk/site-publish/sca.html create mode 100644 site/trunk/site-publish/scajava-tutorial.html create mode 100644 site/trunk/site-publish/scajavabusinessexceptions.html create mode 100644 site/trunk/site-publish/sdo-10-incubating.html create mode 100644 site/trunk/site-publish/sdo-c-documentation-menu.html create mode 100644 site/trunk/site-publish/sdo-c-get-involved.html create mode 100644 site/trunk/site-publish/sdo-c-releases.html create mode 100644 site/trunk/site-publish/sdo-c-subproject-menu.html create mode 100644 site/trunk/site-publish/sdo-cpp-documentation-menu.html create mode 100644 site/trunk/site-publish/sdo-cpp-faq.html create mode 100644 site/trunk/site-publish/sdo-cpp-found-a-bug.html create mode 100644 site/trunk/site-publish/sdo-cpp-get-involved.html create mode 100644 site/trunk/site-publish/sdo-cpp.html create mode 100644 site/trunk/site-publish/sdo-cts-overview.html create mode 100644 site/trunk/site-publish/sdo-cts.html create mode 100644 site/trunk/site-publish/sdo-das-menu.html create mode 100644 site/trunk/site-publish/sdo-downloads.html create mode 100644 site/trunk/site-publish/sdo-general-menu.html create mode 100644 site/trunk/site-publish/sdo-general.html create mode 100644 site/trunk/site-publish/sdo-java-10-incubating-beta1.html create mode 100644 site/trunk/site-publish/sdo-java-10-incubating-release-summary.html create mode 100644 site/trunk/site-publish/sdo-java-10-incubating.html create mode 100644 site/trunk/site-publish/sdo-java-11-incubating-release-summary.html create mode 100644 site/trunk/site-publish/sdo-java-11-incubating.html create mode 100644 site/trunk/site-publish/sdo-java-111-release-summary.html create mode 100644 site/trunk/site-publish/sdo-java-111.html create mode 100644 site/trunk/site-publish/sdo-java-architecture-guide.html create mode 100644 site/trunk/site-publish/sdo-java-documentation-menu.html create mode 100644 site/trunk/site-publish/sdo-java-documents.html create mode 100644 site/trunk/site-publish/sdo-java-download.html create mode 100644 site/trunk/site-publish/sdo-java-found-a-bug.html create mode 100644 site/trunk/site-publish/sdo-java-get-involved.html create mode 100644 site/trunk/site-publish/sdo-java-incubating-m1.html create mode 100644 site/trunk/site-publish/sdo-java-incubating-m2.html create mode 100644 site/trunk/site-publish/sdo-java-issue-tracking.html create mode 100644 site/trunk/site-publish/sdo-java-m3.html create mode 100644 site/trunk/site-publish/sdo-java-news.html create mode 100644 site/trunk/site-publish/sdo-java-previous-releases.html create mode 100644 site/trunk/site-publish/sdo-java-releases.html create mode 100644 site/trunk/site-publish/sdo-java-source-code.html create mode 100644 site/trunk/site-publish/sdo-java-subproject-menu.html create mode 100644 site/trunk/site-publish/sdo-java-user-guide.html create mode 100644 site/trunk/site-publish/sdo-java-whats-new.html create mode 100644 site/trunk/site-publish/sdo-java-whats-to-be-done.html create mode 100644 site/trunk/site-publish/sdo-java.data/do_uml.png create mode 100644 site/trunk/site-publish/sdo-java.data/do_uml.png.jpeg create mode 100644 site/trunk/site-publish/sdo-java.data/meta.png create mode 100644 site/trunk/site-publish/sdo-java.data/meta.png.jpeg create mode 100644 site/trunk/site-publish/sdo-java.data/meta2.png create mode 100644 site/trunk/site-publish/sdo-java.data/meta2.png.jpeg create mode 100644 site/trunk/site-publish/sdo-java.html create mode 100644 site/trunk/site-publish/sdo-overview-menu.html create mode 100644 site/trunk/site-publish/sdo-overview-sandbox.html create mode 100644 site/trunk/site-publish/sdo-overview.data/sdo_soa_sm.jpg create mode 100644 site/trunk/site-publish/sdo-overview.data/sdo_soa_sm.jpg.jpeg create mode 100644 site/trunk/site-publish/sdo-overview.data/sdocontext_sm.jpg create mode 100644 site/trunk/site-publish/sdo-overview.data/sdocontext_sm.jpg.jpeg create mode 100644 site/trunk/site-publish/sdo-overview.html create mode 100644 site/trunk/site-publish/sdo-php.html create mode 100644 site/trunk/site-publish/sdo-project-code-structure.data/do_uml.png create mode 100644 site/trunk/site-publish/sdo-project-code-structure.data/do_uml.png.jpeg create mode 100644 site/trunk/site-publish/sdo-project-code-structure.data/meta.png create mode 100644 site/trunk/site-publish/sdo-project-code-structure.data/meta.png.jpeg create mode 100644 site/trunk/site-publish/sdo-project-code-structure.data/meta2.png create mode 100644 site/trunk/site-publish/sdo-project-code-structure.data/meta2.png.jpeg create mode 100644 site/trunk/site-publish/sdo-project-code-structure.html create mode 100644 site/trunk/site-publish/sdo-releases.html create mode 100644 site/trunk/site-publish/sdo.html create mode 100644 site/trunk/site-publish/security-aware-programming-in-tuscany.data/VideoIcon.jpg create mode 100644 site/trunk/site-publish/security-aware-programming-in-tuscany.data/VideoIcon.jpg.jpeg create mode 100644 site/trunk/site-publish/security-aware-programming-in-tuscany.data/apache-feather.gif create mode 100644 site/trunk/site-publish/security-aware-programming-in-tuscany.data/apache-feather.gif.jpeg create mode 100644 site/trunk/site-publish/security-aware-programming-in-tuscany.html create mode 100644 site/trunk/site-publish/set-up-sdo-development-environment.html create mode 100644 site/trunk/site-publish/setting-up-an-sca-developer-environment.html create mode 100644 site/trunk/site-publish/setting-up-ssh.html create mode 100644 site/trunk/site-publish/simplemenu.html create mode 100644 site/trunk/site-publish/spring.html create mode 100644 site/trunk/site-publish/standalone-sca-domain.data/calculator-standalone.png create mode 100644 site/trunk/site-publish/standalone-sca-domain.data/calculator-standalone.png.jpeg create mode 100644 site/trunk/site-publish/standalone-sca-domain.data/single-node-abstract.png create mode 100644 site/trunk/site-publish/standalone-sca-domain.data/single-node-abstract.png.jpeg create mode 100644 site/trunk/site-publish/standalone-sca-domain.html create mode 100644 site/trunk/site-publish/starting-with-das.html create mode 100644 site/trunk/site-publish/subproject-menus.html create mode 100644 site/trunk/site-publish/subprojects.html create mode 100644 site/trunk/site-publish/survey.html create mode 100644 site/trunk/site-publish/surveythanks.html create mode 100644 site/trunk/site-publish/technology-release.html create mode 100644 site/trunk/site-publish/temp-technology-release.html create mode 100644 site/trunk/site-publish/test-home-2.html create mode 100644 site/trunk/site-publish/test-home.html create mode 100644 site/trunk/site-publish/testhome2table.html create mode 100644 site/trunk/site-publish/to-be-deleted.html create mode 100644 site/trunk/site-publish/tools-install-the-latest-tuscany-eclipse-plugin.html create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update.jpg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update.jpg.jpeg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_license.jpg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_license.jpg.jpeg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_verification.jpg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_verification.jpg.jpeg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_finish.jpg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_finish.jpg.jpeg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_installation.jpg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_installation.jpg.jpeg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_new_site.jpg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_new_site.jpg.jpeg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_restart_eclipse.jpg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_restart_eclipse.jpg.jpeg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_search_results.jpg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_search_results.jpg.jpeg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_sites.jpg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_sites.jpg.jpeg create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.html create mode 100644 site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-12.html create mode 100644 site/trunk/site-publish/transaction-intents-and-transaction-manager-support.html create mode 100644 site/trunk/site-publish/trash.html create mode 100644 site/trunk/site-publish/tuscany-anniversary.html create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap.jpg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap_seq.jpg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap_seq.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/component.jpg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/component.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/model.jpg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/model.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_composite_hierarchy.jpg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_layers.jpg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_layers.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-architecture-guide.html create mode 100644 site/trunk/site-publish/tuscany-books-and-articles.data/S313731-DataBinding.pdf create mode 100644 site/trunk/site-publish/tuscany-books-and-articles.data/tuscany-in-action.jpg create mode 100644 site/trunk/site-publish/tuscany-books-and-articles.data/tuscany-in-action.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-books-and-articles.html create mode 100644 site/trunk/site-publish/tuscany-cwiki-development-guideline.data/WebsiteStructure.JPG create mode 100644 site/trunk/site-publish/tuscany-cwiki-development-guideline.data/WebsiteStructure.JPG.jpeg create mode 100644 site/trunk/site-publish/tuscany-cwiki-development-guideline.html create mode 100644 site/trunk/site-publish/tuscany-cwiki-website-structure.data/WebsiteStructure.JPG create mode 100644 site/trunk/site-publish/tuscany-cwiki-website-structure.data/WebsiteStructure.JPG.jpeg create mode 100644 site/trunk/site-publish/tuscany-cwiki-website-structure.html create mode 100644 site/trunk/site-publish/tuscany-das-faq.html create mode 100644 site/trunk/site-publish/tuscany-dashboard.html create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_components.jpg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_components.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_graph.jpg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_graph.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_operation.jpg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_operation.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_property.jpg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_property.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_reference.jpg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_reference.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_scenario.jpg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_scenario.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_service.jpg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/databinding_service.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/wrapper_transformation.jpg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.data/wrapper_transformation.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscany-databinding-guide.html create mode 100644 site/trunk/site-publish/tuscany-downloads-documentations.html create mode 100644 site/trunk/site-publish/tuscany-downloads.html create mode 100644 site/trunk/site-publish/tuscany-downloads2-java-sca.html create mode 100644 site/trunk/site-publish/tuscany-downloads2-java-sdo.html create mode 100644 site/trunk/site-publish/tuscany-downloads2.html create mode 100644 site/trunk/site-publish/tuscany-maven-archetypes.html create mode 100644 site/trunk/site-publish/tuscany-portal.html create mode 100644 site/trunk/site-publish/tuscany-sca-databinding-faq.html create mode 100644 site/trunk/site-publish/tuscany-sca-faq.html create mode 100644 site/trunk/site-publish/tuscany-sca-java-developer-guide.html create mode 100644 site/trunk/site-publish/tuscany-sca-java-extension-developer-guide.html create mode 100644 site/trunk/site-publish/tuscany-sca-java-faq.html create mode 100644 site/trunk/site-publish/tuscany-sca-web-application-integration-story.html create mode 100644 site/trunk/site-publish/tuscany-sdo-cpp-faq.html create mode 100644 site/trunk/site-publish/tuscany-sdo-faq.html create mode 100644 site/trunk/site-publish/tuscany-sdo-java-faq.html create mode 100644 site/trunk/site-publish/tuscany-subprojects.html create mode 100644 site/trunk/site-publish/tuscany-tomcat-distribution.html create mode 100644 site/trunk/site-publish/tuscany-war-dirstribution.html create mode 100644 site/trunk/site-publish/tuscany-war-distribution.html create mode 100644 site/trunk/site-publish/tuscany-website-development-guideline.html create mode 100644 site/trunk/site-publish/tuscanydownloads2.html create mode 100644 site/trunk/site-publish/tuscanylogos.data/Balloons150.gif create mode 100644 site/trunk/site-publish/tuscanylogos.data/Balloons150.gif.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Balloons150.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Balloons150.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Balloons300.gif create mode 100644 site/trunk/site-publish/tuscanylogos.data/Balloons300.gif.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Bell_Tower_Image.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Bell_Tower_Image.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Cake150.gif create mode 100644 site/trunk/site-publish/tuscanylogos.data/Cake150.gif.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Cake150.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Cake150.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Cake300.gif create mode 100644 site/trunk/site-publish/tuscanylogos.data/Cake300.gif.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.gif create mode 100644 site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.gif.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog300.gif create mode 100644 site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog300.gif.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Hat150.gif create mode 100644 site/trunk/site-publish/tuscanylogos.data/Hat150.gif.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Hat150.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Hat150.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Hat300.gif create mode 100644 site/trunk/site-publish/tuscanylogos.data/Hat300.gif.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Present150.gif create mode 100644 site/trunk/site-publish/tuscanylogos.data/Present150.gif.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Present150.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Present150.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Present300.gif create mode 100644 site/trunk/site-publish/tuscanylogos.data/Present300.gif.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Road-with-Cypress-Tree-Sun-and-Moon.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/Road-with-Cypress-Tree-Sun-and-Moon.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogo100.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogo100.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogo200.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogo200.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogo400.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogo400.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogo800.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogo800.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoBalloons.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoBalloons.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoCake.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoCake.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoHat.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoHat.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoNEW.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoNEW.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoOLD.png create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoOLD.png.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoPresent.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoPresent.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoSmall.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyLogoSmall.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyTower.jpg create mode 100644 site/trunk/site-publish/tuscanylogos.data/TuscanyTower.jpg.jpeg create mode 100644 site/trunk/site-publish/tuscanylogos.html create mode 100644 site/trunk/site-publish/tuscanytuscanyjavadas-java-overviewimproved-logging.html create mode 100644 site/trunk/site-publish/user-guide.html create mode 100644 site/trunk/site-publish/using-sdo-java.html create mode 100644 site/trunk/site-publish/web-sample.html create mode 100644 site/trunk/site-publish/whats-new-in-das-java.html create mode 100644 site/trunk/site-publish/whats-new-in-das.html create mode 100644 site/trunk/site-publish/whats-new-sca-java.html create mode 100644 site/trunk/site-publish/whats-new.html create mode 100644 site/trunk/site-publish/working-in-open-source.data/Getting Involved In Apache Projects.pdf create mode 100644 site/trunk/site-publish/working-in-open-source.data/Getting Involved In Apache Projects.ppt create mode 100644 site/trunk/site-publish/working-in-open-source.data/Learning Open Source.pdf create mode 100644 site/trunk/site-publish/working-in-open-source.data/Working With Apache Tuscany-workshop.pdf create mode 100644 site/trunk/site-publish/working-in-open-source.data/Working With Apache Tuscany-workshop.ppt create mode 100644 site/trunk/site-publish/working-in-open-source.html create mode 100644 site/trunk/site-publish/workingwithbasiccrud.html create mode 100644 site/trunk/site-publish/workingwithcolumnconverters.html create mode 100644 site/trunk/site-publish/workingwithcompoundkeys.html create mode 100644 site/trunk/site-publish/workingwithconventions.html create mode 100644 site/trunk/site-publish/workingwithgenerateddatabasekeys.html create mode 100644 site/trunk/site-publish/workingwithnamemapping.html create mode 100644 site/trunk/site-publish/workingwithoptimisticconcurrencycontrol.html create mode 100644 site/trunk/site-publish/workingwithpaging.html create mode 100644 site/trunk/site-publish/workingwithrelationships.html create mode 100644 site/trunk/site-publish/workingwithstaticdataobjects.html create mode 100644 site/trunk/site-publish/workingwithstoredprocedures.html create mode 100644 site/trunk/site-publish/workingwithtransactions.html create mode 100644 site/trunk/site-publish/writeoperationordering.html create mode 100644 site/trunk/site-publish/xquery-java-das.html diff --git a/site/trunk/site-publish/2.html b/site/trunk/site-publish/2.html new file mode 100644 index 0000000000..d2f886b54a --- /dev/null +++ b/site/trunk/site-publish/2.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : 2 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > 2 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/2007/02/07/news.html b/site/trunk/site-publish/2007/02/07/news.html new file mode 100644 index 0000000000..667b3e0c7a --- /dev/null +++ b/site/trunk/site-publish/2007/02/07/news.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : news? + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > 2007 > 02 > 07 > news? + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

what is news feature?

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/2008/11/11/menuall.html b/site/trunk/site-publish/2008/11/11/menuall.html new file mode 100644 index 0000000000..db7d392c2a --- /dev/null +++ b/site/trunk/site-publish/2008/11/11/menuall.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : MenuAll + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > 2008 > 11 > 11 > MenuAll + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

subproject

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/adding-the-spring-component-type.html b/site/trunk/site-publish/adding-the-spring-component-type.html new file mode 100644 index 0000000000..e8542603fb --- /dev/null +++ b/site/trunk/site-publish/adding-the-spring-component-type.html @@ -0,0 +1,157 @@ + + + + + + + Adding the Spring Component Type : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Extension Development Guide > Mike Edwards Ramble through Adding a New Component Type > Adding the Spring Component Type + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

(3rd May 2007) This pages and the pages hung off it describe the creation of the module which supports the Spring Component Type that I am working on for a demo. This might be useful to anyone looking to build their own Component Type implementation.

+ +

Sequence

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Order Work Item
Comment
0
implementation-spring module created
+
+org.apache.tuscany.implementation.spring package
 
1 Created ModuleActivator file
 
2 Create SpringModuleActivator class  
3
Create SpringArtifactProcessor class
Reads the implementation.spring xml
+ - one required attribute = location, which specifies the location of the Spring application context
+ Creates the implementationSpring instance
+ Initiates resolution of the componentType of the Spring application context
   
   
   
   
   
   
+ +

ModuleActivator file

+ +

Placed into the resources/META-INF/services directory:

+
+
# Implementation class for the ExtensionActivator
+org.apache.tuscany.implementation.script.ScriptModuleActivator
+
+ +

Resolution of the ComponentType of Spring application context

+ +

ComponentType of the Spring application-context is performed by reading the application-context.xml file and by introspecting the Java beans which it references. 

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/adding-the-spring-implementation-type.html b/site/trunk/site-publish/adding-the-spring-implementation-type.html new file mode 100644 index 0000000000..e9718e06cc --- /dev/null +++ b/site/trunk/site-publish/adding-the-spring-implementation-type.html @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + Apache Tuscany : Adding the Spring Implementation Type + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Extension Development Guide > Mike Edwards Ramble through Adding a New Implementation Type > Adding the Spring Implementation Type + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

(3rd May 2007) This pages and the pages hung off it describe the creation of the module which supports the Spring Component Type that I am working on for a demo. This might be useful to anyone looking to build their own Component Type implementation.

+ +

Sequence

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Order Work Item
Comment
0
implementation-spring module created
+
+org.apache.tuscany.implementation.spring package
 
1 Created ModuleActivator file
Points at the SpringModuleActivator class
2 Create SpringModuleActivator class Core of the Spring implementation module
3
Create SpringArtifactProcessor class
Reads the implementation.spring xml in the composite file
+ - one required attribute = location, which specifies the location of the Spring application context
+ Creates the implementationSpring instance
+ Initiates resolution of the componentType of the Spring application context by calling SpringXMLComponentTypeLoader
4
Create SpringXMLComponentTypeLoader class
Reads the Spring application context and introspects the Beans referenced from it to determine the component type of the Spring implementation (ie Services, References, Properties)
   
   
   
   
   
+
+ + +

ModuleActivator file

+ +

Placed into the resources/META-INF/services directory:

+
+
# Implementation class for the ExtensionActivator
+org.apache.tuscany.implementation.script.ScriptModuleActivator
+
+
+ +

SpringModuleActivator class 

+ + +

Constructor

+ +

Creates resources used by other parts of the Module implementation:

+
    +
  • AssemblyFactory
  • +
  • JavaInterfaceFactory
  • +
  • PolicyFactory
  • +
+ + +

start()

+ +

Takes an ExtensionPointRegistry as input parameter, which provides access to configuration of the core.

+
    +
  • Creates a SpringArtifactProcessor and adds to the registry StAXArtifactProcessors
  • +
  • Creates a SpringImplementationProviderFactory and adds to the registry ProviderFactories
  • +
+ + +

Creates a series of artifacts that are required by the SpringArtifactProcessor and SpringImplementationProviderFactory:

+
    +
  • ExtensibleJavaInterfaceIntrospector (used to introspect Spring Beans)
  • +
  • JavaPropertyValueObjectFactory
  • +
+ + +

stop()

+ +

Removes the SpringArtifactProcessor from the registry StAXArtifactProcessors 

+ +

getExtensionPoints() 

+ +

Returns a very simple DefaultJavaClassIntrospectorExtensionPoint. 

+ +

SpringArtifactProcessor class 

+ +

Handles the <implementation.spring..../> element used in composite files.

+ +

Constructor

+ +

Takes a series of classes used  in loading & resolution:

+
    +
  • AssemblyFactory
  • +
  • JavaInterfaceFactory
  • +
  • JavaInterfaceIntrospector
  • +
  • PolicyFactory 
  • +
  • JavaPropertyValueObjectFactor
  • +
+ + +

read()

+ +

Reads the <implementation.spring.../> element from the composite.

+ +

Gets the location attribute - throws an exception if the attribute is missing. 

+ +

Creates a SpringImplementation instance, sets its location field and returns it. 

+ +

resolve() 

+ +

Given the SpringImplementation instance and a ModelResolver, gets the ComponentType for the implementation.

+ +

Does this by invoking  SpringXMLComponentTypeLoader.load() - will follow up by reading a side file if this does not fully resolve the component type.

+ + +

getArtifactType() 

+ +

Returns the fully qualified name of the implementation.spring element (includes the SCA namespace...)  

+ +

 SpringXMLComponentTypeLoader class

+ + +
    +
  1.  
  2. +
+ + +

Resolution of the ComponentType of Spring application context

+ +

ComponentType of the Spring application-context is performed by reading the application-context.xml file and by introspecting the Java beans which it references. This is done by the SpringXMLComponentTypeLoader class.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/all.html b/site/trunk/site-publish/all.html new file mode 100644 index 0000000000..a55cc6c487 --- /dev/null +++ b/site/trunk/site-publish/all.html @@ -0,0 +1,78 @@ + + + + + + + All : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > All + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/archetype-catalog.xml b/site/trunk/site-publish/archetype-catalog.xml new file mode 100644 index 0000000000..15e2fe7eea --- /dev/null +++ b/site/trunk/site-publish/archetype-catalog.xml @@ -0,0 +1,52 @@ + + + + org.apache.tuscany.sca + tuscany-contribution-jar + 2.0-SNAPSHOT + Create an SCA JAR contribution project + + + org.apache.tuscany.sca + tuscany-contribution-zip + 2.0-SNAPSHOT + Create an SCA ZIP contribution project + + + org.apache.tuscany.sca + tuscany-quickstart + 2.0-SNAPSHOT + Create a simple SCA webapp project + + + org.apache.tuscany.sca + tuscany-quickstart-jsf + 2.0-SNAPSHOT + Create a Webapp using SCA and JSF + + + org.apache.tuscany.sca + tuscany-quickstart-bpel + 2.0-SNAPSHOT + Create a Webapp using SCA and BPEL + + + org.apache.tuscany.sca + tuscany-quickstart-jsonp + 2.0-SNAPSHOT + Create a Webapp using SCA and JSONP + + + org.apache.tuscany.sca + tuscany-quickstart-stripes + 2.0-SNAPSHOT + Create a Webapp using SCA and the Stripes Web Framework + + + org.apache.tuscany.sca + tuscany-binding-archetype + 2.0-SNAPSHOT + Create a Tuscany binding extension project + + + \ No newline at end of file diff --git a/site/trunk/site-publish/archetypes/archetype-catalog.xml b/site/trunk/site-publish/archetypes/archetype-catalog.xml new file mode 100644 index 0000000000..e332b83465 --- /dev/null +++ b/site/trunk/site-publish/archetypes/archetype-catalog.xml @@ -0,0 +1,16 @@ + + + + org.apache.tuscany.sca + tuscany-quickstart + 2.0-SNAPSHOT + Create a simple Tuscany SCA webapp project + + + org.apache.tuscany.sca + tuscany-quickstart-stripes + 2.0-SNAPSHOT + Create a simple Tuscany SCA and Stripes Web Framework project + + + \ No newline at end of file diff --git a/site/trunk/site-publish/architecture-guide.html b/site/trunk/site-publish/architecture-guide.html new file mode 100644 index 0000000000..ba9ca7e970 --- /dev/null +++ b/site/trunk/site-publish/architecture-guide.html @@ -0,0 +1,133 @@ + + + + + + + Architecture Guide : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Documentation Menu > Architecture Guide + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + +

High level architecture view of SCA Native

+ +

Tuscany SCA Native consists of the kernel and extensions.

+ +

The kernel loads any .composite, .xsd, .wsdl or
+.componentType files found under a directory defined by the
+TUSCANY_SCACPP_ROOT environment variable. The kernel also loads any
+extensions found in the Tuscany extensions directory (found in the
+directory specified by the TUSCANY_SCACPP env variable). The kernel
+inspects the .composite files and checks that any required extensions
+that the SCA app uses are loaded, works out how the components are
+wired together, and then passes the details of the composite to the
+appropriate extensions. E.g. if the SCDL contains a
+<implementation.python> element, the contents of that element are
+passed to the Python extension which will load a defined script, etc.
+When the SCA app is invoked (via a local client call or a SOAP or REST
+service binding being called) the kernel uses the appropriate
+extension to invoke the right methods in the component implementation
+code.

+ +

The language binding extensions (C++, Ruby, Python, PHP) provide
+wrapper and proxy code. The wrapper code wraps the component
+implemented in that language, initialising the component
+implementation, converting method arguments to the correct types and
+invoking the defined method with the converted arguments. The proxy
+code allows the component to call it's references, providing objects
+that look like standard objects in the component language, but which,
+when called, convert the method arguments from the language types and
+invoke the referenced component's wrapper code to invoke the component
+itself.

+ +

The service and reference binding extensions (SOAP/Axis2C, REST)
+provide service and reference code. The service code allows Tuscany to
+run within a container as a service that can be invoked (e.g. as an
+Axis2C SOAP web service). The reference code allows Tuscany to call
+other services (that may or may not be other Tuscany services) using
+that technology to make the call out (e.g. a SOAP call to a Web
+Service).
+See the various samples we have for examples of all this.

+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/assembly-model-for-event-processing.data/Component_Diagram.jpg b/site/trunk/site-publish/assembly-model-for-event-processing.data/Component_Diagram.jpg new file mode 100644 index 0000000000..2812734d83 Binary files /dev/null and b/site/trunk/site-publish/assembly-model-for-event-processing.data/Component_Diagram.jpg differ diff --git a/site/trunk/site-publish/assembly-model-for-event-processing.data/Component_Diagram.jpg.jpeg b/site/trunk/site-publish/assembly-model-for-event-processing.data/Component_Diagram.jpg.jpeg new file mode 100644 index 0000000000..d94aa9c136 Binary files /dev/null and b/site/trunk/site-publish/assembly-model-for-event-processing.data/Component_Diagram.jpg.jpeg differ diff --git a/site/trunk/site-publish/assembly-model-for-event-processing.data/Producer_linked_to_Consumer.jpg b/site/trunk/site-publish/assembly-model-for-event-processing.data/Producer_linked_to_Consumer.jpg new file mode 100644 index 0000000000..1be892bd55 Binary files /dev/null and b/site/trunk/site-publish/assembly-model-for-event-processing.data/Producer_linked_to_Consumer.jpg differ diff --git a/site/trunk/site-publish/assembly-model-for-event-processing.data/Producer_linked_to_Consumer.jpg.jpeg b/site/trunk/site-publish/assembly-model-for-event-processing.data/Producer_linked_to_Consumer.jpg.jpeg new file mode 100644 index 0000000000..ed3b4b93e5 Binary files /dev/null and b/site/trunk/site-publish/assembly-model-for-event-processing.data/Producer_linked_to_Consumer.jpg.jpeg differ diff --git a/site/trunk/site-publish/assembly-model-for-event-processing.html b/site/trunk/site-publish/assembly-model-for-event-processing.html new file mode 100644 index 0000000000..a997b91cc4 --- /dev/null +++ b/site/trunk/site-publish/assembly-model-for-event-processing.html @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + Apache Tuscany : Assembly Model for Event Processing + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Event Processing > Assembly Model for Event Processing + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

This page describes the SCA Assembly model for event processing.

+ +

The SCA Assembly model for Event Processing is an extension of the standard SCA Assembly model. All the standard SCA Assembly model features continue to be available. The Event Processing model adds the following extensions:

+
    +
  • Component Type is extended so that the Component Type can have zero or more <producer/> elements and zero or more <consumer/> elements, alongside <service/> and <reference/> elements
  • +
  • Component elements are extended so that a Component can have zero or more <consumer/> elements and zero or more <producer/> elements, which can be used to configure the consumer and producer elements of the implementation used by the Component
  • +
  • Component producers can be linked to component consumers in the assembly through @target attribute in the component producer elements or @source attribute in the component consumer elements
  • +
+ + +

Component Type - Event Processing Extensions

+ +

The component type of an implementation is extended to include zero or more consumer elements and zero or more producer elements:

+
+
+<componentType>
+        <implementation ... />?
+	<service ... />*
+	<reference ... />*
+	<property ... />*
+        <consumer name="xs:NCName" eventTypes="list of xs:QName"?/>*
+	<producer name="xs:NCName" eventTypes="list of xs:QName"?/>*
+</componentType>
+
+
+

Each consumer and each producer has a Name. The Name must be unique amongst the names of consumers, producers, services, references of the componentType.

+ +

Each consumer and each producer has an optional list of event types. For a producer, the list of event types indicates which event types can be produced by the producer. If no event types are listed, the producer may produce events of any type. For a consumer, the list of event types indicates which event types can be consumed by the consumer - and this list is used to filter messages received by the consumer - only events with event types that are in the list will be sent to the consumer. If no event types are listed, then all event types are consumed by the consumer.

+ +

Component - Event Processing Extensions

+ +

The component element within an SCA composite is extended to include zero or more consumer elements and zero or more producer elements.

+
+
+<component ... >*
+	<implementation/>
+	<service ... />*
+	<reference ... />*
+	<property ... />*
+	<consumer name="xs:NCName" source="list of xs:anyURI"? eventTypes="list of xs:QName"?>
+		<filters/>*
+	</consumer>
+	<producer name="xs:NCName" target="list of xs:anyURI"? eventTypes="list of xs:QName"?>
+	</producer>
+</component>
+
+
+

The component consumer and producer elements configure the consumer and producer elements of the implementation as described by its component type.
+Component producer elements declare where events from the producer are sent, through the @target attribute. The target attribute lists one or more target consumers, in the form of a space separated list of the form "ComponentName/ConsumerName", where "ComponentName" is the name of a component within the same composite and "ConsumerName" is the name of a consumer on that component.

+ +

Component consumer elements can declare from where the events are received by the consumer, through the @source attribute. The source attribute lists one or more source producers, in the form of a space separated list of the form "ComponentName/ProducerName", where "ComponentName" is the name of a component within the same composite and "ProducerName" is the name of a producer on that component.

+ +

Both consumer and producer elements can declare a list of event types, using the @eventTypes attribute. For a producer, the list of event types indicates which event types can be produced by the producer. If no event types are listed, the producer may produce events of any type. For a consumer, the list of event types indicates which event types can be consumed by the consumer - and this list is used to filter messages received by the consumer - only events with event types that are in the list will be sent to the consumer. If no event types are listed, then all event types are consumed by the consumer.

+ +

Component Diagram including Producer and Consumer

+ +

The following is a diagram for a component which has services, references, producers and consumers:

+ +

Composite with Producer linked to a Consumer

+ +

The following diagram shows a composite with a component producer linked to a component consumer:
+ The composite corresponding to this is:

+
+
+<composite name="Composite_X">
+    <component name="Component1">
+        <producer name="Producer1" target="Component1/Consumer1"/>
+    </component>
+
+    <component name="Component2">
+        <consumer name="Consumer1"/>
+    </component>
+</composite>
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_Templates.zip b/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_Templates.zip new file mode 100644 index 0000000000..ae827905b6 Binary files /dev/null and b/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_Templates.zip differ diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v1.xml b/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v1.xml new file mode 100644 index 0000000000..071ce76a19 --- /dev/null +++ b/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v1.xml @@ -0,0 +1,133 @@ + +## +#set ($pageContentHeaderEnabled = false) +## +#macro (spacer $width $height) + ## + ## Note: Replaced the spacer.gif with a table because IE wont honor the image height + ## + ## + ## + + + + +
+#end +## +#macro (renderPage $title) + #set($globalHelper = $action.getGlobalHelper()) + #set($renderer = $globalHelper.getWikiStyleRenderer()) + + ## + ## FIXME: Must be a more efficient way to find a page... + ## + + #foreach ($child in $page.space.pages) + #if ($child.title.equals($title)) + #set ($content = $renderer.convertWikiToXHtml($child.toPageContext(), $child.content).trim()) + + ## + ## HACK: Remove the leading

and trailing

+ ## + + #set ($content = $content.substring(3, $content.length())) + #set ($end = $content.length() - 4) + #set ($content = $content.substring(0, $end)) + + $content + #end + #end +#end +## +#macro (topNav) + + + + + + + + + +
+ + +   + +
+ + +
+
+#end +## +#macro (pageControls) +
+ + +
+#end +## +#macro (breadCrumbs) + + + + + + +
+  $autoexport.breadcrumbs($page) + + User List | Dev List | Issue Tracker   +
+#end +## +#macro (pageContent) +
+ #if ($pageContentHeaderEnabled) + + #end + +
+
+ $body +
+
+
+#end +## +#macro (footer) + +#end +## + + + + + $page.title : Apache Tuscany + + + + + #topNav() + + #breadCrumbs() + + + + + +
+ #pageContent() +
+ + #footer() + + + \ No newline at end of file diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v2.zip b/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v2.zip new file mode 100644 index 0000000000..70b3f8d5bb Binary files /dev/null and b/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v2.zip differ diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v3.zip b/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v3.zip new file mode 100644 index 0000000000..a4144b8781 Binary files /dev/null and b/site/trunk/site-publish/autoexport-plugin-template.data/TUSCANY_template_2007_5_25_v3.zip differ diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/Tuscany_template_2007_5_25_v1.zip b/site/trunk/site-publish/autoexport-plugin-template.data/Tuscany_template_2007_5_25_v1.zip new file mode 100644 index 0000000000..04d4be95a1 Binary files /dev/null and b/site/trunk/site-publish/autoexport-plugin-template.data/Tuscany_template_2007_5_25_v1.zip differ diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-24.css b/site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-24.css new file mode 100644 index 0000000000..a87d27d6b0 --- /dev/null +++ b/site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-24.css @@ -0,0 +1,1387 @@ +/* + * $Id: default.css 522548 2007-03-26 15:36:28Z hcunico $ + */ + +body, p, td, table, tr, .bodytext, .stepfield { font-family: Verdana, arial, sans-serif; font-size: 11px; line-height: 16px; color: #000000; font-weight: normal; } + +#PageContent { + text-align: left; + background-color: #fff; + padding: 0px; + margin: 0px; + padding-bottom:20px; +} + +/* +** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't +** use an id=PageContent or class=wiki-content, so we must +** set the body style to that used for PageContent, and p to that used for wiki-content. +*/ + +body { + margin: 0px; + padding: 0px; + text-align: center; + background-color: #f0f0f0; +} + +.monospaceInput { + font:12px monospace +} + +.wiki-content p, .commentblock p { + margin: 16px 0px 16px 0px; + padding: 0px; +} + +.wiki-content-preview { + padding: 5px; + border-left: 1px solid #a6c7f2; + border-right: 1px solid #a6c7f2; +} + +ul, ol { + margin-top: 2px; + margin-bottom: 2px; + padding-top: 0px; + padding-bottom: 0px; +} + +pre { + padding: 0px; + margin-top: 5px; + margin-left: 15px; + margin-bottom: 5px; + margin-right: 5px; + text-align: left; +} + +.helpheading { + font-weight: bold; + background-color: #D0D9BD; + border-bottom: 1px solid #a6c7f2; + padding: 4px 4px 4px 4px; + margin: 0px; + margin-top: 10px; +} +.helpcontent { + padding: 4px 4px 20px 4px; + background-color: #f5f7f1; +} + +.code { + border: 1px dashed #a6c7f2; + font-size: 11px; + font-family: Courier; + margin: 10px; + line-height: 13px; +} + +.focusedComment { + background: #ffffce; +} + +.commentBox, .focusedComment { + padding: 10px; + margin: 5px 0 5px 0; + border: 1px #bbb solid; +} + +.codeHeader { + background-color: #f0f0f0; + border-bottom: 1px dashed #a6c7f2; + padding: 3px; + text-align: center; +} + +.codeContent { + text-align: left; + background-color: #f0f0f0; + padding: 3px; +} + +.preformatted { + border: 1px dashed #a6c7f2; + font-size: 11px; + font-family: Courier; + margin: 10px; + line-height: 13px; +} + +.preformattedHeader { + background-color: #f0f0f0; + border-bottom: 1px dashed #a6c7f2; + padding: 3px; + text-align: center; +} + +.preformattedContent { + background-color: #f0f0f0; + padding: 3px; +} + +.panel { + border: 1px dashed #a6c7f2; + margin: 10px; + margin-top: 0px; +} + +.panelHeader { + background-color: #f0f0f0; + border-bottom: 1px dashed #a6c7f2; + padding: 3px; + text-align: center; +} + +.panelContent { + background-color: #f0f0f0; + padding: 5px; +} + +.anonymousAlert { + background-color: #f0f0f0; + border: 1px dashed red; + font-size: 11px; + padding: 10px 5px 10px 5px; + margin: 4px; + line-height: 13px; +} + +.lockAlert { + background-color: #f0f0f0; + width: 50%; + border: 1px dashed red; + font-size: 11px; + padding: 10px 5px 10px 5px; + margin: 4px; + line-height: 13px; +} + +.code-keyword { + color: #000091; + background-color: inherit; +} + +.code-object { + color: #910091; + background-color: inherit; +} + +.code-quote { + color: #009100; + background-color: inherit; +} + +.code-comment { + color: #808080; + background-color: inherit; +} + +.code-xml .code-keyword { + color: inherit; + font-weight: bold; +} + +.code-tag { + color: #000091; + background-color: inherit; +} + +.breadcrumbs { + background-color: #f0f0f0; + border-width: 1px 0; + border-style: solid; + font-size: 11px; + padding: 3px 0; +} + +.navmenu { + border: 1px solid #ccc; +} + +.menuheading { + font-weight: bold; + background-color: #f0f0f0; + border-bottom: 1px solid #a6c7f2; + padding: 4px 4px 2px 4px; +} + +.menuitems { + padding: 4px 4px 20px 4px; +} + +.rightpanel { + border-left: 1px solid #ccc; + border-bottom: 1px solid #ccc; +} + +#helpheading { + text-align: left; + font-weight: bold; + background-color: #D0D9BD; + border-bottom: 1px solid #a6c7f2; + padding: 4px 4px 4px 4px; + margin: 0px; +} + +#helpcontent { + padding: 4px 4px 4px 4px; + background-color: #f5f7f1; +} + +.helptab-unselected { + font-weight: bold; + padding: 5px; + background-color: #f5f7f1; +} + +.helptab-selected { + font-weight: bold; + background-color: #D0D9BD; + padding: 5px; +} + +.helptabs { + margin: 0px; + background-color: #f5f7f1; + padding: 5px; +} + +.infopanel-heading { + font-weight: bold; + padding: 4px 0px 2px 0px; +} + +.pagebody { +} + +.pageheader { + padding: 5px 5px 5px 0px; + border-bottom: 1px solid #a6c7f2; +} + +.pagetitle { + font-size: 22px; + font-weight: bold; + font-family: Arial, sans-serif; + color: #003366; +} + +.steptitle { + font-size: 18px; + font-weight: bold; + font-family: Arial, sans-serif; + color: #003366; + margin-bottom: 7px; +} + +.substeptitle { + font-size: 12px; + font-weight: bold; + font-family: Arial, sans-serif; + color: #003366; + margin: 2px 4px 4px 4px; + padding: 2px 4px 1px 4px; +} + +.stepdesc { + font-family: Verdana, arial, sans-serif; + font-size: 11px; + line-height: 16px; + font-weight: normal; + color: #666666; + margin-top: 7px; + margin-bottom: 7px; +} + +.steplabel { + font-weight: bold; + margin-right: 4px; + color: black; + float: left; + width: 15%; + text-align: right; +} + +.stepfield { + background: #f0f0f0; + padding: 5px; +} + +.submitButtons{ + margin-top:5px; + text-align:right; +} + +.formtitle { + font-size: 12px; + font-weight: bold; + font-family: Arial, sans-serif; + color: #003366; +} + +.sectionbottom { + border-bottom: 1px solid #a6c7f2; +} + +.topRow { + border-top: 2px solid #a6c7f2; +} + +.tabletitle { + font-size: 14px; + font-weight: bold; + font-family: Arial, sans-serif; + padding: 3px 0px 2px 0px; + margin: 8px 4px 2px 0px; + color: #003366; + border-bottom: 2px solid #a6c7f2; +} + +.pagesubheading { color: #666666; font-size: 10px; padding: 0 0 5px; list-style-type: none; list-style-image: none; display: none; } + +HR { + color: a6c7f2; + height: 1; +} + +A:link, A:visited, A:active, A:hover { + color: #003366; +} + +h1 A:link, h1 A:visited, h1 A:active { + text-decoration: none; +} + +h1 A:hover { + border-bottom: 1px dotted #003366; +} + +.wiki-content > :first-child, .commentblock > :first-child { + margin-top: 3px; +} + +.logocell { + padding: 10px; +} + +input { + font-family: verdana, geneva, arial, sans-serif; + font-size: 11px; + color: #000000; +} + +textarea, textarea.editor { + font-family: verdana, geneva, arial, sans-serif; + font-size: 11px; + color: #333333; +} + +.spacenametitle-printable { + font: 20px/25px Impact, Arial, Helvetica; + font-weight: 100; + color: #999999; + margin: 0px; +} + +.spacenametitle-printable a { + text-decoration: none; + color: #999999; +} + +.spacenametitle-printable a:visited { + text-decoration: none; + color: #999999; +} + +.blogSurtitle { margin: 1em 0 0; padding: 10px 10px 0; background: #ffffff; border-color: #5fa3d6; border-style: solid; border-width: 0 0 0 1px; list-style-type: none; list-style-image: none; display: none; } +.blogpost { margin: 0 0 1em; padding: 0 10px 5px; background: #ffffff; border-bottom: 1px solid #5fa3d6; border-left: 1px solid #5fa3d6; border-top-color: #5fa3d6; border-right-color: #5fa3d6; } +.blogpost p { + margin: 0; + margin-left: 20px; + } +a.blogDate { color: #999999; font-size: 90%; } +.blogHeading { margin: 0 0 0.3em; padding: 0.5em 0 3px; font-size: 110%; color: #004d94; font-weight: bold; border-bottom: 1px solid #eaeaea; } +.blogHeading a:link, +.blogHeading a:visited { + color: #004d94; + background: none; + } +.blogHeading a:focus, +.blogHeading a:hover, +.blogHeading a:active { + color: #000; + background: none; + } + +.endsection { align: right; color: #666666; margin-top: 10px; display: none; } + +.endsectionleftnav { + align: right; + color: #666666; + margin-top: 10px; +} + +h1 { font-size: 20px; line-height: normal; font-weight: bold; background-color: #ecf4d1; color: #000; text-align: left; vertical-align: top; padding: 2px; margin: 36px 0 4px; border-bottom: 1px solid #b4b4b5; border-left: 1px solid #b4b4b5; } + +h2 { font-size: 18px; line-height: normal; font-weight: bold; background-color: #ecf4d1; border-bottom: 1px solid #b4b4b5; padding: 2px; margin: 15px 0 4px; border-left: 1px solid #b4b4b5; border-top-color: #b4b4b5; border-right-color: #b4b4b5; list-style-image: none; list-style-position: inside; display: block; } + +h3 { font-size: 14px; line-height: normal; font-weight: bold; background-color: #ecf4d1; padding: 2px; margin: 21px 0 4px; border-bottom: 1px solid #b4b4b5; border-left: 1px solid #b4b4b5; border-top-color: #b4b4b5; border-right-color: #b4b4b5 } + +h4 { font-size: 12px; line-height: normal; font-weight: bold; background-color: #f0f0f0; padding: 2px; margin: 18px 0 4px; } + +h4.search { + font-size: 12px; + line-height: normal; + font-weight: normal; + background-color: #f0f0f0; + padding: 4px; + margin: 18px 0px 4px 0px; +} + +h5 { + font-size: 10px; + line-height: normal; + font-weight: bold; + background-color: #f0f0f0; + padding: 2px; + margin: 14px 0px 4px 0px; +} + +h6 { + font-size: 8px; + line-height: normal; + font-weight: bold; + background-color: #f0f0f0; + padding: 2px; + margin: 14px 0px 4px 0px; +} + +.smallfont { + font-size: 10px; +} + +.descfont { + font-size: 10px; + color: #666666; +} + +.smallerfont { + font-size: 9px; +} + +.smalltext { + color: #666666; + font-size: 10px; +} + +.smalltext a { + color: #666666; +} + +.smalltext-blue { + color: #a6c7f2; + font-size: 10px; +} + +.surtitle { + margin-left: 1px; + margin-bottom: 5px; + font-size: 14px; + color: #666666; +} + +/* css hack found here: http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */ +.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;} +.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; } +.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; } +.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; } +.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #a6c7f2; } +.navItem a { color: #ffffff; text-decoration: none; } +.navItem a:hover { color: #ffffff; text-decoration: none; } +.navItem a:visited { color: #ffffff; text-decoration: none; } + +div.padded { padding: 4px; } +div.thickPadded { padding: 10px; } +h3.macrolibrariestitle { + margin: 0px 0px 0px 0px; +} + +div.centered { text-align: center; margin: 10px; } +div.centered table { margin: 0 auto; text-align: left; border: solid 1px #5fa3d6; } + +.tableview table { margin: 0; } + +.tableview th { + text-align: left; + color: #003366; + font-size: 12px; + padding: 5px 0px 0px 5px; + border-bottom: 2px solid #a6c7f2; +} +.tableview td { + text-align: left; + border-color: #ccc; + border-width: 0px 0px 1px 0px; + border-style: solid; + margin: 0; + padding: 4px 10px 4px 5px; +} + +.grid { + margin: 2px 0px 5px 0px; + border-collapse: collapse; +} +.grid th { padding: 2px 4px; background: #f0f0f0; text-align: center; border: solid 1px #ccc; } +.grid td { + border: 1px solid #ccc; + padding: 3px 4px 3px 4px; +} +.gridHover { + background-color: #f9f9f9; +} + +td.infocell { + background-color: #f0f0f0; +} +.label { + font-weight: bold; + color: #003366; +} +.error { + background-color: #fcc; +} + +.errorBox { + background-color: #fcc; + border: 1px solid #c00; + padding: 5px; + margin: 5px; +} + +.errorMessage { + color: #c00; +} + +.success { + background-color: #dfd; +} + +.successBox { + background-color: #dfd; + border: 1px solid #090; + padding: 5px; + margin-top:5px; + margin-bottom:5px; +} + +blockquote { + padding-left: 10px; + padding-right: 10px; + margin-left: 5px; + margin-right: 0; + border-left: 1px solid #5fa3d6; +} + +table.confluenceTable +{ + margin: 5px; + border-collapse: collapse; +} + +/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */ +table.confluenceTable td.confluenceTd +{ + border-width: 1px; + border-style: solid; + border-color: #ccc; + padding: 3px 4px 3px 4px; +} + +/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */ +table.confluenceTable th.confluenceTh +{ + border-width: 1px; + border-style: solid; + border-color: #ccc; + padding: 3px 4px 3px 4px; + background-color: #f0f0f0; + text-align: center; +} + +td.confluenceTd +{ padding: 3px 4px; } + +th.confluenceTh +{ + border-width: 1px; + border-style: solid; + border-color: #ccc; + padding: 3px 4px 3px 4px; + background-color: #f0f0f0; + text-align: center; +} + +DIV.small { + font-size: 9px; +} + +H1.pagename { + margin-top: 0px; +} + +IMG.inline {} + +.loginform { + margin: 5px; + border: 1px solid #ccc; +} + +/* The text how the "This is a preview" comment should be shown. */ +.previewnote { + text-align: center; + font-size: 11px; + color: red; +} + +/* How the preview content should be shown */ +.previewcontent { background: #E0E0E0; } + +/* How the system messages should be shown (DisplayMessage.jsp) */ +.messagecontent { background: #E0E0E0; } + +/* How the "This page has been modified..." -comment should be shown. */ +.conflictnote { } + +.createlink { + color: maroon; +} +a.createlink { + color: maroon; +} +.templateparameter { + font-size: 9px; + color: darkblue; +} + +.diffadded { + background: #ddffdd; + padding: 1px 1px 1px 4px; + border-left: 4px solid darkgreen; +} +.diffdeleted { + color: #999; + background: #ffdddd; + padding: 1px 1px 1px 4px; + border-left: 4px solid darkred; +} +.diffnochange { + padding: 1px 1px 1px 4px; + border-left: 4px solid lightgrey; +} +.differror { + background: brown; +} +.diff { + font-family: lucida console, courier new, fixed-width; + font-size: 12px; + line-height: 14px; +} +.diffaddedchars { + background-color:#99ff99; + font-weight:bolder; +} +.diffremovedchars { + background-color:#ff9999; + text-decoration: line-through; + font-weight:bolder; +} + +.greybackground { + background: #f0f0f0 +} + +.greybox { + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.borderedGreyBox { + border: 1px solid #cccccc; + background-color: #f0f0f0; + padding: 10px; +} + +.greyboxfilled { + border: 1px solid #ddd; + padding: 5px; + margin: 10px 1px 10px 1px; + background: #f0f0f0; +} + +.navBackgroundBox { + padding: 5px 5px 5px 5px; + font-size: 22px; + font-weight: bold; + font-family: Arial, sans-serif; + color: white; + background: #a6c7f2; + text-decoration: none; +} + +.previewBoxTop { + background-color: #f0f0f0; + border-width: 1px 1px 0px 1px; + border-style: solid; + border-color: #a6c7f2; + padding: 5px; + margin: 5px 0px 0px 0px; + text-align: center; +} +.previewContent { + background-color: #fff; + border-color: #a6c7f2; + border-width: 0px 1px 0px 1px; + border-style: solid; + padding: 10px; + margin: 0px; +} +.previewBoxBottom { + background-color: #f0f0f0; + border-width: 0px 1px 1px 1px; + border-style: solid; + border-color: #a6c7f2; + padding: 5px; + margin: 0px 0px 5px 0px; + text-align: center; +} + +.functionbox { + background-color: #f0f0f0; + border: 1px solid #a6c7f2; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.functionbox-greyborder { + background-color: #f0f0f0; + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.search-highlight { + background-color: #ffffcc; +} + +/* normal (white) background */ +.rowNormal { background-color: #ffffff; border: solid 1px #5fa3d6; } + +/* alternate (pale yellow) background */ +.rowAlternate { background-color: #f7f7f7; border: solid 1px #5fa3d6; } + +/* used in the list attachments table */ +.rowAlternateNoBottomColor { + background-color: #f7f7f7; +} + +.rowAlternateNoBottomNoColor { +} + +.rowAlternateNoBottomColor td { border-bottom: 0 no; border-top-color: #5fa3d6; border-right-color: #5fa3d6; border-left-color: #5fa3d6;ne #5fa3d6; +} + +.rowAlternateNoBottomNoColor td { + border-bottom: 0px; +} + +/* row highlight (grey) background */ +.rowHighlight { + background-color: #f0f0f0; + +} + +TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; } +TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; } +TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; } + +TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; } +TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; } + +.toolbar { + margin: 0px; + border-collapse: collapse; +} + +.toolbar td { + border: 1px solid #ccc; + padding: 2px 2px 2px 2px; + color: #ccc; +} + +td.noformatting { + border-width: 0px; + border-style: none; + text-align: center; + padding: 0px; +} + +.commentblock { + margin: 12px 0 12px 0; +} + +/* + * Divs displaying the license information, if necessary. + */ +.license-eval, .license-none, .license-nonprofit { + border-top: 1px solid #bbbbbb; + text-align: center; + font-size: 10px; + font-family: Verdana, Arial, Helvetica, sans-serif; +} + +.license-eval, .license-none { + background-color: #ffcccc; +} + +.license-eval b, .license-none b { + color: #990000 +} + +.license-nonprofit { + background-color: #ffffff; +} + +/* + * The shadow at the bottom of the page between the main content and the + * "powered by" section. + */ +.bottomshadow { + height: 12px; + background-image: url("$req.contextPath/images/border/border_bottom.gif"); + background-repeat: repeat-x; +} + +/* + * Styling of the operations box + */ +.navmenu .operations li, .navmenu .operations ul { + list-style: none; + margin-left: 0; + padding-left: 0; +} + +.navmenu .operations ul { + margin-bottom: 9px; +} + +.navmenu .label { + font-weight: inherit; +} + +/* + * Styling of ops as a toolbar + */ +.toolbar div { + display: none; +} + +.toolbar .label { + display: none; +} + +.toolbar .operations { + display: block; +} + +.toolbar .operations ul { + display: inline; + list-style: none; + margin-left: 10px; + padding-left: 0; +} + +.toolbar .operations li { + list-style: none; + display: inline; +} + +/* list page navigational tabs */ +#foldertab { + padding: 3px 0px 3px 8px; + margin-left: 0; + border-bottom: 1px solid #a6c7f2; + font: bold 11px Verdana, sans-serif; +} + +#foldertab li { + list-style: none; + margin: 0; + display: inline; +} + +#foldertab li a { + padding: 3px 0.5em; + margin-left: 3px; + border: 1px solid #a6c7f2; + border-bottom: none; + background: #a6c7f2; + text-decoration: none; +} + +#foldertab li a:link { color: #ffffff; } +#foldertab li a:visited { color: #ffffff; } + +#foldertab li a:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +#foldertab li a.current { + background: white; + border-bottom: 1px solid white; + color: black; +} + +#foldertab li a.current:link { color: black; } +#foldertab li a.current:visited { color: black; } +#foldertab li a.current:hover { + background: white; + border-bottom: 1px solid white; + color: black; +} + +/* alphabet list */ +ul#squaretab { + margin-left: 0; + padding-left: 0; + white-space: nowrap; + font: bold 8px Verdana, sans-serif; +} + +#squaretab li { + display: inline; + list-style-type: none; +} + +#squaretab a { + padding: 2px 6px; + border: 1px solid #a6c7f2; +} + +#squaretab a:link, #squaretab a:visited { + color: #fff; + background-color: #a6c7f2; + text-decoration: none; +} + +#squaretab a:hover { + color: #ffffff; + background-color: #003366; + border-color: #003366; + text-decoration: none; +} + +#squaretab li a#current { + background: white; + color: black; +} + +.blogcalendar * { + font-family:verdana, arial, sans-serif; + font-size:x-small; + font-weight:normal; + line-height:140%; + padding:2px; +} + +table.blogcalendar { + border: 1px solid #a6c7f2; +} + +.blogcalendar th.calendarhead, a.calendarhead { + font-size:x-small; + font-weight:bold; + padding:2px; + text-transform:uppercase; + background-color: #a6c7f2; + color: #ffffff; + letter-spacing: .3em; + text-transform: uppercase; +} + +.calendarhead:visited {color: white;} +.calendarhead:active {color: white;} +.calendarhead:hover {color: white;} + +.blogcalendar th { + font-size:x-small; + font-weight:bold; + padding:2px; + background-color:#f0f0f0; +} + +.blogcalendar td { + font-size:x-small; + font-weight:normal; +} + +.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; } +.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #a6c7f2; padding: 2px 4px 1px 4px; } +.searchItem { padding: 1px 4px 1px 4px; } +.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; } + +/* permissions page styles */ +.permissionHeading { + border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left; +} +.permissionTab { + border-width: 0 0 0 1px; border-style: solid; background: #a6c7f2; color: #ffffff; font-size: 10px; +} +.permissionSuperTab { + border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff; +} +.permissionCell { + border-left: #bbb; border-width: 0 0 0 1px; border-style: solid; +} + +/* warning panel */ +.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; } +/* alert panel */ +.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; } + +/* side menu highlighting (e.g. space content screen) */ +.optionPadded { padding: 2px; } +.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; } +.optionSelected a { font-weight: bold; text-decoration: none; color: black; } + +/* information macros */ +.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px} +.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px} +.infoMacro { border-style: solid; border-width: 1px; border-color: #a6c7f2; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px} +.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px} +.informationMacroPadding { padding: 5px 0 0 5px; } + +table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td { + border: none; +} + +table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;} + +.pagecontent +{ + padding: 10px; + text-align: left; +} + +/* styles for links in the top bar */ +.topBarDiv a:link {color: #000000;} +.topBarDiv a:visited {color: #000000;} +.topBarDiv a:active {color: #000000;} +.topBarDiv a:hover {color: #000000;} +.topBarDiv { color: #000000; font-style: normal; } + +.topBar { + background-color: #a6c7f2; +} + + +/* styles for extended operations */ +.greyLinks a:link {color: #666666; text-decoration:underline;} +.greyLinks a:visited {color: #666666; text-decoration:underline;} +.greyLinks a:active {color: #666666; text-decoration:underline;} +.greyLinks a:hover {color: #666666; text-decoration:underline;} +.greyLinks {color: #666666; display:block; padding: 10px} + +.logoSpaceLink {color: #999999; text-decoration: none} +.logoSpaceLink a:link {color: #999999; text-decoration: none} +.logoSpaceLink a:visited {color: #999999; text-decoration: none} +.logoSpaceLink a:active {color: #999999; text-decoration: none} +.logoSpaceLink a:hover {color: #003366; text-decoration: none} + +/* basic panel (basicpanel.vmd) style */ +.basicPanelContainer {border: 1px solid #a6c7f2; margin-top: 2px; margin-bottom: 8px; width: 100%} +.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;} +.basicPanelBody {padding: 5px; margin: 0px} + +.separatorLinks a:link {color: white} +.separatorLinks a:visited {color: white} +.separatorLinks a:active {color: white} + +.greynavbar {background-color: #f0f0f0; border-top: 1px solid #a6c7f2; margin-top: 2px} + +div.headerField { + float: left; + width: auto; + height: 100%; +} + +.headerFloat { + margin-left: auto; + width: 50%; +} + +.headerFloatLeft { + float: left; + margin-right: 20px; + margin-bottom: 10px; +} + +#headerRow { + padding: 10px; +} + +div.license-personal { + background-color: #003366; + color: #ffffff; +} + +div.license-personal a { + color: #ffffff; +} + +.greyFormBox { + border: 1px solid #cccccc; + padding: 5px; +} + +/* IE automatically adds a margin before and after form tags. Use this style to remove that */ +.marginlessForm { + margin: 0px; +} + +.openPageHighlight { + background-color: #ffffcc; + padding: 2px; + border: 1px solid #ddd; +} + +.editPageInsertLinks, .editPageInsertLinks a +{ + color: #666666; + font-weight: bold; + font-size: 10px; +} + +/* Style for label heatmap. */ +.top10 a { + font-weight: bold; + font-size: 2em; + color: #003366; +} +.top25 a { + font-weight: bold; + font-size: 1.6em; + color: #003366; +} +.top50 a { + font-size: 1.4em; + color: #003366; +} +.top100 a { + font-size: 1.2em; + color: #003366; +} + +.heatmap { + list-style:none; + width: 95%; + margin: 0px auto; +} + +.heatmap a { + text-decoration:none; +} + +.heatmap a:hover { + text-decoration:underline; +} + +.heatmap li { + display: inline; +} + +.minitab { + padding: 3px 0px 3px 8px; + margin-left: 0; + margin-top: 1px; + margin-bottom: 0px; + border-bottom: 1px solid #a6c7f2; + font: bold 9px Verdana, sans-serif; + text-decoration: none; + float:none; +} +.selectedminitab { + padding: 3px 0.5em; + margin-left: 3px; + margin-top: 1px; + border: 1px solid #a6c7f2; + background: white; + border-bottom: 1px solid white; + color: #000000; + text-decoration: none; +} +.unselectedminitab { + padding: 3px 0.5em; + margin-left: 3px; + margin-top: 1px; + border: 1px solid #a6c7f2; + border-bottom: none; + background: #a6c7f2; + color: #ffffff; + text-decoration: none; +} + +a.unselectedminitab:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +a.unselectedminitab:link { color: white; } +a.unselectedminitab:visited { color: white; } + +a.selectedminitab:link { color: black; } +a.selectedminitab:visited { color: black; } + +.linkerror { background-color: #fcc;} + +a.labelOperationLink:link {text-decoration: underline} +a.labelOperationLink:active {text-decoration: underline} +a.labelOperationLink:visited {text-decoration: underline} +a.labelOperationLink:hover {text-decoration: underline} + +a.newLabel:link {background-color: #ddffdd} +a.newLabel:active {background-color: #ddffdd} +a.newLabel:visited {background-color: #ddffdd} +a.newLabel:hover {background-color: #ddffdd} + +ul.square {list-style-type: square} + +.inline-control-link { + background: #ffc; + font-size: 9px; + color: #666; + padding: 2px; + text-transform: uppercase; + text-decoration: none; +} + + +.inline-control-link a:link {text-decoration: none} +.inline-control-link a:active {text-decoration: none} +.inline-control-link a:visited {text-decoration: none} +.inline-control-link a:hover {text-decoration: none} + +.inline-control-link { + background: #ffc; + font-size: 9px; + color: #666; + padding: 2px; + text-transform: uppercase; + text-decoration: none; + cursor: pointer; +} + +div.auto_complete { + width: 350px; + background: #fff; +} +div.auto_complete ul { + border: 1px solid #888; + margin: 0; + padding: 0; + width: 100%; + list-style-type: none; +} +div.auto_complete ul li { + margin: 0; + padding: 3px; +} +div.auto_complete ul li.selected { + background-color: #ffb; +} +div.auto_complete ul strong.highlight { + color: #800; + margin: 0; + padding: 0; +} + +/******* Edit Page Styles *******/ +.toogleFormDiv{ + border:1px solid #A7A6AA; + background-color:white; + padding:5px; + margin-top: 5px; +} + +.toogleInfoDiv{ + border:1px solid #A7A6AA; + background-color:white; + display:none; + padding:5px; + margin-top: 10px; +} + +.inputSection{ + margin-bottom:20px; +} + +#editBox{ + border:1px solid lightgray; + background-color:#F0F0F0; +} + +/******* Left Navigation Theme Styles ********/ +.leftnav li a { + text-decoration:none; + color:white; + margin:0px; + display:block; + padding:2px; + padding-left:5px; + background-color: #a6c7f2; + border-top:1px solid #a6c7f2; +} + +.leftnav li a:active {color:white;} +.leftnav li a:visited {color:white;} +.leftnav li a:hover {background-color: #003366; color:white;} + +.quicklinks { + font-size: smaller; +} +.sideNavSectionTitle { + text-align: left; +} +.quicklinks a:link, .quicklinks a:visited, .quicklinks a:active, .quicklinks a:hover { + color: #FFFFFF; + text-decoration: none; +} +.gfxbyepiq { + text-align: center; + font-size: smaller; +} +.gfxbyepiq a:link, .gfxbyepiq a:visited, .gfxbyepiq a:active, .gfxbyepiq a:hover { + color: #AAAAAA; + text-decoration: none; +} + +.grayed{ + text-align: center; + font-size: smaller; + color: #aaa; + text-decoration: none; +} + +.footer { + background-image: url('http://localhost/images/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 6px; + color: #666; + font-size: smaller; + text-align: right; +} \ No newline at end of file diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-24.zip b/site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-24.zip new file mode 100644 index 0000000000..37399c5de7 Binary files /dev/null and b/site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-24.zip differ diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-25.zip b/site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-25.zip new file mode 100644 index 0000000000..12d84ee9dd Binary files /dev/null and b/site/trunk/site-publish/autoexport-plugin-template.data/default_2007-05-25.zip differ diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/notep_16.gif b/site/trunk/site-publish/autoexport-plugin-template.data/notep_16.gif new file mode 100644 index 0000000000..c8b147fef4 Binary files /dev/null and b/site/trunk/site-publish/autoexport-plugin-template.data/notep_16.gif differ diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/notep_16.gif.jpeg b/site/trunk/site-publish/autoexport-plugin-template.data/notep_16.gif.jpeg new file mode 100644 index 0000000000..501d20adf0 Binary files /dev/null and b/site/trunk/site-publish/autoexport-plugin-template.data/notep_16.gif.jpeg differ diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/notep_16_2007-05-24.gif b/site/trunk/site-publish/autoexport-plugin-template.data/notep_16_2007-05-24.gif new file mode 100644 index 0000000000..c8b147fef4 Binary files /dev/null and b/site/trunk/site-publish/autoexport-plugin-template.data/notep_16_2007-05-24.gif differ diff --git a/site/trunk/site-publish/autoexport-plugin-template.data/notep_16_2007-05-24.gif.jpeg b/site/trunk/site-publish/autoexport-plugin-template.data/notep_16_2007-05-24.gif.jpeg new file mode 100644 index 0000000000..501d20adf0 Binary files /dev/null and b/site/trunk/site-publish/autoexport-plugin-template.data/notep_16_2007-05-24.gif.jpeg differ diff --git a/site/trunk/site-publish/autoexport-plugin-template.html b/site/trunk/site-publish/autoexport-plugin-template.html new file mode 100644 index 0000000000..90e5fdb5dc --- /dev/null +++ b/site/trunk/site-publish/autoexport-plugin-template.html @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + Apache Tuscany : Autoexport plugin template + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > old-Sandbox > Autoexport plugin template + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Here is a sample template to use with the autoexport plugin. I have also included in the zip file a css and some images.
+As a minimum, the template has to be modified with the correct URLs for the referenced resources.
+TUSCANY_Templates.zip

+ + +

Available attachments:

+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name + Size + Creator Creation Date + Comment 
+ +File + TUSCANY_Templates.zip + + 27 kBHernan CunicoMay 24, 2007 07:42 + template for autoexport plugin + css + some images + + +
+ +File + Tuscany_template_2007_5_25_v1.zip + + 2 kBHernan CunicoMay 24, 2007 12:49 +   + + +
+ +File + default_2007-05-24.zip + + 6 kBHernan CunicoMay 24, 2007 12:25 +   + + +
+ +GIF File + notep_16.gif + + 0.4 kBHernan CunicoMay 24, 2007 12:50 +   + + +
+ +ZIP Archive + default_2007-05-25.zip + + 6 kBHernan CunicoMay 25, 2007 12:30 +   + + +
+ +ZIP Archive + TUSCANY_template_2007_5_25_v2.zip + + 2 kBHernan CunicoMay 25, 2007 12:30 +   + + +
+ +ZIP Archive + TUSCANY_template_2007_5_25_v3.zip + + 2 kBS VenkatakrishnanMay 27, 2007 10:45 + Template updated for Incubator Logo + + +
+ +
+
+
+ + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/binding-ws.html b/site/trunk/site-publish/binding-ws.html new file mode 100644 index 0000000000..77dca806a2 --- /dev/null +++ b/site/trunk/site-publish/binding-ws.html @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + Apache Tuscany : binding-ws + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > binding-ws + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

The binding.ws assembly model...

+ +

under construction.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project.png new file mode 100644 index 0000000000..48bf481e1d Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project.png.jpeg new file mode 100644 index 0000000000..4a05eb3baa Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project_lib.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project_lib.png new file mode 100644 index 0000000000..656465d618 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project_lib.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project_lib.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project_lib.png.jpeg new file mode 100644 index 0000000000..268ad62251 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_Calc_Java_Project_lib.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_User_Lib.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_User_Lib.png new file mode 100644 index 0000000000..80b2822afa Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_User_Lib.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_User_Lib.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_User_Lib.png.jpeg new file mode 100644 index 0000000000..5273a016d2 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/New_User_Lib.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/Tuscany_User_Lib.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/Tuscany_User_Lib.png new file mode 100644 index 0000000000..796f560dd8 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/Tuscany_User_Lib.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/Tuscany_User_Lib.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/Tuscany_User_Lib.png.jpeg new file mode 100644 index 0000000000..3af6676b6f Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/Tuscany_User_Lib.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feed.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feed.png new file mode 100644 index 0000000000..c1da921ee5 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feed.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feed.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feed.png.jpeg new file mode 100644 index 0000000000..779e369a2e Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feed.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feeds_page.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feeds_page.png new file mode 100644 index 0000000000..6e7c4bb227 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feeds_page.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feeds_page.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feeds_page.png.jpeg new file mode 100644 index 0000000000..82fe4d8111 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/atom_feeds_page.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_eclipse_console.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_eclipse_console.png new file mode 100644 index 0000000000..f7c0fd012b Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_eclipse_console.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_eclipse_console.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_eclipse_console.png.jpeg new file mode 100644 index 0000000000..dd108d061a Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_eclipse_console.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_proj_dlg.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_proj_dlg.png new file mode 100644 index 0000000000..84f439c41c Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_proj_dlg.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_proj_dlg.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_proj_dlg.png.jpeg new file mode 100644 index 0000000000..a0828163fd Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/calculator_proj_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/class_btn.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/class_btn.png new file mode 100644 index 0000000000..60bce5ee98 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/class_btn.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/class_btn.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/class_btn.png.jpeg new file mode 100644 index 0000000000..cab8b0264b Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/class_btn.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/eclipse_console.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/eclipse_console.png new file mode 100644 index 0000000000..9ef69db7d0 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/eclipse_console.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/eclipse_console.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/eclipse_console.png.jpeg new file mode 100644 index 0000000000..99dd341348 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/eclipse_console.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/first_composite.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/first_composite.png new file mode 100644 index 0000000000..00d3edd3d8 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/first_composite.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/first_composite.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/first_composite.png.jpeg new file mode 100644 index 0000000000..58e4733cf4 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/first_composite.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.jpg new file mode 100644 index 0000000000..534748845b Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.jpg.jpeg new file mode 100644 index 0000000000..6d63cd1c5d Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.png new file mode 100644 index 0000000000..85a24d4a27 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.png.jpeg new file mode 100644 index 0000000000..71c6705477 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/folder_structure.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update.jpg new file mode 100644 index 0000000000..0357e5a253 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update.jpg.jpeg new file mode 100644 index 0000000000..d71bfe84b1 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_license.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_license.jpg new file mode 100644 index 0000000000..457b4e7983 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_license.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_license.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_license.jpg.jpeg new file mode 100644 index 0000000000..e488e74fd2 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_license.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_verification.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_verification.jpg new file mode 100644 index 0000000000..23ded64414 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_verification.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_verification.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_verification.jpg.jpeg new file mode 100644 index 0000000000..8e88737cea Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_feature_verification.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_finish.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_finish.jpg new file mode 100644 index 0000000000..190036e382 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_finish.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_finish.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_finish.jpg.jpeg new file mode 100644 index 0000000000..bbb6a5ef56 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_finish.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_installation.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_installation.jpg new file mode 100644 index 0000000000..ef1bd53888 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_installation.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_installation.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_installation.jpg.jpeg new file mode 100644 index 0000000000..2fd587e991 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_installation.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_new_site.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_new_site.jpg new file mode 100644 index 0000000000..ced23f111a Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_new_site.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_new_site.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_new_site.jpg.jpeg new file mode 100644 index 0000000000..83c882dbd7 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_new_site.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_restart_eclipse.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_restart_eclipse.jpg new file mode 100644 index 0000000000..995daba70d Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_restart_eclipse.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_restart_eclipse.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_restart_eclipse.jpg.jpeg new file mode 100644 index 0000000000..369f562ef2 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_restart_eclipse.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_search_results.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_search_results.jpg new file mode 100644 index 0000000000..dcb2ce7afd Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_search_results.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_search_results.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_search_results.jpg.jpeg new file mode 100644 index 0000000000..77ae3d0f92 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_search_results.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_sites.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_sites.jpg new file mode 100644 index 0000000000..c32031adcf Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_sites.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_sites.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_sites.jpg.jpeg new file mode 100644 index 0000000000..b929427c48 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/install_update_sites.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/interface_btn.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/interface_btn.png new file mode 100644 index 0000000000..5c342b8194 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/interface_btn.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/interface_btn.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/interface_btn.png.jpeg new file mode 100644 index 0000000000..ee25c45cba Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/interface_btn.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_btn.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_btn.png new file mode 100644 index 0000000000..902fe75507 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_btn.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_btn.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_btn.png.jpeg new file mode 100644 index 0000000000..9ed36e4e23 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_btn.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_dlg.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_dlg.png new file mode 100644 index 0000000000..95b51cf26a Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_dlg.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_dlg.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_dlg.png.jpeg new file mode 100644 index 0000000000..be327e7e1f Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_folder.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_folder.png new file mode 100644 index 0000000000..07cd5a0502 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_folder.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_folder.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_folder.png.jpeg new file mode 100644 index 0000000000..6b4cd2b9b4 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_pkg_folder.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project.png new file mode 100644 index 0000000000..50297b3afa Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project.png.jpeg new file mode 100644 index 0000000000..8fdf13e716 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_dlg.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_dlg.png new file mode 100644 index 0000000000..5f051094b9 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_dlg.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_dlg.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_dlg.png.jpeg new file mode 100644 index 0000000000..22d226ce07 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_folder.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_folder.png new file mode 100644 index 0000000000..8329b143de Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_folder.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_folder.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_folder.png.jpeg new file mode 100644 index 0000000000..90231cf672 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_folder.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_lib.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_lib.png new file mode 100644 index 0000000000..c0b12eea7a Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_lib.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_lib.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_lib.png.jpeg new file mode 100644 index 0000000000..4537f7d914 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/new_java_project_lib.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/project_layout.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/project_layout.png new file mode 100644 index 0000000000..9de01ff4d5 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/project_layout.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/project_layout.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/project_layout.png.jpeg new file mode 100644 index 0000000000..745f2dbfbd Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/project_layout.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.jpg new file mode 100644 index 0000000000..c06fec1d7c Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.jpg.jpeg new file mode 100644 index 0000000000..2ed010eff4 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.png new file mode 100644 index 0000000000..38077052b3 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.png.jpeg new file mode 100644 index 0000000000..32e3de3909 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/release_zips.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.jpg new file mode 100644 index 0000000000..1ab42867a2 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.jpg.jpeg new file mode 100644 index 0000000000..5339a41827 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.png new file mode 100644 index 0000000000..7dba24bd53 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.png.jpeg new file mode 100644 index 0000000000..00fa4a3ca4 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.jpg new file mode 100644 index 0000000000..2eb5f64e93 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.jpg.jpeg new file mode 100644 index 0000000000..5d44c2a867 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.png new file mode 100644 index 0000000000..7d51969a8a Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.png.jpeg new file mode 100644 index 0000000000..529ac57071 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/source_attachment_config.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page.png new file mode 100644 index 0000000000..988c62fae7 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page.png.jpeg new file mode 100644 index 0000000000..e52776334f Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_1.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_1.png new file mode 100644 index 0000000000..834ef26e35 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_1.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_1.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_1.png.jpeg new file mode 100644 index 0000000000..7247d60368 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_1.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_2.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_2.png new file mode 100644 index 0000000000..c71b600146 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_2.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_2.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_2.png.jpeg new file mode 100644 index 0000000000..0ecef780b1 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_2.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_3.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_3.png new file mode 100644 index 0000000000..2560148e19 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_3.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_3.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_3.png.jpeg new file mode 100644 index 0000000000..d05d2288af Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_page_3.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project.png new file mode 100644 index 0000000000..f0d1999ff2 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project.png.jpeg new file mode 100644 index 0000000000..fab518699e Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_1.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_1.png new file mode 100644 index 0000000000..eb6bd340d2 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_1.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_1.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_1.png.jpeg new file mode 100644 index 0000000000..404c40daf8 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_1.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_2.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_2.png new file mode 100644 index 0000000000..81119985d8 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_2.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_2.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_2.png.jpeg new file mode 100644 index 0000000000..0159ecc040 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_2.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.jpg new file mode 100644 index 0000000000..a682bb2d74 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.jpg.jpeg new file mode 100644 index 0000000000..23b9f5c584 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.png new file mode 100644 index 0000000000..5aaf5ed3fd Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.png.jpeg new file mode 100644 index 0000000000..6a5e9220cb Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_3.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.jpg new file mode 100644 index 0000000000..7c7ed0a157 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.jpg.jpeg new file mode 100644 index 0000000000..c0aa95b56b Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.png new file mode 100644 index 0000000000..217d10ed25 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.png.jpeg new file mode 100644 index 0000000000..9c90a17f3a Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_4.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.jpg new file mode 100644 index 0000000000..4b7e5a9b67 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.jpg.jpeg new file mode 100644 index 0000000000..ea68ebff08 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.png new file mode 100644 index 0000000000..3586520e47 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.png.jpeg new file mode 100644 index 0000000000..3fa840138a Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/store_project_5.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.jpg new file mode 100644 index 0000000000..6e7ec70688 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.jpg.jpeg new file mode 100644 index 0000000000..b6019f5311 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.png new file mode 100644 index 0000000000..d58afb88d1 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.png.jpeg new file mode 100644 index 0000000000..7ade1f20e5 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_folder.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.jpg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.jpg new file mode 100644 index 0000000000..7fb4ed05c0 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.jpg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.jpg.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.jpg.jpeg new file mode 100644 index 0000000000..2468cc9b6e Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.jpg.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.png b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.png new file mode 100644 index 0000000000..fe79cf56c7 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.png differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.png.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.png.jpeg new file mode 100644 index 0000000000..d953ca2af1 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/tuscany_samples_folder.png.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project.JPG b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project.JPG new file mode 100644 index 0000000000..33e01c63e7 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project.JPG differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project.JPG.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project.JPG.jpeg new file mode 100644 index 0000000000..7690c22c0e Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project.JPG.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_layout.JPG b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_layout.JPG new file mode 100644 index 0000000000..a5e58551c5 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_layout.JPG differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_layout.JPG.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_layout.JPG.jpeg new file mode 100644 index 0000000000..935bf6e6f5 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_layout.JPG.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_name.JPG b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_name.JPG new file mode 100644 index 0000000000..71b59cef74 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_name.JPG differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_name.JPG.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_name.JPG.jpeg new file mode 100644 index 0000000000..11a5479965 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_name.JPG.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_tuscany_library.JPG b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_tuscany_library.JPG new file mode 100644 index 0000000000..4f0cc4c09b Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_tuscany_library.JPG differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_tuscany_library.JPG.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_tuscany_library.JPG.jpeg new file mode 100644 index 0000000000..86b1e5698a Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_create_new_java_project_tuscany_library.JPG.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_package.JPG b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_package.JPG new file mode 100644 index 0000000000..285882a078 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_package.JPG differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_package.JPG.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_package.JPG.jpeg new file mode 100644 index 0000000000..6942aa9b52 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_package.JPG.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_1.JPG b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_1.JPG new file mode 100644 index 0000000000..b8fca77f2c Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_1.JPG differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_1.JPG.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_1.JPG.jpeg new file mode 100644 index 0000000000..074236db18 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_1.JPG.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_2.JPG b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_2.JPG new file mode 100644 index 0000000000..21c7edebf2 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_2.JPG differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_2.JPG.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_2.JPG.jpeg new file mode 100644 index 0000000000..9691690eaf Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_2.JPG.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_3.JPG b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_3.JPG new file mode 100644 index 0000000000..47415875c8 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_3.JPG differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_3.JPG.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_3.JPG.jpeg new file mode 100644 index 0000000000..8d61af3c19 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_java_project_structure_3.JPG.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.JPG b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.JPG new file mode 100644 index 0000000000..e49b9d9e90 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.JPG differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.JPG.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.JPG.jpeg new file mode 100644 index 0000000000..f05ba2d422 Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.JPG.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.PNG b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.PNG new file mode 100644 index 0000000000..a77ce9581d Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.PNG differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.PNG.jpeg b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.PNG.jpeg new file mode 100644 index 0000000000..8399803f9c Binary files /dev/null and b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.data/ws_new_project_console_output.PNG.jpeg differ diff --git a/site/trunk/site-publish/build-your-first-web-services-with-tuscany.html b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.html new file mode 100644 index 0000000000..aa892d0992 --- /dev/null +++ b/site/trunk/site-publish/build-your-first-web-services-with-tuscany.html @@ -0,0 +1,346 @@ + + + + + + + + + + + + + + + Apache Tuscany : Build your first Web Services with Tuscany + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Build your first Web Services with Tuscany + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Build your first Web Services with Tuscany

+ +

"Creating Your First Web Service with Apache Tuscany video"
+This guide will give you step by step instructions on how to build your first web services.
+The first part, we will learn how we can add the Tuscany Runtime to Eclipse IDE.
+The second part, will show how easy is to create a webservices using Apache Tuscany.

+ +

Install the Latest Tuscany Eclipse Plugin

+ +

"Installing the Apache Tuscany Eclipse Plugins video"

+ +

A quick Step by Step walk through of downloading, installing, and verifying the Tuscany Eclipse Plugins.

+ +

This section shows you how to install the lastest Tuscany Eclipse plugin. The plugin gives you the ability to run an SCA composite file from the Package Explorer. You will see a "Run As Tuscany" menu item when you bring up the context menu on composite files.

+ +

Start Eclipse and go to Help -> Software Updates -> Find and Install. Select "Search for new features to install" and then click next

+ +

Create a new Remote Site. On the next dialog, click on "New Remote Site..." to create a new site entry. Give it a name such as
+"Tuscany" and add the site URL from the latest Tuscany release (e.g http://www.apache.org/dist/tuscany/java/sca/1.5.1/tuscany-sca-1.5.1-updatesite/.

+ +

Select the "Remote Site" you just created, and click "Finish"

+ +

Select the "Apache Tuscany SCA Tools" and click "Next", and then, on the next dialog, click "Finish". Accept the "Plugin License" and next click on "Install All".

+ +

When asked to "restart eclipse", click the "yes" button.

+ +

Create your Service Business Logic

+ +

Create a Java Project

+ +

In this step you create a Java Project in Eclipse to hold the composite service application.
+Click on the New Java Project button   in the toolbar to launch the project creation dialog.
+Next you enter "ws" as the Project name, and for Project Layout select Create separate
+folders for sources and class files.
+

+

+Hit the Next button, and on the following page go to the Libraries tab. Use the Add Library...
+button on the right to add the Tuscany Library library to the project.

+


+Hit the Finish button to complete the New Java Project dialog to create the "ws" java project. 

+

+ +

Construct Services

+ +

First you create the "helloworld" package folders into which later in this step you place service implementations.
+Select the "ws" project and click on the New Java Package button in the toolbar to launch
+the package creation dialog.

+ +

Next you enter "helloworld" as the package Name, and press the Finish button to complete the
+dialog.
+

+ +

HelloWorld

+ +

In this step you create the HelloWorld service interface and implementation.
+Select the "helloworld" package. Next you click on the dropdown arrow next to the New Java Class
+button    and select the New Java Interface    option from the dropdown list. In the dialog
+enter "HelloWorld" as the Name of the interface and select the Finish button to complete the dialog.
+The Java editor will open on the new created Java interface. Replace the content of the editor by
+copy-paste of the following Java interface code snippet.

+
+
+package helloworld;
+import org.osoa.sca.annotations.Remotable;
+@Remotable
+public interface HelloWorld {
+    String sayHello(String name);
+}
+
+
+

Select the "helloworld" package again. Select the New Java Class button . In the dialog enter
+"HelloWorldImpl" as the Name of the class, add "Catalog" as the interface this class implements, and
+then select Finish to complete the dialog.

+ +

The Java editor will open on the new created Java class. Replace the content of the editor by
+copy-paste of the following Java class code snippet.

+
+
+package helloworld;
+public class HelloWorldImpl implements HelloWorld {
+	public String sayHello(String name) {
+		return "Hello " + name;
+	}
+}
+
+
+

After completing these steps the content of the "ws" project will look as follows.
+

+ +

Compose Services

+ +

Now that you have all the required service implementations you compose them together to provide
+the helloworld composite service. The composition is stored in a .composite file.

+ +

Select the "src" folder of the "ws" project. Right click to get the context menu, select New, and
+then File. In the New File dialog enter "helloworld.composite" for the File name, and then select Finish
+to complete the dialog.

+ +

The Text editor will open on the new created composite file. Replace the content of the editor by
+copy-paste of the following composite snippet.

+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+    xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+    xmlns:c="http://helloworld"
+    targetNamespace="http://helloworld"
+    name="helloworld">
+
+	<component name="HelloWorldComponent">
+		<implementation.java class="helloworld.HelloWorldImpl"/>
+		<service name="HelloWorld">
+			<binding.ws uri="http://localhost:8080/HelloWorld"/>
+		</service>
+	</component>
+</composite>
+
+
+

After completing these steps the content of the "ws" project will look as follows.

+ +


+ +

Congratulations you completed your 1st composite service applications, now its time to take it into
+action.

+ +

Use Services

+ +

In this step you launch and use the ws composite service application you created.

+ +

First select the "helloworld.composite" file, in your "ws" project. Right click to get the
+context menu, select Run As, and then Tuscany. The Tuscany runtime will start up adding
+the helloworld composition to its domain and will make the helloworld web service live.

+ +

The Eclipse console will show the following messages.

+ +

 

+ +

 Next Launch your Web browser and enter the following address:

+ +

http://localhost:8080/HelloWorld?wsdl 

+ +

You should now have your web service live, and the url should give you back a generated wsdl for the service.

+ +
+
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://helloworld" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:ns0="http://helloworld" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://helloworld" xmlns:ns="http://helloworld">
+         <xs:element name="sayHello">
+            <xs:complexType>
+               <xs:sequence>
+                  <xs:element minOccurs="0" name="param0" nillable="true" type="xs:string"/>
+               </xs:sequence>
+            </xs:complexType>
+
+         </xs:element>
+         <xs:element name="sayHelloResponse">
+            <xs:complexType>
+               <xs:sequence>
+                  <xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/>
+               </xs:sequence>
+            </xs:complexType>
+         </xs:element>
+      </xs:schema>
+
+  </wsdl:types>
+  <wsdl:message name="sayHelloRequest">
+    <wsdl:part name="parameters" element="ns0:sayHello">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="sayHelloResponse">
+    <wsdl:part name="parameters" element="ns0:sayHelloResponse">
+    </wsdl:part>
+  </wsdl:message>
+
+  <wsdl:portType name="HelloWorldPortType">
+    <wsdl:operation name="sayHello">
+      <wsdl:input message="ns0:sayHelloRequest" wsaw:Action="urn:sayHello">
+    </wsdl:input>
+      <wsdl:output message="ns0:sayHelloResponse" wsaw:Action="urn:sayHelloResponse">
+    </wsdl:output>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="HelloWorldHttpBinding" type="ns0:HelloWorldPortType">
+
+    <http:binding verb="POST"/>
+    <wsdl:operation name="sayHello">
+      <http:operation location="HelloWorld/sayHello"/>
+      <wsdl:input>
+        <mime:content part="sayHello" type="text/xml"/>
+      </wsdl:input>
+      <wsdl:output>
+        <mime:content part="sayHello" type="text/xml"/>
+      </wsdl:output>
+
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="HelloWorldSOAP11Binding" type="ns0:HelloWorldPortType">
+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="sayHello">
+      <soap:operation soapAction="urn:sayHello" style="document"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="HelloWorld">
+    <wsdl:port name="HelloWorldSOAP11port_http" binding="ns0:HelloWorldSOAP11Binding">
+      <soap:address location="http://192.168.209.1:8080/HelloWorld"/>
+    </wsdl:port>
+
+    <wsdl:port name="HelloWorldHttpport" binding="ns0:HelloWorldHttpBinding">
+      <http:address location="http://192.168.209.1:8080/HelloWorld"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
+
+
+

You are finished. You have created the HelloWorld web service using Apache Tuscany.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/build-your-light-tuscany-distribution.html b/site/trunk/site-publish/build-your-light-tuscany-distribution.html new file mode 100644 index 0000000000..b4c090e896 --- /dev/null +++ b/site/trunk/site-publish/build-your-light-tuscany-distribution.html @@ -0,0 +1,619 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Build Your Light Tuscany Distribution : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Build Your Light Tuscany Distribution + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ +
+ + + + +

What this is about

+ +

As of release 1.3 Tuscany SCA is distributed via one binary distribution that includes everything. Based on user feedback, choice of a smaller distribution packages is desireable. Tuscany community is in the process of addressing this requirement. Please see mailing list for that discussion. This is not the purpose of this page.

+ +

Tuscany users have asked for a write-up that highlights module dependencies. This enables them to build their own distribution which may have a lower or higher granularity than the pre-packaged binary distributions. Purpose of this page is to help users understand how to build their own tuscany SCA light distribution based on module dependency knowledge that is shared here.

+ +

Therefore:
+This page is not about building Tuscany binary distributions to distribute
+This page is about understanding dependencies so that users can build their own distribution

+ +

How to build your own distribution

+ +

Let's first understand the different categories of module types in Tuscany. This understanding will help us determine how to put the modules together to have a runnable and useful system.

+ +

Tuscany Modules Categorized

+ +

SCA programming Model: Assembly, Deployment, Management
+SCA provides a programming model for Construction, Assembly, Deployment and Management of network of services. Modules under these catetories support the SCA programming model.

+ +

Tuscany Container
+Modules in this category are specific to running SCA in a Tuscany environment.
+Tuscany container also provides plug points for different host types, bindings, implementations, policies as well as deployment and management (contributions and domain handling).

+ +

Policy
+Module in this category include support for enabling policies as well as policy types.

+ +

Binding
+Modules in this category include various bindings that support different protocols. Typically Bindings are used with SCA programming model, Tuscany container and some component implementation types.

+ +

Implementation
+Modules in this category include support for different component types. Basic SCA environment is needed to use any of these modules.

+ +

Host Environment
+Modules in this category include support for different host environments, such as Tomcat, Jetty, etc.

+ +

Module Category Dependency

+ +

This section explains the dependencies amongst various categories. This information can be used to define the scope of modules needed to perform different tasks using Tuscany.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Category Dependency
SCA Programming Model None. It runs in any container
Tuscany Container SCA Programming Model. Note that Tuscany Container has plug points for various host environments, but is not dependent on any.
policy Tuscany Container and SCA PM
Binding Tuscany Container and some host environment depending on the protocol type
Implementation Tuscany Container
+ +

Tuscany Modules Break Down by Category

+ +

Note All modules that represent models are highlighted in green.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Category Description SCA constructs Tuscany Modules Detail
SCA PM SCA assembly composite
+componentType
assembly
+assembly-xml
+assembly-xsd
Model interfaces for the SCA assembly
+XML Reader, Writer and Resolver
+XSDs for the assemlby model
SCA PM Java Interface interface.java interface
+interface-java
+interface-java-xml
Model for interface/operation
+across Java and WS
+Model for java interface
+Reader/Writer for interface.java
SCA PM WSDL Interface interface.wsdl interface
+interface-java-jaxws
+interface-wsdl
+interface-wsdl-xml
+
+xsd
+xsd-xml
Interface processor for JAXWS annotation
+WSDL port type as the interface definition
+Reader/Writer for interface.wsdl
+
+Model for XSD artifacts
+Reader/Writer to load/save XSDs
Policy Policy intent
+policySet
policy
+policy-xml
+policy-xml-ws
+
+policy-logging
+policy-security
+policy-security-jsr250
+policy-security-ws
+policy-transaction
+
definitions
+definitions-xml
Model for policy
+Read/Writer for policy XML
+Reader/Writer for WS policy XML
Tuscany Container Contribution Processing   contribution
+contribution-xml
+contribution-impl
+contribution-java
+contribution-namespace
+contribution-osgi
+contribution-resource
Process SCA contribution (archives) and build the model for containing artifacts
Tuscany Container Extensibility   extensibility
+extensibility-equinox
Provide the extensibility to plugin tuscany extensions such as utilities, XML processors,
+binding providers,
+implementation providers and databindings
Tuscany Container Runtime core and SPI for extensions   core
+core-spi
+core-databinding
Core activates SCA composite and build up the invocation chain between
+SCA services and references over the bindings
Tuscany Container Databinding   databinding
+
+databinding-axiom
+databinding-fastinfoset
+databinding-jaxb
+databinding-jaxb-axiom
+databinding-json
+databinding-saxon
+databinding-sdo
+databinding-sdo-axiom
+databinding-xmlbeans
A framework to deal with data representation and transformation
SCA PM SCA API   sca-api
SCA Java common APIs and Annotations
Tuscany Container SCA Node API, Impl and Launchers   node-api
+node-dynamic
+node-impl
+node-launcher
+node-launcher-equinox
+thirdparty-library
+
+node-launcher-webapp
+node-manager
+implementation-node
+implementation-node-runtime
+host-embedded
Api used to Start/Stop SCA node which bootstraps SCA runtime to run the application.
Tuscany Container SCA Domain Manager   domain-manager
+workspace
+workspace-impl
+workspace-xml
Define and manage domain
Tuscany Container Serviceability: Monitoring, Logging and Tracing   monitor
+monitor-logging
+tracing-aspectj
 
Host Types Host environments   host-http
host-jetty
host-tomcat
host-webapp
host-webapp-junit
HTTP protocol support for all http-based bindings, more can be added through host SPIs.
Binding Feed bindings:
Atom
RSS
binding.atom
binding.rss
binding-atom
binding-atom-abdera
binding-rss
binding-rss-rome
Feed support, including atom and rss protocols. Needs http type host environment.
Binding JSONRPC binding binding.jsonrpc binding-jsonrpc
binding-jsonrpc-runtime
JSONRPC for AJAX. Needs http type host environment. 
Binding RMI binding binding.rmi binding-rmi
host-rmi
RMI
Binding JMS binding binding.jms binding-jms
binding-jms-runtime
JMS
Binding EJB binding binding.ejb binding-ejb
binding-ejb-runtime
host-ejb
host-openejb
EJB
Binding CORBA binding binding.corba binding-corba
binding-corba-runtime
host-corba
host-corba-jee
host-corba-jse
host-corba-jse-tns
CORBA
Binding GData binding binding.gdata binding-gdata
binding-gdata-runtime
binding-gdata-gsoc
binding-gdata-runtime-gsoc
GData
Binding HTTP binding binding.http binding-http
binding-http-runtime
  HTTP
Binding Web Service binding   binding.ws binding-ws
binding-ws-axis2
binding-ws-axis2-policy
binding-ws-wsdlgen
binding-ws-xml
  WebServices
Binding SCA binding binding.sca binding-sca
binding-sca-xml
binding-sca-axis2
binding-sca-corba
binding-sca-jms
endpoint
  One of the binding-sca-(types) is needed. The default is corba?
Binding Java implementation implementation.java implementation-java
implementation-java-xml
implementation-java-runtime
  Java component types
Implementation BPEL implementation implementation.bpel implementation-bpel
implementation-bpel-jbpm
implementation-bpel-ode
  Use BPEL components in a composite application. Includes support for Apache ODE.
Implementation EJB implementation implementation.ejb implementation-ejb   EJBs as components in a composition
Implementation Scripting language based implementation implementation.script implementation-script   enables using Groovy, JavaScript, Ruby, Python as components.
Implementation Spring implementation implementation.spring implementation-spring   enables inclusion of Spring Application Context in a composite
Implementation   Widgets  implementation.widget implementation-widget
implementation-widget-runtime
 Widget support for web20
Implementation OSGi implementation implementation.osgi implementation-osgi  enables incusion of  OSGI bundles  in a composite
Implementation HTTP Resource implementation implementation.resource implementation-resource
implementation-resource-runtime
  HTTP resource type component
Implementation XQuery implementation implementation.xquery implementation-xquery  Xquery component
Implementation Data Access Services   data-api
data-engine-helper
implementation-das
implementation-data-xml
 
+ +

Relationship of Modules and OSGI Bundles

+

There are various ways and views for creating OSGI bundles. This can be discussed under "OSGI bundles" topic which can define how modules in a bundle are versioned together, start together and share class loaders. For the sake of understanding structure of modules, we can say that each module is an
+OSGI bundle. These can be pulled together to create coarser grain bundles if needed.

+ +

Use case Examples for Tuscany usage

+ + +

Use Tuscany as a runtime for SCA development

+ +

Example: Develop SCA applications in Tuscany based on POJOs
+Basic Category of Modules Needed: SCA PM, Tuscany Container, implementation.java, SCA default binding

+ +

Adopt the programming model to create a component model for your own runtime

+ +

Example: Use SCA for configuration of and ESB engine
+Basic Category of Modules Needed: SCA PM

+ +

Embed Tuscany within an application server

+ +

Example: Embed Tuscany with an application server such as Geronimo
+Basic Category of Modules Needed: SCA PM, Pick the features that are needed to run on the given platform, binding.ejb, implemenation.java, etc. In some cases you need to use host SPIs to provide the platform specific behavior. For examples check out host_* modules.

+ +

Create tools for SCA

+ +

Example: Write a development tool for SCA
+Basic Category of Modules Needed:_ SCA PM

+ +

Other scenarios

+ +

Please help add other interesting scenarios

+ +

How to create your own distribution

+ +

TBD
+Link to the page describing how to create a POM.xml and use maven to generate distribution.
+Talk about how maven figures out third party dependencies.

+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/build-your-own-tuscany-distribution.html b/site/trunk/site-publish/build-your-own-tuscany-distribution.html new file mode 100644 index 0000000000..cf516428cb --- /dev/null +++ b/site/trunk/site-publish/build-your-own-tuscany-distribution.html @@ -0,0 +1,625 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Build Your Own Tuscany Distribution : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Build Your Own Tuscany Distribution + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ +
+ + + + +

What this is about

+ +

As of release 1.3 Tuscany SCA is distributed via one binary distribution that includes everything. Based on user feedback, choice of a smaller distribution packages is desireable. Tuscany community is in the process of addressing this requirement. Please see mailing list for that discussion. This is not the purpose of this page.

+ +

Tuscany users have asked for a write-up that highlights module dependencies. This enables them to build their own distribution which may have a lower or higher granularity than the pre-packaged binary distributions. Purpose of this page is to help users understand how to build their own tuscany SCA light distribution based on module dependency knowledge that is shared here.

+ +

Therefore:
+This page is not about building Tuscany binary distributions to distribute
+This page is about understanding dependencies so that users can build their own distribution

+ +

How to build your own distribution

+ +

Let's first understand the different categories of module types in Tuscany. This understanding will help us determine how to put the modules together to have a runnable and useful system.

+ +

Tuscany Modules Categorized

+ +

SCA programming Model: Assembly, Deployment, Management
+SCA provides a programming model for Construction, Assembly, Deployment and Management of network of services. Modules under these catetories support the SCA programming model.

+ +

Tuscany Container
+Modules in this category are specific to running SCA in a Tuscany environment.
+Tuscany container also provides plug points for different host types, bindings, implementations, policies as well as deployment and management (contributions and domain handling).

+ +

Policy
+Module in this category include support for enabling policies as well as policy types.

+ +

Binding
+Modules in this category include various bindings that support different protocols. Typically Bindings are used with SCA programming model, Tuscany container and some component implementation types.

+ +

Implementation
+Modules in this category include support for different component types. Basic SCA environment is needed to use any of these modules.

+ +

Host Environment
+Modules in this category include support for different host environments, such as Tomcat, Jetty, etc.

+ +

Module Category Dependency

+ +

This section explains the dependencies amongst various categories. This information can be used to define the scope of modules needed to perform different tasks using Tuscany.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Category Dependency
SCA Programming Model None. It runs in any container
Tuscany Container SCA Programming Model. Note that Tuscany Container has plug points for various host environments, but is not dependent on any.
policy Tuscany Container and SCA PM
Binding Tuscany Container and some host environment depending on the protocol type
Implementation Tuscany Container
+ +

Tuscany Modules Break Down by Category

+ +

Note All modules that represent models are highlighted in green.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Category Description SCA constructs Tuscany Modules Detail
SCA PM SCA assembly composite
+componentType
assembly
+assembly-xml
+assembly-xsd
Model interfaces for the SCA assembly
+XML Reader, Writer and Resolver
+XSDs for the assemlby model
SCA PM Java Interface interface.java interface
+interface-java
+interface-java-xml
Model for interface/operation
+across Java and WS
+Model for java interface
+Reader/Writer for interface.java
SCA PM WSDL Interface interface.wsdl interface
+interface-java-jaxws
+interface-wsdl
+interface-wsdl-xml
+
+xsd
+xsd-xml
Interface processor for JAXWS annotation
+WSDL port type as the interface definition
+Reader/Writer for interface.wsdl
+
+Model for XSD artifacts
+Reader/Writer to load/save XSDs
Policy Policy intent
+policySet
policy
+policy-xml
+policy-xml-ws
+
+policy-logging
+policy-security
+policy-security-jsr250
+policy-security-ws
+policy-transaction
+
definitions
+definitions-xml
Model for policy
+Read/Writer for policy XML
+Reader/Writer for WS policy XML
Tuscany Container Contribution Processing   contribution
+contribution-xml
+contribution-impl
+contribution-java
+contribution-namespace
+contribution-osgi
+contribution-resource
Process SCA contribution (archives) and build the model for containing artifacts
Tuscany Container Extensibility   extensibility
+extensibility-equinox
Provide the extensibility to plugin tuscany extensions such as utilities, XML processors,
+binding providers,
+implementation providers and databindings
Tuscany Container Runtime core and SPI for extensions   core
+core-spi
+core-databinding
Core activates SCA composite and build up the invocation chain between
+SCA services and references over the bindings
Tuscany Container Databinding   databinding
+
+databinding-axiom
+databinding-fastinfoset
+databinding-jaxb
+databinding-jaxb-axiom
+databinding-json
+databinding-saxon
+databinding-sdo
+databinding-sdo-axiom
+databinding-xmlbeans
A framework to deal with data representation and transformation
SCA PM SCA API   sca-api
SCA Java common APIs and Annotations
Tuscany Container SCA Node API, Impl and Launchers   node-api
+node-dynamic
+node-impl
+node-launcher
+node-launcher-equinox
+thirdparty-library
+
+node-launcher-webapp
+node-manager
+implementation-node
+implementation-node-runtime
+host-embedded
Api used to Start/Stop SCA node which bootstraps SCA runtime to run the application.
Tuscany Container SCA Domain Manager   domain-manager
+workspace
+workspace-impl
+workspace-xml
Define and manage domain
Tuscany Container Serviceability: Monitoring, Logging and Tracing   monitor
+monitor-logging
+tracing-aspectj
 
Host Types Host environments   host-http
host-jetty
host-tomcat
host-webapp
host-webapp-junit
HTTP protocol support for all http-based bindings, more can be added through host SPIs.
Binding Feed bindings:
Atom
RSS
binding.atom
binding.rss
binding-atom
binding-atom-abdera
binding-rss
binding-rss-rome
Feed support, including atom and rss protocols. Needs http type host environment.
Binding JSONRPC binding binding.jsonrpc binding-jsonrpc
binding-jsonrpc-runtime
JSONRPC for AJAX. Needs http type host environment. 
Binding RMI binding binding.rmi binding-rmi
host-rmi
RMI
Binding JMS binding binding.jms binding-jms
binding-jms-runtime
JMS
Binding EJB binding binding.ejb binding-ejb
binding-ejb-runtime
host-ejb
host-openejb
EJB
Binding CORBA binding binding.corba binding-corba
binding-corba-runtime
host-corba
host-corba-jee
host-corba-jse
host-corba-jse-tns
CORBA
Binding GData binding binding.gdata binding-gdata
binding-gdata-runtime
binding-gdata-gsoc
binding-gdata-runtime-gsoc
GData
Binding HTTP binding binding.http binding-http
binding-http-runtime
  HTTP
Binding Web Service binding   binding.ws binding-ws
binding-ws-axis2
binding-ws-axis2-policy
binding-ws-wsdlgen
binding-ws-xml
  WebServices
Binding SCA binding binding.sca binding-sca
binding-sca-xml
binding-sca-axis2
binding-sca-corba
binding-sca-jms
endpoint
  One of the binding-sca-(types) is needed. The default is corba?
Binding Java implementation implementation.java implementation-java
implementation-java-xml
implementation-java-runtime
  Java component types
Implementation BPEL implementation implementation.bpel implementation-bpel
implementation-bpel-jbpm
implementation-bpel-ode
  Use BPEL components in a composite application. Includes support for Apache ODE.
Implementation EJB implementation implementation.ejb implementation-ejb   EJBs as components in a composition
Implementation Scripting language based implementation implementation.script implementation-script   enables using Groovy, JavaScript, Ruby, Python as components.
Implementation Spring implementation implementation.spring implementation-spring   enables inclusion of Spring Application Context in a composite
Implementation   Widgets  implementation.widget implementation-widget
implementation-widget-runtime
 Widget support for web20
Implementation OSGi implementation implementation.osgi implementation-osgi  enables incusion of  OSGI bundles  in a composite
Implementation HTTP Resource implementation implementation.resource implementation-resource
implementation-resource-runtime
  HTTP resource type component
Implementation XQuery implementation implementation.xquery implementation-xquery  Xquery component
Implementation Data Access Services   data-api
data-engine-helper
implementation-das
implementation-data-xml
 
+ +

Relationship of Modules and OSGI Bundles

+

There are various ways and views for creating OSGI bundles. This can be discussed under "OSGI bundles" topic which can define how modules in a bundle are versioned together, start together and share class loaders. For the sake of understanding structure of modules, we can say that each module is an
+OSGI bundle. These can be pulled together to create coarser grain bundles if needed.

+ +

Use case Examples for Tuscany usage

+ + +

Use Tuscany as a runtime for SCA development

+ +

Example: Develop SCA applications in Tuscany based on POJOs
+Basic Category of Modules Needed: SCA PM, Tuscany Container, implementation.java, SCA default binding

+ +

Adopt the programming model to create a component model for your own runtime

+ +

Example: Use SCA for configuration of and ESB engine
+Basic Category of Modules Needed: SCA PM

+ +

Embed Tuscany within an application server

+ +

Example: Embed Tuscany with an application server such as Geronimo
+Basic Category of Modules Needed: SCA PM, Pick the features that are needed to run on the given platform, binding.ejb, implemenation.java, etc. In some cases you need to use host SPIs to provide the platform specific behavior. For examples check out host_* modules.

+ +

Create tools for SCA

+ +

Example: Write a development tool for SCA
+Basic Category of Modules Needed:_ SCA PM

+ +

Other scenarios

+ +

Please help add other interesting scenarios

+ +

How to create your own distribution

+ +

TBD
+Link to the page describing how to create a POM.xml and use maven to generate distribution.
+Talk about how maven figures out third party dependencies.

+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/build-your-own-tuscany-sca-java-distribution.html b/site/trunk/site-publish/build-your-own-tuscany-sca-java-distribution.html new file mode 100644 index 0000000000..0fa06355ba --- /dev/null +++ b/site/trunk/site-publish/build-your-own-tuscany-sca-java-distribution.html @@ -0,0 +1,564 @@ + + + + + + + + + + + + + + + Apache Tuscany : Build Your Own Tuscany SCA JAVA Distribution + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Build Your Own Tuscany SCA JAVA Distribution + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + + +
+ +

What this is about

+ +

As of release 1.x Tuscany SCA is distributed via one binary distribution that includes everything. Based on user feedback, choice of a smaller distribution packages is desireable. Tuscany community is in the process of addressing this requirement in 2.x.

+ +

Given that this work is in progress, Tuscany users have asked for a write-up that highlights module dependencies to enable them to build their own distribution which may have a lower or higher granularity than the pre-packaged binary distributions. Purpose of this page is to help users understand how to build their own tuscany SCA light distribution based on module dependency knowledge that is shared here.

+ +

Therefore:
+This page is not about building Tuscany binary distributions to distribute
+This page is about understanding dependencies so that users can build their own distribution

+ +

How to build your own distribution

+ +

Let's first understand the different categories of module types in Tuscany. This understanding will help us determine how to put the modules together to have a runnable and useful system.

+ +

Tuscany Modules Categorized

+ +

SCA programming Model: Assembly, Deployment, Management
+SCA provides a programming model for Construction, Assembly, Deployment and Management of network of services. Modules under these catetories support the SCA programming model.

+ +

Tuscany Container
+Modules in this category are specific to running SCA in a Tuscany environment.
+Tuscany container also provides plug points for different host types, bindings, implementations, policies as well as deployment and management (contributions and domain handling).

+ +

Policy
+Module in this category include support for enabling policies as well as policy types.

+ +

Binding
+Modules in this category include various bindings that support different protocols. Typically Bindings are used with SCA programming model, Tuscany container and some component implementation types.

+ +

Implementation
+Modules in this category include support for different component types. Basic SCA environment is needed to use any of these modules.

+ +

Host Environment
+Modules in this category include support for different host environments, such as Tomcat, Jetty, etc.

+ +

Module Category Dependency

+ +

This section explains the dependencies amongst various categories. This information can be used to define the scope of modules needed to perform different tasks using Tuscany.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Category Dependency
SCA Programming Model None. It runs in any container
Tuscany Container SCA Programming Model. Note that Tuscany Container has plug points for various host environments, but is not dependent on any.
policy Tuscany Container and SCA PM
Binding Tuscany Container and some host environment depending on the protocol type
Implementation Tuscany Container
+
+ + +

Tuscany Modules Break Down by Category

+ +

Note All modules that represent models are highlighted in green.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Category Description SCA constructs Tuscany Modules Detail
SCA PM SCA assembly composite
+componentType
assembly
+assembly-xml
+assembly-xsd
Model interfaces for the SCA assembly
+XML Reader, Writer and Resolver
+XSDs for the assemlby model
SCA PM Java Interface interface.java interface
+interface-java
+interface-java-xml
Model for interface/operation
+across Java and WS
+Model for java interface
+Reader/Writer for interface.java
SCA PM WSDL Interface interface.wsdl interface
+interface-java-jaxws
+interface-wsdl
+interface-wsdl-xml
+
+xsd
+xsd-xml
Interface processor for JAXWS annotation
+WSDL port type as the interface definition
+Reader/Writer for interface.wsdl
+
+Model for XSD artifacts
+Reader/Writer to load/save XSDs
Policy Policy intent
+policySet
policy
+policy-xml
+policy-xml-ws
+
+policy-logging
+policy-security
+policy-security-jsr250
+policy-security-ws
+policy-transaction
+
definitions
+definitions-xml
Model for policy
+Read/Writer for policy XML
+Reader/Writer for WS policy XML
Tuscany Container Contribution Processing   contribution
+contribution-xml
+contribution-impl
+contribution-java
+contribution-namespace
+contribution-osgi
+contribution-resource
Process SCA contribution (archives) and build the model for containing artifacts
Tuscany Container Extensibility   extensibility
+extensibility-equinox
Provide the extensibility to plugin tuscany extensions such as utilities, XML processors,
+binding providers,
+implementation providers and databindings
Tuscany Container Runtime core and SPI for extensions   core
+core-spi
+core-databinding
Core activates SCA composite and build up the invocation chain between
+SCA services and references over the bindings
Tuscany Container Databinding   databinding
+
+databinding-axiom
+databinding-fastinfoset
+databinding-jaxb
+databinding-jaxb-axiom
+databinding-json
+databinding-saxon
+databinding-sdo
+databinding-sdo-axiom
+databinding-xmlbeans
A framework to deal with data representation and transformation
SCA PM SCA API   sca-api
SCA Java common APIs and Annotations
Tuscany Container SCA Node API, Impl and Launchers   node-api
+node-dynamic
+node-impl
+node-launcher
+node-launcher-equinox
+thirdparty-library
+
+node-launcher-webapp
+node-manager
+implementation-node
+implementation-node-runtime
+host-embedded
Api used to Start/Stop SCA node which bootstraps SCA runtime to run the application.
Tuscany Container SCA Domain Manager   domain-manager
+workspace
+workspace-impl
+workspace-xml
Define and manage domain
Tuscany Container Serviceability: Monitoring, Logging and Tracing   monitor
+monitor-logging
+tracing-aspectj
 
Host Types Host environments   host-http
host-jetty
host-tomcat
host-webapp
host-webapp-junit
HTTP protocol support for all http-based bindings, more can be added through host SPIs.
Binding Feed bindings:
Atom
RSS
binding.atom
binding.rss
binding-atom
binding-atom-abdera
binding-rss
binding-rss-rome
Feed support, including atom and rss protocols. Needs http type host environment.
Binding JSONRPC binding binding.jsonrpc binding-jsonrpc
binding-jsonrpc-runtime
JSONRPC for AJAX. Needs http type host environment. 
Binding RMI binding binding.rmi binding-rmi
host-rmi
RMI
Binding JMS binding binding.jms binding-jms
binding-jms-runtime
JMS
Binding EJB binding binding.ejb binding-ejb
binding-ejb-runtime
host-ejb
host-openejb
EJB
Binding CORBA binding binding.corba binding-corba
binding-corba-runtime
host-corba
host-corba-jee
host-corba-jse
host-corba-jse-tns
CORBA
Binding GData binding binding.gdata binding-gdata
binding-gdata-runtime
binding-gdata-gsoc
binding-gdata-runtime-gsoc
GData
Binding HTTP binding binding.http binding-http
binding-http-runtime
  HTTP
Binding Web Service binding   binding.ws binding-ws
binding-ws-axis2
binding-ws-axis2-policy
binding-ws-wsdlgen
binding-ws-xml
  WebServices
Binding SCA binding binding.sca binding-sca
binding-sca-xml
binding-sca-axis2
binding-sca-corba
binding-sca-jms
endpoint
  One of the binding-sca-(types) is needed. The default is corba?
Binding Java implementation implementation.java implementation-java
implementation-java-xml
implementation-java-runtime
  Java component types
Implementation BPEL implementation implementation.bpel implementation-bpel
implementation-bpel-jbpm
implementation-bpel-ode
  Use BPEL components in a composite application. Includes support for Apache ODE.
Implementation EJB implementation implementation.ejb implementation-ejb   EJBs as components in a composition
Implementation Scripting language based implementation implementation.script implementation-script   enables using Groovy, JavaScript, Ruby, Python as components.
Implementation Spring implementation implementation.spring implementation-spring   enables inclusion of Spring Application Context in a composite
Implementation   Widgets  implementation.widget implementation-widget
implementation-widget-runtime
 Widget support for web20
Implementation OSGi implementation implementation.osgi implementation-osgi  enables incusion of  OSGI bundles  in a composite
Implementation HTTP Resource implementation implementation.resource implementation-resource
implementation-resource-runtime
  HTTP resource type component
Implementation XQuery implementation implementation.xquery implementation-xquery  Xquery component
Implementation Data Access Services   data-api
data-engine-helper
implementation-das
implementation-data-xml
 
+
+ + +

Relationship of Modules and OSGI Bundles

+

There are various ways and views for creating OSGI bundles. This can be discussed under "OSGI bundles" topic which can define how modules in a bundle are versioned together, start together and share class loaders. For the sake of understanding structure of modules, we can say that each module is an
+OSGI bundle. These can be pulled together to create coarser grain bundles if needed.

+ +

Use case Examples for Tuscany usage

+ + +

Use Tuscany as a runtime for SCA development

+ +

Example: Develop SCA applications in Tuscany based on POJOs
+Basic Category of Modules Needed: SCA PM, Tuscany Container, implementation.java, SCA default binding

+ +

Adopt the programming model to create a component model for your own runtime

+ +

Example: Use SCA for configuration of and ESB engine
+Basic Category of Modules Needed: SCA PM

+ +

Embed Tuscany within an application server

+ +

Example: Embed Tuscany with an application server such as Geronimo
+Basic Category of Modules Needed: SCA PM, Pick the features that are needed to run on the given platform, binding.ejb, implemenation.java, etc. In some cases you need to use host SPIs to provide the platform specific behavior. For examples check out host_* modules.

+ +

Create tools for SCA

+ +

Example: Write a development tool for SCA
+Basic Category of Modules Needed:_ SCA PM

+ +

Other scenarios

+ +

Please help add other interesting scenarios

+ +

How to create your own distribution

+ +

TBD
+Link to the page describing how to create a POM.xml and use maven to generate distribution.
+Talk about how maven figures out third party dependencies.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/building-an-application.data/Legacy.App.As.Tuscany.Service.ppt b/site/trunk/site-publish/building-an-application.data/Legacy.App.As.Tuscany.Service.ppt new file mode 100644 index 0000000000..5fce00a52c Binary files /dev/null and b/site/trunk/site-publish/building-an-application.data/Legacy.App.As.Tuscany.Service.ppt differ diff --git a/site/trunk/site-publish/building-an-application.html b/site/trunk/site-publish/building-an-application.html new file mode 100644 index 0000000000..1e24a04f6a --- /dev/null +++ b/site/trunk/site-publish/building-an-application.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + Apache Tuscany : Building an Application + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Building an Application + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

Legacy Application as a Tuscany Service

+ +

I built my own simple C++ service component following the tutorial named "Build a simple C++ service component, part 1: A Quick tour of the C++ API for the Service Component Architecture" (thanks to Ed Slattery, Pete Robbins and Andrew Borley)

+ +

I also wrote a document that explains the way I exposed a legacy C application (called Jabon) as a Tuscany Service Component. I think it could be useful for the community. The link: http://cwiki.apache.org/confluence/download/attachments/47803/Legacy.App.As.Tuscany.Service.ppt

+ +

Any feedback will be appreciated.

+ +

Best regards,
+Mario

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/building-from-distro.html b/site/trunk/site-publish/building-from-distro.html new file mode 100644 index 0000000000..600608ec07 --- /dev/null +++ b/site/trunk/site-publish/building-from-distro.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Building from Distro + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SDO Overview > SDO Java > Developing SDO Java > Building from Distro + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Download a source distribution and follow the instructions in the BUILDING.txt file.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/building-from-svn.html b/site/trunk/site-publish/building-from-svn.html new file mode 100644 index 0000000000..24680df594 --- /dev/null +++ b/site/trunk/site-publish/building-from-svn.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + Apache Tuscany : Building From SVN + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SDO Overview > SDO Java > Developing SDO Java > Building From SVN + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

How to Build

+

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.
+
+md <local tuscany dir>
+cd <local tuscany dir>
+svn co -N https://svn.apache.org/repos/asf/incubator/tuscany/java
+cd java
+svn up sdo
+svn up -N spec
+cd spec
+svn up sdo-api

+ +

Run "mvn" under <local tuscany dir>/java directory to install POM files from the root project to the local repository

+ +


+cd <local tuscany dir>/java
+mvn -N
+cd spec
+mvn -N
+cd ../sdo
+mvn -N (alternatively, run without the -N option - see Note below)

+ +

You can now build SDO project as a whole or build the individual SDO subprojects.

+

Build SDO project

+

This step builds all subprojects in the source tree at once
+
+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.

+ +

Build sub projects of SDO individually

+ +

Build sdo.spec project

+ +


+cd <local tuscany dir>/java/spec/sdo-api
+mvn
+mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using Eclipse for development.)

+ +

Build sdo.impl project
+
+cd <local tuscany dir>/java/sdo/impl
+mvn
+mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using Eclipse for development.)

+ +

Build sdo.tools project
+
+cd <local tuscany dir>/java/sdo/tools
+mvn
+mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using Eclipse for development.)

+ +

Build sdo.samples project
+
+cd <local tuscany dir>/java/sdo/sample
+mvn
+mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using Eclipse for development.)

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/building-sca-for-java.html b/site/trunk/site-publish/building-sca-for-java.html new file mode 100644 index 0000000000..47a9e54d3c --- /dev/null +++ b/site/trunk/site-publish/building-sca-for-java.html @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + Apache Tuscany : Building SCA for Java + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Building SCA for Java + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +

Preparation

+

To download the source you will need a subversion client. Linux distributions typically come with a command line svn tool. Tortoise SVN seems popular on windows.
+You will also need maven and a 1.5 JDK. Maven can be downloaded from Apache Maven Site

+

Choose and download a source level

+

Tuscany's Java source can be found in subversion at https://svn.apache.org/repos/asf/incubator/tuscany/. You can either build directly from HEAD, or use one of the tags. Building from head means you'll always be building the latest stuff... however, the down side of this is that it's unstable and may sometimes fail to build. The following table should help you choose what to check out. You'll need a subversion client to

+
+ + + + + + + + + + + + + + + + + + + + + +
Branch Comment Subversion checkout
HEAD The very latest, includes changes for the 1.0 SCA specifications. Not really a branch, but you know that . This is actually SCA, SDO and DAS, but there isn't a neat "download just thew SCA part of Tuscany URL that I'm aware of... svn co +https://svn.apache.org/repos/asf/incubator/tuscany/java/ +

pre-spec-changes SCA for Java as per the 0.95 version of the specification, should be more stable than head svn co +https://svn.apache.org/repos/asf/incubator/tuscany/branches/pre-spec-changes/ +

sca-java-M2 This was/is the milestone 2 release, you probably don't want this svn co +https://svn.apache.org/repos/asf/incubator/tuscany/branches/sca-java-M2/ +

+
+ +
Why https ?
If you prefer you can use http instead of https. Personally I've found that https is more reliable than http, however I think this may be down to my local network and invisible proxies.
+

Do you need to overlay, or can you just download the tag and mvn from there ?

+ +

Build it

+

Building "HEAD"

+

Building "pre-spec-changes"

+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/building-your-own.html b/site/trunk/site-publish/building-your-own.html new file mode 100644 index 0000000000..406c919ce2 --- /dev/null +++ b/site/trunk/site-publish/building-your-own.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : Building your own + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Obtaining a Tuscany Java SCA Implementation > Building your own + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

I wonder if these sections really bellow here, or if we should have a link referenceing a "Tuscany Developer Guide" which covers this aspect... may not be important since the Tuscany Developer Guide and Tuscany User Guide exist in the same wiki space and so could simply form links to share content, however having a single wiki space could get a bit crowded

+ +

Setting up a build environment

+

Choosing a branch and understanding the source tree

+

Building - which bits to build

+

Debugging build issues

+

Build tips (eg. use of mvn -fn to continue building despite test case failures)

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/businessexceptions.data/StockExceptionTest.wsdl b/site/trunk/site-publish/businessexceptions.data/StockExceptionTest.wsdl new file mode 100644 index 0000000000..dbcaec5ee0 --- /dev/null +++ b/site/trunk/site-publish/businessexceptions.data/StockExceptionTest.wsdl @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/trunk/site-publish/businessexceptions.data/jaxws.wsimport.zip b/site/trunk/site-publish/businessexceptions.data/jaxws.wsimport.zip new file mode 100644 index 0000000000..70bfec1bc9 Binary files /dev/null and b/site/trunk/site-publish/businessexceptions.data/jaxws.wsimport.zip differ diff --git a/site/trunk/site-publish/businessexceptions.html b/site/trunk/site-publish/businessexceptions.html new file mode 100644 index 0000000000..8d1a24d7b5 --- /dev/null +++ b/site/trunk/site-publish/businessexceptions.html @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + Apache Tuscany : BusinessExceptions + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > BusinessExceptions + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Supporting Business Exceptions in Tuscany

+ + +

Business exception related concerns

+ + +

1. How to declare business exceptions?

+ +

What defines business exception on each interface type. (ie Java wsdl)
+In Java interface, business exceptions are declared checked exceptions specified on the operations of the services interface.
+Note declared unchecked (runtime) exceptions are not considered business exceptions.
+WSDL need to determine if all WSDL defined faults are business exceptions. Need to in investigate JAX-WS mapping of exceptions JAX-B databinding..
+SDO has no similar specification. Need to determine a similar means for SDO to provide reliable transforms between JAX-B and SDO.

+ +

2. How to represent business exceptions in Java?

+ +

In Java business exception are represented as non runtime exceptions. But not all runtime exceptions delivered in a message maybe a Business exception.
+If a non runtime exceptions is delivered to a component that is does not declare the exception the exception will be wrappered in a specified runtime exception.
+Jax-b need to further investigate the JAX-B specification and follow how it models business exceptions as objects.
+SDO there are no specific mappings provided for. May need to wrapper complex parts of an exception as SDO objects in a specific Java exception.

+
JAX-WS WSDL1.1 to Java mapping for faults
JAX-WS 2.0 spec defines the mapping rule for web service faults in section 2.5.
+

Using java exception to represent the Web Service fault:

+
+
+/**
+ * The java exception to represent the web service fault
+ */
+public class WebServiceFault extends Exception {
+    private static final long serialVersionUID = -3134446726685504039L;
+    private Object fault;
+
+    public WebServiceFault(String message, Object fault) {
+        super(message);
+        this.fault = fault;
+    }
+
+    public WebServiceFault(String message, Object fault, Throwable cause) {
+        super(message, cause);
+        this.fault = fault;
+    }
+
+    public Object getFault() {
+        return fault;
+    }
+}
+
+
+ +

3. How to transform business exceptions across databindings?

+ +

Provide in the data binding transformations between Axiom OMElement, SDO represented faults and JAX-B exceptions.
+How to identify as business exceptions during the transforms.

+ +

4. How to propagate business exceptions?

+ +

Determine how to propagate exception in the Tuscany runtime message in local interactions. Make sure TargetInvocation exceptions become unwrappered
+How in the case of webservice's binding propagate the message through web service binding.

+ +

A scenario to test the business exception handling

+ + +

Integration Tests (iTests)

+ +

Several integration tests have been created beginning with prefix exception.

+ +

Work items actions

+ +
    +
  • Either investigate using existing complex type conversions or add additional interfaces to databinding framework for transformation of Exceptions.
  • +
  • Make SDO generated exceptions match as close as possible to JAX-B. what annotations to SDOs could be added
  • +
  • Augment Java introspector to capture JAX-B annotations in logical types to help assist in providing hints to determine matching exceptions.
  • +
  • Use when provided WSDL qname of Exception's message name to match exceptions. If not provided fall back to name matching and possible use of packagename annotations to resolve matching type.
  • +
  • Attempt to do actual conversion through Axiom transform. If conversion fails try using simple conversion through copying of respective field members.
  • +
  • Check that only declared checked exceptions are thrown. Wrapper all other checked exceptions.
  • +
+ + +

Questions:

+ +
    +
  • If the originating exception is a Business exception and conversions fails should we have a Tuscany standard runtime exception that will have basic message from the originating exception set ? Should we just pick one of the business exceptions on receiving operation ? This might be more robust than throwing a runtime exception.
  • +
  • What runtime exception should undeclared, checked exceptions be wrappered in? Tuscany defined ? just RuntimeException ? java.lang.reflect.UndeclaredThrowableException? I can see an SCA client still wanting to be "robust" capturing this and acting on it.
  • +
  • Will not directly validate webservices exceptions until axis binding is at incubator-snapshot (kernel trunk) level
  • +
  • How are we currently mapping operations during wiring in Tuscany with respect to exceptions ? Need to see if Exceptions are part of operations signature.
  • +
+ + +

Implementation Decisions

+
    +
  • Currently we are unwrappering at the TargetInvokerExtension all exceptions and passing them on the message path.
  • +
  • System exceptions happening during the processing of a message are thrown up the stack.
  • +
  • We have made some decision on the support of SDO exception wrappers and example of can be seen in the exceptionXbindingTest iTest
    +This closely resembles the JAX-B pattern in dealing with faults. One exception is we currently have a FAULT_ELEMENT field type QName on the exception to help tie back to original wsdl element it is associate to.
  • +
+ + +

Appendix

+ + +

Axis2 WSDL2Java

+ +
Exception generated by Axis2 1.1
+
+package stockexceptiontestservice.scatesttool;
+
+public class InvalidSymbolFaultException extends java.lang.Exception{
+
+    private stockexceptiontestservice.scatesttool.InvalidSymbolFault faultMessage;
+
+    public InvalidSymbolFaultException() {
+        super("InvalidSymbolFaultException");
+    }
+
+    public InvalidSymbolFaultException(java.lang.String s) {
+       super(s);
+    }
+
+    public InvalidSymbolFaultException(java.lang.String s, java.lang.Throwable ex) {
+      super(s, ex);
+    }
+
+    public void setFaultMessage(stockexceptiontestservice.scatesttool.InvalidSymbolFault msg){
+       faultMessage = msg;
+    }
+
+    public stockexceptiontestservice.scatesttool.InvalidSymbolFault getFaultMessage(){
+       return faultMessage;
+    }
+}
+
+
The generated exception has the getter and setter for the fault: setFaultMessage(...) and getFaultMessage() and that's the pattern Axis2 adopts for web service fault to java exception mapping. + +

The InvalidSymbolFault is a generated class to represent the fault. It can be generated using different databindings such as ADB, JAXB (and hopefully SDO in the future).

+ + + +

JAX-WS RI 2.1 WSDL2Java

+ +

Rick provided the WSDL and generated code from JAX-WS RI 2.1.

+ +

StockExceptionTest.wsdl

+ +

jaxws.wsimport.zip

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/c-sdo-menu.html b/site/trunk/site-publish/c-sdo-menu.html new file mode 100644 index 0000000000..09e89724cd --- /dev/null +++ b/site/trunk/site-publish/c-sdo-menu.html @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + Apache Tuscany : C++ SDO Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SDO General Menu > C++ SDO Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
Unable to render {include} Couldn't find a page to include called: SDO
+ + +
Resources
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/changesummaryprocessing.html b/site/trunk/site-publish/changesummaryprocessing.html new file mode 100644 index 0000000000..4ad5f5775a --- /dev/null +++ b/site/trunk/site-publish/changesummaryprocessing.html @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + Apache Tuscany : ChangeSummaryProcessing + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > ChangeSummaryProcessing + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

ChangeSummaryProcessing

+ +

SDO provides an important feature called the ChangeSummary. Using this feature, a graph of related DataObjects can track changes made to iteself. These changes include additions to the graph, deletions, DataObject property (attribute) changes and even changes to object relationships.

+ +

The RDB DAS leverages the SDO ChangeSummary to drive graph chages to a database. Here is a simple example:

+
+

DAS das = DAS.FACTORY.createDAS(getConnection());
+ Command select = das.createCommand("Select * from CUSTOMER where ID = 1");
+ DataObject root = select.executeQuery();

+ +

DataObject customer = (DataObject) root.get("CUSTOMER[1]");
+ customer.set("LASTNAME", "Pavick");
+ das.applyChanges(root);

+
+

The first half of this example creates a new read command and executes it. The result is a graph of DataObjects (in this case just one) represented by the containing "root".

+ +

The second half of the example makes modification to a single object in the graph and then calls the applyChanges() method. As part of the applyChanges processing, the das will scan the SDO ChangeSummary and notice the modified DataObject. It will then generate the UPDATE statement required to reflect the change to the database:

+
+
UPDATE CUSTOMER SET LASTNAME = 'Pavick' WHERE ID = 1
+
+
+

Notice that only a single column is updated rahther than all columns. This is because the SDO ChangeSummary has enough fidelity to track changes on a property-by-property bases and the das has the ability to generate partial updates.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/chinese-portal.html b/site/trunk/site-publish/chinese-portal.html new file mode 100644 index 0000000000..592e5cbdc5 --- /dev/null +++ b/site/trunk/site-publish/chinese-portal.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + Apache Tuscany : Chinese Portal + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Chinese Portal + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Apache Tuscany 中文导航

+ +

简介

+

Apache Tuscany 提供全方位的开源SOA基础架构以利于开发, 组装, 发布, 管理构件式应用服务(Composite Applications)及数据处理. 该项目实现服务构件体系(SCA: Service Component Architecture)和服务数据对象(SDO: Service Data Objects)等OASIS OpenCSA(http://www.oasis-opencsa.org/)标准.

+ +

Apache Tuscany 提供开放式可扩展的运行环境以支持现在和将来的各种技术.这将解除应用程序对底层技术的依赖和偶合,使得跨技术网络平台的组装成为可能并大大简化. 

+
    +
  • 多种构件实现, 包括Java, BPEL, XQuery, JavaScript
  • +
+ + +
    +
  • 多种通讯协议, 包括RMI, Web Services, JSONRPC, Feed, EJB, CORBA
  • +
+ + +
    +
  • 多种接口语言, 包括Java , WSDL
  • +
+ + +
    +
  • 多种数据绑定, 包括XML, JavaBeans, JAXB, SDO, XMLBeans, JSON, AXIOM
  • +
+ + +

Apache Tuscany集成其他技术包括OSGi, Spring, JEE和Web 2.0. 该项目提供了从小型到企业级业务的广谱支持. 解决方案提供商,中间件平台提供商和最终用户和开发人员都可获益. Tuscany是一轻载的平台,可以独立运行或嵌入在WebSphere, Geronimo, Tomcat和Jetty等应用服务器中.

+ +

我们真心希望有更多来自中国的用户使用Tuscany SCA/SDO, 有更多开发人员成为Tuscany开源项目的Committer和PMC成员, 一起推动Tuscany的进步!

+ + +

Tuscany SCA 中文论坛

+ + + + + + + + + +
+ Google Groups +
+ 加入Tuscany SCA中文论坛 +
+ 电子邮件(Email): + +
+ 访问Tuscany SCA中文论坛
+English Translation of the Tuscany SCA Chinese Forum +
+ + +

最新更新

+ + +SCA规范中文版 + + + +

建设Tuscany中文官网

+ +

http://cwiki.apache.org/confluence/display/TUSCANYWIKI/Chinese+Web+Site

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/column1.html b/site/trunk/site-publish/column1.html new file mode 100644 index 0000000000..746a161654 --- /dev/null +++ b/site/trunk/site-publish/column1.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + Apache Tuscany : Column1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Tuscany Dashboard > Column1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/column2.html b/site/trunk/site-publish/column2.html new file mode 100644 index 0000000000..dd853fd208 --- /dev/null +++ b/site/trunk/site-publish/column2.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + Apache Tuscany : Column2 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Tuscany Dashboard > Column2 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/column3.html b/site/trunk/site-publish/column3.html new file mode 100644 index 0000000000..4cde2acdce --- /dev/null +++ b/site/trunk/site-publish/column3.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + Apache Tuscany : Column3 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Tuscany Dashboard > Column3 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
Apache Tuscany blog
+
Unknown macro: {rss}
+
+
PlanetApache.org blog
+
Unknown macro: {rss}
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/committers.html b/site/trunk/site-publish/committers.html new file mode 100644 index 0000000000..601a9b5af7 --- /dev/null +++ b/site/trunk/site-publish/committers.html @@ -0,0 +1,340 @@ + + + + + + + + + + + + + + + Apache Tuscany : Committers + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Committers + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + +

Apache Tuscany committers

+ +

The people listed below have made significant contributions to Apache Tuscany and have earned committer status.

+ +

In addition to being committers, some of the following people are also members of the Project Management Committee (PMC). Refer to the How the ASF works for details on meritocracy.

+ +

If you would like to contribute to Apache Tuscany, please check the Getting Involved page to see how you can contribute.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Id Name PMC Member
adrianocrestani Adriano Crestani
amita Amita Vadhavkar  
ajborley Andrew Borley  
antelder Ant Elder
beckerdo Dan Becker
bdaniel Brent Daniel  
bjohnson Brady Johnson
dchauhan Dhaval Chauhan  
dkulp Dan Kulp  
dougsleite Douglas Siqueira Leite  
fmoga Florian Moga
frankb Frank Budinsky
fuhwei Fuhwei Lwo  
giorgio Giorgio Zoppi  
hmahbod Haleh Mahbod
isilval Ignacio Silva-Lepe
jsdelfino Jean-Sebastien Delfino
kelvingoodson Kelvin Goodson
kwilliams Kevin Williams  
lresende Luciano Resende
mcombellack Mark Combellack
myoder Michael Yoder  
edwardsmj Mike Edwards
ocastaneda Oscar Castaneda  
nash Simon Nash
ramkumar Ramkumar Ramalingam
rsivaram Rajini Sivaram  
rfeng Raymond Feng
robbinspg Pete Robbins
scottkurz Scott Kurz
slaws Simon Laws
svkrish Venkata Krishnan
vamsic007 Vamsavardhana Reddy  
wjaniszewski Wojciech Janiszewski
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/community-menu.html b/site/trunk/site-publish/community-menu.html new file mode 100644 index 0000000000..c0657453bf --- /dev/null +++ b/site/trunk/site-publish/community-menu.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + Apache Tuscany : Community Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > Community Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+ +
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/community.data/brazil.jpg b/site/trunk/site-publish/community.data/brazil.jpg new file mode 100644 index 0000000000..a33706fe76 Binary files /dev/null and b/site/trunk/site-publish/community.data/brazil.jpg differ diff --git a/site/trunk/site-publish/community.data/brazil.jpg.jpeg b/site/trunk/site-publish/community.data/brazil.jpg.jpeg new file mode 100644 index 0000000000..efbb55e8ab Binary files /dev/null and b/site/trunk/site-publish/community.data/brazil.jpg.jpeg differ diff --git a/site/trunk/site-publish/community.data/chinese.jpg b/site/trunk/site-publish/community.data/chinese.jpg new file mode 100644 index 0000000000..2515c7093c Binary files /dev/null and b/site/trunk/site-publish/community.data/chinese.jpg differ diff --git a/site/trunk/site-publish/community.data/chinese.jpg.jpeg b/site/trunk/site-publish/community.data/chinese.jpg.jpeg new file mode 100644 index 0000000000..a32b7610f0 Binary files /dev/null and b/site/trunk/site-publish/community.data/chinese.jpg.jpeg differ diff --git a/site/trunk/site-publish/community.html b/site/trunk/site-publish/community.html new file mode 100644 index 0000000000..b0058d8c0c --- /dev/null +++ b/site/trunk/site-publish/community.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : Community + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > Community + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/componentizing-our-runtime.data/Architecture b/site/trunk/site-publish/componentizing-our-runtime.data/Architecture new file mode 100644 index 0000000000..da5d22eb40 --- /dev/null +++ b/site/trunk/site-publish/componentizing-our-runtime.data/Architecture @@ -0,0 +1 @@ +A new Gliffy diagram

]]>
\ No newline at end of file diff --git a/site/trunk/site-publish/componentizing-our-runtime.data/comp-architecture.jpg b/site/trunk/site-publish/componentizing-our-runtime.data/comp-architecture.jpg new file mode 100644 index 0000000000..ad9a046efc Binary files /dev/null and b/site/trunk/site-publish/componentizing-our-runtime.data/comp-architecture.jpg differ diff --git a/site/trunk/site-publish/componentizing-our-runtime.data/comp-architecture.jpg.jpeg b/site/trunk/site-publish/componentizing-our-runtime.data/comp-architecture.jpg.jpeg new file mode 100644 index 0000000000..1a55aca6cc Binary files /dev/null and b/site/trunk/site-publish/componentizing-our-runtime.data/comp-architecture.jpg.jpeg differ diff --git a/site/trunk/site-publish/componentizing-our-runtime.data/metadata-usage.jpg b/site/trunk/site-publish/componentizing-our-runtime.data/metadata-usage.jpg new file mode 100644 index 0000000000..820a1a0fa0 Binary files /dev/null and b/site/trunk/site-publish/componentizing-our-runtime.data/metadata-usage.jpg differ diff --git a/site/trunk/site-publish/componentizing-our-runtime.data/metadata-usage.jpg.jpeg b/site/trunk/site-publish/componentizing-our-runtime.data/metadata-usage.jpg.jpeg new file mode 100644 index 0000000000..1e655330f4 Binary files /dev/null and b/site/trunk/site-publish/componentizing-our-runtime.data/metadata-usage.jpg.jpeg differ diff --git a/site/trunk/site-publish/componentizing-our-runtime.html b/site/trunk/site-publish/componentizing-our-runtime.html new file mode 100644 index 0000000000..082188aed3 --- /dev/null +++ b/site/trunk/site-publish/componentizing-our-runtime.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + Apache Tuscany : Componentizing our runtime + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Componentizing our runtime + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Some initial thoughts to help discuss how we could componentize our runtime.

+ +

Architecture 

+ +

A componentized Tuscany runtime kernel will allow for different integration strategies with various app servers and runtime environments.

+ +

+ +

Metadata usage

+ +

Model, assemble, deploy, manage - How can we provide consistent SCA metadata to all these tasks?
+

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/composing-components-into-composites.html b/site/trunk/site-publish/composing-components-into-composites.html new file mode 100644 index 0000000000..25844d57ac --- /dev/null +++ b/site/trunk/site-publish/composing-components-into-composites.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + Apache Tuscany : Composing components into Composites + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Composing components into Composites + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/concept-conventionoverconfiguration.html b/site/trunk/site-publish/concept-conventionoverconfiguration.html new file mode 100644 index 0000000000..5c11cd575b --- /dev/null +++ b/site/trunk/site-publish/concept-conventionoverconfiguration.html @@ -0,0 +1,157 @@ + + + + + + + + Concept - ConventionOverConfiguration + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java Project > RDB DAS > RDB DAS - User Guide > Concept - ConventionOverConfiguration + +
+ + + + + + +
+
+ +
+ +
+ Added by Adriano Crestani, last edited by Luciano Resende on Apr 29, 2007 +  (view change) + +
+ +
+
+

ConventionOverConfiguration

+ +

This concept reflects the notion that configuration (defining a bunch of stuff in a side file) can be avoided by following convention (adhering to prescribed patterns) and that this is generally a good thing. The RDB DAS has several reasonable conventions in place and using these can significantly reduce a developer's work-load.

+ +

As an example, the RDB DAS provides a straight-forward, one-to-one mapping of database tables to DataObject Types and from table columns to DataObject properties. If a user provides no mapping information to the contrary, a graph of DataObjects returned by the DAS will directly map Types/Properties to the Tables/Columns queried.

+ +

For example, consider a database with the following table:

+
+
TABLE CUSTOMER
+     ID         INTEGER
+     LASTNAME   VARCHAR(20)
+     ADDRESS    VARCHAR(30)
+
+

If an application uses the DAS to query this table with the following SQL statement:

+
+
SELECT * FROM CUSTOMER
+
+
+

The DAS will return a graph of DataObjects each of Type CUSTOMER and each instance in will have three properties: (ID, LASTNAME, ADDRESS). Here is the example code. Note that no configuration data is provided at all.

+
+

DAS das = DAS.FACTORY.createDAS(getConnection());
+ Command readCustomers = das.createCommand("select * from CUSTOMER");
+ DataObject root = readCustomers.executeQuery();

+
+

Another piece of convention followed by the RDB DAS has to do with database table keys. When asked to "apply changes", the RDB DAS scans the SDO ChangeSummery and generates the set of INSERT/UPDATE and DELETE statements needed to flush the graph changes to the database. To generate the correct statements the RDB DAS needs to know how a DataObject's properties map to a database table key. In typical Object/Relational mappings frameworks, this information is provided in a config file with something like this:

+
+
<Table tableName="COMPANY">
+      <Column columnName="ID" primaryKey="true"/>
+      .
+      .
+      .
+   </Table>
+
+
+

However, the RDB DAS understands is that, in the absence of user provided cofiguration data, a DataObject property named "ID" maps to a key column named "ID" in the database. If a developer follows this convention (naming key columns "ID") then this key-mapping information need not be specified in a configuration file.

+ +

The RDB DAS also has convention in place for mapping DataObject relationships. If a database table (yyy) has a column named xxx_ID then the DAS will assume, in the absence of config data to the contrary, that there is a one-to-many relationship from table xxx to table yyy and that the key column for table xxx is named "ID".

+ +

There is more "convention over configuration" coming. We are currently looking into support for optimistic concurrency control conventions and other areas.

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/configurable-database-generated-keys-support.html b/site/trunk/site-publish/configurable-database-generated-keys-support.html new file mode 100644 index 0000000000..3635ec4144 --- /dev/null +++ b/site/trunk/site-publish/configurable-database-generated-keys-support.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + Apache Tuscany : Configurable database generated keys support + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > Configurable database generated keys support + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Configurable database generated keys support

+ +

New boolean attribute in Config - "generatedKeysSupported" (default value=TRUE). User can set true/false for this in Config. If not set in Config, JDB Metadata API check supportsGetGeneratedKeys() is done to detect whether to use auto generated keys during insert.

+ +

This gived user flexibility to turn on/off support for database generated keys during INSERT based on the
+database vendor/driver version in use. Particularly when user is sure that the DBMS driver does not support
+autogenerated keys, he can configure FALSE value through config as below.

+ +

Note: For Derby, always assumed generatedKeysSupported=TRUE. This is because current Derby API return FALSE for supportsGetGeneratedKeys(), as it is partially implemented, but in DAS context, this support is sufficient.

+ +
+
<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd" useGetGeneratedKeys="false">
+</Config>
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/connection-support-for-j2se-environment.html b/site/trunk/site-publish/connection-support-for-j2se-environment.html new file mode 100644 index 0000000000..0c34c44053 --- /dev/null +++ b/site/trunk/site-publish/connection-support-for-j2se-environment.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + Apache Tuscany : Connection support for J2SE environment + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > Connection support for J2SE environment + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Connection support for J2SE environment

+ +

So far DAS utilized JDBC Connection - either explicitly supplied by DAS invoker or available in the runtime context pre-configured using JNDI.

+ +

DAS config needs to have provision to support JDBC Connection for J2SE environment, when JNDI is not configured and connection is not explicitly supplied by the DAS invoker.

+ +

Below are the changes in DAS Config xsd. The attribute dataSource and element ConnectionProperties
+are mutually exclusive. User needs to specify ONLY one of these. When ConnectionProperties is specified, DriverManager for appropriate database vendor is used to instantiate the JDBC Connection.
+This way the J2SE applications can use DAS.

+ +

When dataSource is specified, the JNDI context is searched for pre-configured dataSource. This mode is useful, when Web Containers like Tomcat have the resource pre-defined for the dataSource.

+ +
+
   <xsd:complexType name="ConnectionProperties">
+      <xsd:attribute name="driverClass" type="xsd:string"/>
+      <xsd:attribute name="databaseURL" type="xsd:string"/>
+      <xsd:attribute name="userName" type="xsd:string" default=""/>
+      <xsd:attribute name="password" type="xsd:string" default=""/>
+      <xsd:attribute name="loginTimeout" type="xsd:int" default="0"/>      
+   </xsd:complexType>
+   
+   <xsd:complexType name="ConnectionInfo">
+      <xsd:sequence>
+        <xsd:element  maxOccurs="1" minOccurs="0" name="ConnectionProperties" type="config:ConnectionProperties"/>
+      </xsd:sequence>
+      <xsd:attribute name="dataSource" type="xsd:string"/>
+      <xsd:attribute name="managedtx" type="xsd:boolean" default="true"/>
+   </xsd:complexType>
+
+
+ +

Below is one example DAS config, using Derby database.

+ +
+
 <Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd"> 
+    
+    <!--Uncomment below for derby test-->
+	<ConnectionInfo>
+		<ConnectionProperties
+			driverClass="org.apache.derby.jdbc.EmbeddedDriver"
+			databaseURL="jdbc:derby:target/dastest; create = true"
+			loginTimeout="600000"/>
+	</ConnectionInfo>
+   ....
+  </Config>
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/contributing-to-the-sdo-cts.html b/site/trunk/site-publish/contributing-to-the-sdo-cts.html new file mode 100644 index 0000000000..421529a54c --- /dev/null +++ b/site/trunk/site-publish/contributing-to-the-sdo-cts.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + Apache Tuscany : Contributing to the SDO CTS + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > Contributing to the SDO CTS + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/conventionoverconfiguration.html b/site/trunk/site-publish/conventionoverconfiguration.html new file mode 100644 index 0000000000..9995c7bc58 --- /dev/null +++ b/site/trunk/site-publish/conventionoverconfiguration.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + Apache Tuscany : ConventionOverConfiguration + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > ConventionOverConfiguration + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

ConventionOverConfiguration

+ +

This concept reflects the notion that configuration (defining a bunch of stuff in a side file) can be avoided by following convention (adhering to prescribed patterns) and that this is generally a good thing. The RDB DAS has several reasonable conventions in place and using these can significantly reduce a developer's work-load.

+ +

As an example, the RDB DAS provides a straight-forward, one-to-one mapping of database tables to DataObject Types and from table columns to DataObject properties. If a user provides no mapping information to the contrary, a graph of DataObjects returned by the DAS will directly map Types/Properties to the Tables/Columns queried.

+ +

For example, consider a database with the following table:

+
+
+TABLE CUSTOMER
+     ID         INTEGER
+     LASTNAME   VARCHAR(20)
+     ADDRESS    VARCHAR(30)
+
+
+

If an application uses the DAS to query this table with the following SQL statement:

+
+
SELECT * FROM CUSTOMER
+
+
+

The DAS will return a graph of DataObjects each of Type CUSTOMER and each instance in will have three properties: (ID, LASTNAME, ADDRESS). Here is the example code. Note that no configuration data is provided at all.

+
+

DAS das = DAS.FACTORY.createDAS(getConnection());
+ Command readCustomers = das.createCommand("select * from CUSTOMER");
+ DataObject root = readCustomers.executeQuery();

+
+

Another piece of convention followed by the RDB DAS has to do with database table keys. When asked to "apply changes", the RDB DAS scans the SDO ChangeSummery and generates the set of INSERT/UPDATE and DELETE statements needed to flush the graph changes to the database. To generate the correct statements the RDB DAS needs to know how a DataObject's properties map to a database table key. In typical Object/Relational mappings frameworks, this information is provided in a config file with something like this:

+
+
<Table tableName="COMPANY">
+      <Column columnName="ID" primaryKey="true"/>
+      .
+      .
+      .
+   </Table>
+
+
+

However, the RDB DAS understands is that, in the absence of user provided cofiguration data, a DataObject property named "ID" maps to a key column named "ID" in the database. If a developer follows this convention (naming key columns "ID") then this key-mapping information need not be specified in a configuration file.

+ +

The RDB DAS also has convention in place for mapping DataObject relationships. If a database table (yyy) has a column named xxx_ID then the DAS will assume, in the absence of config data to the contrary, that there is a one-to-many relationship from table xxx to table yyy and that the key column for table xxx is named "ID".

+ +

There is more "convention over configuration" coming. We are currently looking into support for optimistic concurrency control conventions and other areas.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/create-signing-key.html b/site/trunk/site-publish/create-signing-key.html new file mode 100644 index 0000000000..5d0d367892 --- /dev/null +++ b/site/trunk/site-publish/create-signing-key.html @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + Apache Tuscany : Create signing key + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Making releases > Create signing key + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

Create a code signing key

+ +

Install GNU GPG

+ +

Create a gpg config file eg c:\gpg\conf\gpg.conf with this contents:
+utf8-strings
+keyserver x-hkp://pgp.surfnet.nl/
+default-cert-check-level 3
+keyserver-options auto-key-retrieve include-subkeys
+no-mangle-dos-filenames
+no-secmem-warning

+ +

Set the GNUPGHOME environment var to point to that: set GNUPGHOME=\gpg\conf

+ +

gpg --gen-key

+ +

accept all defaults, use your apache email and a comment like "Code Signing Key", eg:

+ +

Real name: Ant Elder
+Email address: antelder@apache.org
+Comment: Code Signing Key

+ +

Use long hard to guess passphrase with numbers and miss spellings etc

+ +

now should be able to show that key with: gpg --list-keys

+ +

C:\>gpg --list-keys
+/gpgtest/conf\pubring.gpg
+-------------------------
+pub 1024D/481240F5 2007-06-28
+uid Ant Elder (Code Signing Key) <antelder@apache.org>
+sub 2048g/F6F122B8 2007-06-28

+ +

Upload that to a key server using the keyid, eg gpg --send-key 481240F5

+ +

Now if you go to http://pgp.surfnet.nl/ you should be able to search for you name and find the uploaded key

+ + +

Add this key to the KEYS file in the Tuscany SVN: https://svn.apache.org/repos/asf/incubator/tuscany/KEYS
+eg, check out the KEYS file then update with:

+ +

(gpg --list-sigs antelder@apache.org && gpg --armor --export antelder@apache.org) >> KEYS

+ + + + + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-c-architecture-guide.data/das graph as I suppose it shoud be.JPG b/site/trunk/site-publish/das-c-architecture-guide.data/das graph as I suppose it shoud be.JPG new file mode 100644 index 0000000000..1402f3b8f5 Binary files /dev/null and b/site/trunk/site-publish/das-c-architecture-guide.data/das graph as I suppose it shoud be.JPG differ diff --git a/site/trunk/site-publish/das-c-architecture-guide.data/das graph as I suppose it shoud be.JPG.jpeg b/site/trunk/site-publish/das-c-architecture-guide.data/das graph as I suppose it shoud be.JPG.jpeg new file mode 100644 index 0000000000..d8256c11a8 Binary files /dev/null and b/site/trunk/site-publish/das-c-architecture-guide.data/das graph as I suppose it shoud be.JPG.jpeg differ diff --git a/site/trunk/site-publish/das-c-architecture-guide.data/das_graph.JPG b/site/trunk/site-publish/das-c-architecture-guide.data/das_graph.JPG new file mode 100644 index 0000000000..c5a3a06df2 Binary files /dev/null and b/site/trunk/site-publish/das-c-architecture-guide.data/das_graph.JPG differ diff --git a/site/trunk/site-publish/das-c-architecture-guide.data/das_graph.JPG.jpeg b/site/trunk/site-publish/das-c-architecture-guide.data/das_graph.JPG.jpeg new file mode 100644 index 0000000000..814cad6825 Binary files /dev/null and b/site/trunk/site-publish/das-c-architecture-guide.data/das_graph.JPG.jpeg differ diff --git a/site/trunk/site-publish/das-c-architecture-guide.html b/site/trunk/site-publish/das-c-architecture-guide.html new file mode 100644 index 0000000000..36c83390a1 --- /dev/null +++ b/site/trunk/site-publish/das-c-architecture-guide.html @@ -0,0 +1,662 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS C++ Architecture Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > DAS C++ Architecture Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + +

Overview

+ +

Service Data Object (SDO) and Service Component Architecture (SCA) are the basic building blocks in Service Oriented Architecture (SOA). SDO is the way of representing data in SCA. As the applications using SOA have back-end data representation in different formats like Database, File System, XML Based Data, etc., there is a need to provide a mapping between these data representations and SDO. C++ RDB DAS (Data Access Service for Relational Database) is the effort to suffice this mapping requirement for Relational Database.

+ +

Function Description

+ +

RDB DAS provides 2 major capabilities:-
+1) Execute SQL Queries and return result as a graph of Data Objects.
+2) Reflect changes made to a graph of Data Objects back to the database.
+It also supports explicit CUD SQL statements execution against database.
+Unable to render embedded object: File (rdbDAS.gif) not found.

+ +

Architecture

+ +

This section describes the overall architecture of C++ RDB DAS. The details are elaborated in Design Details. Also, for details of different DAS Configuration settings, refer to Configuration Schema(config.xsd).

+ +

DAS functions based on external Configuration. This configuration can be specified using file or can be programmatically build by the caller, using Config interface.

+ +

Design follows a factory pattern to create DAS instance. DAS instance contains Connection, Config and Commands.

+ +

The Connection can either be passed from caller or can be created using the Configuration information(not implemented yet). It is used for all the database operations done in that DAS instance and also for controlling transactions.

+ +

Commands hold all the commands from Configuration file and also the ones that are created programmatically on the fly. The Command is implemented using different inherited classes like Read/Insert/Update/Delete/OptimisticWrite with root parent class CommandImpl. More details on different classes will be in Design Details.

+ +

Config holds the reference for Configuration associated with the DAS instance and contains all details as mentioned in Configuration Schema (config.xsd).

+ +

Caller has 2 (and some other) main APIs available in DAS instance to use the Commands getCommand(name) and applyChanges(Data Object)

+
    +
  1. getCommand(name) is typically used to retrieve the Command (SQL String) available from Config. SQL String. User calls executeQuery() on this Command and based on whether it is CUD/Read operation. executeQuery() will return a root DataObject or a null DataObject.
  2. +
  3. applyChanges(Data Object) is the way to process a SDO DataObject and SDO ChangeSummary to create SQL UPDATE statement to be executed against database. More details on SDO integration are in Design Details.
  4. +
+ + +

User Interface

+ +

DAS exposes a set of interfaces to end user.

+
    +
  • DASFactory uses different options to produce DAS instance using Factory pattern.
    +Method Summary +
    + + + + + + + + + + + + + + + + +
    apache::das::DAS createDAS(apache::das::rdb::ConnectionPtr connection) Creates a DAS based on the provided connection
    apache::das::DAS createDAS(apache::das::Config config) Creates a DAS based on the provided config object
    apache::das::DAS createDAS(apache::das::Config config, apache::das::rdb::ConnectionPtr connection) Creates a DAS based on the provide config object and connection
    +
    +
  • +
+ + +
    +
  • DAS Interface to call APIs for DAS instance.
    +Field Summary +
    + + + + + +
    static apache::das::rdb::DASFactoryImpl getFactory()
    +
    + +

    Method Summary

    +
    + + + + + + + + + + + + + + + + +
    void applyChanges(commonj::sdo::DataObjectPtr root) The change history is scanned and modifications to the graph of data objects are flushed to the database.
    apache::das::rdb::CommandPtr createCommand(std::string sql) Creates a Command based on the provided SQL statement
    apache::das::rdb:: CommandPtr getCommand(std::string name) Gets the named command from this factory's inventory
    +
    +
  • +
+ + +
    +
  • Command Used to execute read / write (CRUD) on database.
    +Method Summary +
    + + + + + + +
    commonj::sdo::DataObjectPtr executeQuery() Performs the function defined by the command and return the results in the root DataObject
    +
    +
  • +
+ + +
    +
  • ConfigImpl is used to load configuration for RDB DAS instance from a XML file. A instance of this class can be empty or can load information from a XML file.
    +Constructor Summary +
    + + + + + + + + + +
    apache::das::rdb::ConfigImpl() creates an empty Config object
    apache::das::rdb::ConfigImpl(std::string xmlFilePath) creates a Config object based on data read from the specified XML file
    +
    + +

    Method Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    apache::das::rdb::Table& addTable(std::string tableName) create a Table object with the specified table name, adds it to the Config  object and returns a reference the created Table object
    void addCommand(std::string commandName, std::string sqlStatement) add a command on the Config object
    Relationship addRelationship(java.lang.String parentName, java.lang.String childName)  
    Relationship addRelationship(java.util.Vector parentNames, java.util.Vector childNames)  
    Command addSelectCommand(java.lang.String name, java.lang.String sql)  
    Table addTable(java.lang.String name, java.lang.String typeName)  
    Command addUpdateCommand(java.lang.String name, java.lang.String sql)  
    void addUpdateStatement(Table table, java.lang.String statement, java.lang.String parameters)  
    Config getConfig()  
    void setDataObjectModel(java.lang.String dataObjectModel)  
    +
    +
  • +
+ + +
    +
  • Converter A lightweight Table-column <--> DataObject-property converter framework. Converters allow a user to insert a transformation between a column's value and its destination DataObject property's value. For example, by default, a VARCHAR column will be represented as a String in its corresponding DataObject property. A user could insert a converter that transforms the VARCHAR value to an Integer. If this is done then although the column returns character data, the DataObject property will be an Integer
    +Method Summary +
    + + + + + + + + + + + +
    java.lang.Object getColumnValue(java.lang.Object propertyData) Transform the columnData object to a new value and possibly new type
    java.lang.Object getPropertyValue(java.lang.Object columnData) Transform the columnData object to a new value and possibly new type.
    +
    +
  • +
+ + +
    +
  • Pager An iterator-like interface to conveniently move through chunks of data. The idea is that a Pager works with a read Command. The read command returns a large amount of data and the client wants to work with chunks of it at a time. So the Pager is created on the command and each call to next returns the next chunk of data.
    +Method Summary +
    + + + + + + + + + + + + + + + + +
    DataObject getPage(int page) Return a specific identified page
    DataObject next() Get the next page of data
    DataObject previous() Get the page prior to the last page returned
    +
    +
  • +
+ + +
    +
  • GraphMerger is utility class implementation (no interface), to provide functions for flexibly managing DataObjects.
    +Constructor Summary +
    + + + + +
    GraphMerger()
    +
    + +

    Method Summary

    +
    + + + + + + + + + + + + + + + + + +
    void addPrimaryKey(java.lang.String key)
    DataObject emptyGraph(Config config)
    DataObject merge(DataObject primary, DataObject secondary)
    DataObject merge(java.util.List graphs)
    +
    +
  • +
+ + +

Class Diagram

+ +

Class Diagram

+ +

Design Details

+ +

Major classes are described here at high level to show how these fit in the complete picture. For
+methods/members details please refer to javadoc from binary distribution at Downloads.

+ +

DASFactoryImpl Expose methods to create DAS instance from Config or Connection or both.

+ +

DASImpl The sole instance of DAS existing for one DAS runtime. It contains MappingWrapper, JDBC Connection and a Map of all DAS Commands. To create appropriate instances of CommandImpl, DASImpl, scan's each Config Command for attribute kind, and based on that required instance of CommandImpl is added to the map. Connection from DataSource or Database Driver Manager both are supported. releaseResources() method allows external caller to close JDBC Connection when it is supplied by the caller.Provides methods to get/create DAS Commands and applyChanges(changed DataObject) to reflect DataObject changes to Database.

+ +

MappingWrapper Wrapper over DAS Config. Provides various get/set methods for all different elements in DAS Config.

+ +

ConnectionImpl Contains JDBC Connection, and whether it is managed by DAS/caller and also whether Database platform support auto-generated key column values.

+ +

BaseCommandImpl Parent class for all other CommandImpl classes. Contains MappingWrapper. setConnection() method to associate ConnectionImpl with each DAS Command.

+ +

ApplyChangesCommandImpl Extends BaseCommandImpl. Contains ChangeSummarizer. It is used to load DataObject's ChangeSummary and for each change, Generator classes (UpdateGenerator, DeleteGenerator) are called to form appropriate SQL Statement with parameters, which is executed against the Database.

+ +

CommandImpl Extends BaseCommandImpl and implements DAS Config's <Command>. So, in effect it is parent class for all explicit CRUD Commands. It contains Statement, Parameters and ResultSetShape.

+ +

WriteCommandImpl Extends CommandImpl. Parent for CUD. If SELECT(Read) is attempted, exception is thrown.

+ +

DeleteCommandImpl Extends WriteCommandImpl.

+ +

InsertCommandImpl Extends WriteCommandImpl. Supports Database generated keys.

+ +

UpdateCommandImpl Extends WriteCommandImpl.

+ +

OptimisticWriteCommandImpl Extends UpdateCommandImpl. Supports OCC feature. Here by design when a CollisionParameter's value is attempted to change more than once, the CollisionParameter does not allow its value change (as during first setValue(), flag indicating that value is changed is set). So, the attempt results in no database rows getting changes. On this condition exception is thrown as Update Collision is occurred.

+ +

ReadCommandImpl Extends CommandImpl. Used for explicit SELECT. Support's DAS feature, ResultDescriptor. If CUD is attempted, exception is thrown. Supports paging. When Query is executed (executeQuery()), the JDBC ResultSet is converted into DataObject Graph and returned to caller.

+ +

SPCommandImpl Extends ReadCommandImpl for StoredProcedure call. Method executeQuery() is used when the stored procedure returns ResultSet and method execute() is used when the stored procedure does not have any return ResultSet.
+Parameters hold both IN and OUT parameters.

+ +

PagerImpl Holds ReadCommandImpl, page size and current page index. Implements next(), previous(), getPage(index) methods. In each based on current page index and page size, the ReadCommandImpl is executed with start and end boundaries set.

+ +

ChangeFactory This class is used during DAS.applyChanges(). With changed DataObject and ChangeSummary, required type of ChangeOperation instance is created (like DeleteOperation, UpdateOperation). This instance of ChangeOperation holds appropriate CommandImpl, which in itself holds the Parameters. Thus for a given DAS Config and Connection, ChangeFactory is used to propagate DataObject changes to Database via CommandImpl.

+ +

ChangeSummarizer Main function of this class is load Changes based on root DataObject of applyChanges() Command MappingWrapper is used to sort the ChangeOperations in Changes.

+ +

Changes Contains DeleteList, InsertList, Update List pertaining to one applyChanges() command.

+ +

DeleteList Maintains ordered/unordered list of DeleteOperations. If DAS Config defines any Relationships, MappingWrapper aids in forming Delete Order for all the Tables undergoing DeleteOperation, based on Parent-Child relationships. If Delete Order is available, DeleteList forms a List following appropriate Referential Integrity. Otherwise no order is maintained.

+ +

InsertList Maintains ordered/unordered list of CreateOperations. If DAS Config defines any Relationships, MappingWrapper aids in forming Insert Order for all the Tables undergoing InsertOperation, based on Parent-Child relationships. If Insert Order is available, InsertList forms a List following appropriate Referential Integrity. Otherwise no order is maintained.

+ +

UpdateList As UpdateOperation happens on single Table, there is no reason for sorting based on any Referntial Relationships. So, this class is just a wrapper on ArrayList.

+ +

BaseGenerator Parent class for Delete/Update/InsertGenerator. If in DAS Config, any Table Column specifies a ColumnConverter class, BaseGenerator, returns a new instance of this class.

+ +

DeleteGenerator Extends BaseGenerator. Based on Table and DAS Config, DELETE statement is generated with Primary Keys in WHERE clause. Using this, DeleteCommandImpl is instantiated. For Parameters in DeleteCommandImpl ColumnConverter is considered if present.

+ +

InsertGenerator Same as DeleteGenerator. Here Database Key value generation is also considered.

+ +

UpdateGenerator Extends BaseGenerator. In UPDATE statement WHERE clause Primary Keys are considered as well as Default OCC policy is considered. Also check is implemented for any violation for Foreign Key relationships. Parameters in UpdateCommandImpl consider ColumnConvert as appropriate. OCC attributes in DAS Config for <Column>, viz. managed and collision are considered in SET and WHERE clause formation respectively.

+ +

ChangeOperation Abstract parent class for Create/Delete/UpdateOperation. It contains WriteCommand, DatabaseObject and any generated ID.

+ +

DeleteOperation Extends ChangeOperation. Uses SDO's ChangeSummary based OldValues as in the DataGraph , deleted objects have lost their settings.

+ +

CreateOperation Extends ChangeOperation, makes use of Generated ID.

+ +

UpdateOperation Extends ChangeOperation and makes use of generated ID.

+ +

DatabaseObject Wraps DataObject. If a field is FK, it will return value from parent. It also sets the Database generated value in primary key property of DataObject.

+ +

RowObjects Holds a Map of TableName->DataObject. It uses relationship information to associate these DataObjects to form DataGraph .

+ +

GraphBuilderMetadata Class that form Metadata for forming DataObjects based on MetaData available in JDBC ResultSet. It uses DAS Config, ResultSet and ResultSetShape to form a Collection of ResultMetaData. It is used in ResultSetProcessor and thus further in RowObjects.

+ +

ResultSetProcessor This class is used to transform data in ResultSet into set of inter-related DataObjects. It contains TableRegistry, GraphBuilderMetadata and DataObjectMaker. Using GrapbBuilderMetadata and the JDBC ResultSet, it forms
+ResultSetRow , then form RowObjects and connects related DataObjects using Relationship information from RowObjects to form the completed DataGraph.

+ +

DataObjectMaker Forms DataObject based on TableData. It is used in ResultSetProcessor for this.

+ +

TableRegistry Base Interface for Single/MultiTableRegistry.

+ +

SingleTableRegistry No functionality.

+ +

MultiTableRegistry Implements TableRegistry. Used when converting JDBC ResultSet of SQL SELECT into DataObjects.

+ +

DefaultConverter Implements Converter. In case of Blob database column type, returns byte[] for the column value when mapping from database data to property value.

+ +

ResultMetaData Holds complete ResultSet related metadata of the Query result- ResultSet, ColumnConverters, MappingWrapper, SDO Type Names, SDO Property Names, ResultSetShape for the ResultSet, Map containing Table Type > Column Property (equivalent to Database Table>Column). It provides various get methods on these members.

+ +

ResultSetRow A ResultSetRow is used to transform a single row of ResultSet into a set of DataObjects. It uses TableData as a intermediate place to keep Database Data for a Row , which is later used to form DataObject. It holds a List of all Table Data for the current row. This class is used in ResultSetProcessor.

+ +

TableData Holds single JDBC row for a Table and its Columns - tableName, list of PKs, Map of ColumnName->Data, if table has PK. Is used by DataObjectMaker to form DataObject based on Table Row.

+ +

ResultSetTypeMap Provides mapping from sql.Types to SDO Type. Used in ResultSetShape to populate SDO Type[] for all columns present in ResultSet.

+ +

FactoryRegistry Maintains registry of ChangeFactory. There is one FactoryRegistry for on DAS Config and Connection. It maintains a Map with entries of each SDO Type against ChangeFactory for current DAS Config+Connection.

+ +

ParameterImpl Holds values required for representing SQL statement/StoredProcedure parameter like name, index, value, SDO Type and columnConverter. Can have direction IN/OUT/IN-OUT. IN is default. OUT/IN-OUT is only in case of Stored Procedure.

+ +

ManagedParameterImpl Extends ParameterImpl. Expected to be integer or BigDecimal type, else exception is thrown. setValue() returns oldValue+1.

+ +

CollisionParameter Extends ParameterImpl. Design restricts setting value in CollisionParameter only once.

+ +

Parameters Maintains lists of parameters (used in SQL statements), IN/OUT parameters (used in stored procedures).

+ +

ResultSetShape This is an alternative to use ResultSetMetaData of the Query result. It can be used when some platforms like Oracle do not fully support MetaData. For a given SQL Query, this holds schemaName, tableName, columnName, SDO Column Type for each column in ResultSet. It has 2 constructors, one uses JDBC's ResultSetMetaData to form ResultSetShape and another uses DAS Config supplied ResultDescriptor to form ResultSetShape.

+ +

Statement Holds SQL String, JDBC connection, JDBC PreparedStatement and also state information whether the current statement is used by Pager.

+ +

SDODataTypeHelper Provides mapping between SDO's Type and JDBC's sql.Types.

+ +

SDODataTypes Uses SDO's TypeHelper to get SDO Type for given string.

+ +

QualifiedColumn Maintains schemaName, tableName and columnName for a Table's Column.

+ +

RelationshipWrapper Wrapper for DAS Config's <Relationship>. Only one method to return Collection of all FKColumns in a Relationship.

+ +

TableWrapper Wrapper on DAS Config's <Table>. Provides various get methods to get values of different elements and attributes within <Table>.

+ +

ConfigUtil Uses SDO's XMLHelper to load DAS Config Data Model in memory.

+ +

DataObjectUtil Provides utility methods for SDO DataObject like copying one DataObject into another, restoring Old Values of a DataObject using its SDO's ChangeSummary.

+ +

Configuration Schema(config.xsd)

+ +

Complete DAS Configuration follows.
+Convention Element <attribute> Child Element

+
+ + + + +
Config->
+<uri> Not used
+<dataObjectModel> Needs a valid value when creating static DataObjects.
+<databaseSchemaNameSupported> when true, multiple database schema under same database are supported
+Command-0..n
+Table-0..n
+Relationship-0..n
+ConnectionInfo-0..1
+ConnectionInfo->
+<dataSource>complete URL of data source
+<managedtx>if true, DAS manages database transaction
+ConnectionProperties-0..1
+ConnectionProperties->
+<driverClass>complete qualified class name
+<databaseURL>database URL
+<username> authentic database user
+<password> password for the user
+<loginTimeout>in milliseconds
+Command->
+<name>
+<SQL kind>Select/Update/Delete/Insert/procedure
+Parameter-0..n
+ResultDescriptor-0..n
+Parameter->
+<columnName> database table column name (no meaning when Command kind is procedure)
+<direction>IN/OUT (OUT makes sense when Command kind is "procedure")
+<index>used in set/getParameter() on Command based on direction (used when Command kind is procedure).
+ResultDescriptor-> Used as alternative to database result set metadata.
+<columnName> database table column name
+<tableName> database table name
+<schemaName> used when databaseSchemaNameSupported=true
+<columnType>SDO mapped data type
+Relationship->
+<name>
+<primaryKeyTable>
+<foreignKeyTable>
+<many> =true allows for 1:n relationship. If it is false, it's 1:1 relationship.
+<keyRestricted> In case of 1:1 relationship, if keyRestricted is not specified, the
+link (relationship) between the parent and child rows can be broken, by setting the
+parentKeyTable's row to null/deleting the row. Also, a different parent row can
+be associated to the child row, which has one pre-existing parent row association.
+If keyRestricted=true, this kind on change in existing relationship is not allowed,
+user will get exception 'Can not modify a one to one relationship that is key
+restricted'.
+KeyPair-0..n
+KeyPair->
+<PrimaryKeyColumn>database table column name
+<ForeignKeyColumn>database table column name
+Table->
+<tableName>Database table name
+<typeName>Data Object type name
+<schemaName> used when databaseSchemaNameSupported=true
+Column-0..n
+Create-0..1
+Update-0..1
+Delete-0..1
+Create->
+<sql> INSERT statement in PreparedStement format
+<parameters>space separated column names used in explicit INSERT
+Update->
+<sql> UPDATE statement in PreparedStement format
+<parameters> space separated column names used in explicit UPDATE
+Delete->
+<sql> DELETE statement in PreparedStement format
+<parameters> space separated column names used in explicit DELETE
+Column->
+<columnName> database table column name
+<propertyName> SDO data object's property name
+<converterClassName> if converter is used, this needs a valid class name
+<primaryKey>true if column is PK
+<generated> true if column value is database generated
+<collision> when true, during UPDATE statement generation, that column is
+included in the WHERE clause.(OCC feature)
+<managed> when true, during UPDATE statement generation, that column (needs
+to be BigDecimal) value is incremented by 1 and used in the SET clause in
+UPDATE.
+managed=true, is effective only when collision=true, else managed attribute value
+is ignored.
+
+ + +

Scalability Aspects

+ +

Java RDB DAS has exposed User Interfacefor end user. Other than that, from design perspective, many major DAS classes do not have associated interfaces and by design are tightly coupled with SDO and Database. It needs further enhancement on this line, especially when more DAS flavors are coming up as mentioned in Future. As DAS is a bridge between SOA based applications and backend Data Sources, the interfaces with SOA and Data Source need to be flexible. E.g. SDO/Some Other mechanism should be pluggable when using DAS as well as different technologies based Data Sources can be supported like XML files, LDAP based file system and so forth. Work is in-progress on this front.

+ +

Future

+ +

DAS is implemented in Java and C++ and both are integrated with SDO and support Relational Database based Data Source. There are other flavors of DAS coming up like LDAP DAS, XQuery DAS etc. These implementations will provide different ways to interface with the backend data source as their names suggest.

+ +

Samples

+ +

There are a couple of samples distributed to demonstrate working examples of using different DAS features. See User Guide/Samples for more details.

+ +

Terminology and Useful Links

+ +
+ + + + + + + + + + + + + + + + +
1 User Guide Readme
2 Getting Started Readme
3 All Useful Links Links
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-c-developer-guide.html b/site/trunk/site-publish/das-c-developer-guide.html new file mode 100644 index 0000000000..f57142eae9 --- /dev/null +++ b/site/trunk/site-publish/das-c-developer-guide.html @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS C++ Developer Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > DAS C++ Developer Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +

How to get involved in development of C++ RDB DAS?

+ +

This document is the development guideline for C++ RDB DAS project.

+
    +
  • General Guide
  • +
  • Getting Source code
  • +
  • Setting up your development environment
  • +
  • Importing DAS code and samples into your Development IDE
  • +
  • Testing
  • +
  • Reporting Issues and Providing patches
  • +
+ + +

General Guide

+ +

Welcome to the Tuscany RDB DAS C++ subproject project. We look forward to your participation and try to help you get on board. Feel free to ask your questions on the mailing list.

+ +

Here are some general guidelines we use in this project.

+
    +
  • C++ RDB DAS sub-project aims to provide enterprise-grade Data Access Service to help SOA applications using SDO have data updates with Database Data Source at backend.
  • +
  • C++ RDB DAS provides feedback to Tuscany SDO and Spec as it evolves.
  • +
  • The C++ RDB DAS provides flexibility in accessing data with explicit CRUD as well as using SDO DataObjects.
  • +
  • The C++ RDB DAS infrastructure is very modularized and is designed to be highly extensible so users can customize it to fit their needs.
  • +
+ + +

Getting Source code

+ +

The C++ RDB DAS project Subversion repository is located at https://svn.apache.org/repos/asf/incubator/tuscany/cpp/das .
+The repository can also be viewed online at http://svn.apache.org/viewvc/incubator/tuscany/cpp/das
+Anyone can check code out of Subversion. You only need to specify a username and password in order to update the Subversion repository, and only Tuscany committers have the permissions to do so.

+ +

Checking out code from Subversion

+ +

Use the command as follows (note that it uses http scheme so if you're a committer change it to https):

+
+
svn checkout http://svn.apache.org/repos/asf/incubator/tuscany/cpp/das
+
+
+ +

Committing Changes to Subversion

+ +

Any Tuscany committer should have a shell account on svn.apache.org. Before you can commit, you'll need to set a Subversion password for yourself. To do that, log in to svn.apache.org and run the command svnpasswd.
+Once your password is set, you can use a command like this to commit:

+
+
svn commit
+
+
+

If Subversion can't figure out your username, you can tell it explicitly:

+
+
svn --username <name> commit
+
+
+

Subversion will prompt you for a password, and once you've entered it, it will remember it for you. Note this is the password you configured with svnpasswd not your shell or other password.

+ +

Build tree structure

+ +

The build tree is designed to facilitate modular development and releases. Maven modules are grouped by how they are released under a hierarchy. C++ RDB DAS currently have the below module hierarchy :

+
+
-cpp
+ |-- das
+     |-- runtime               DAS Source         |-- source             DAS Core Source Code         |-- test                 DAS Test Cases Source Code
+     |-- samples              DAS Sample Applications     |-- VSExpress            DAS Visual Studio Express Project Files
+
+
+ +

Building the RDB DAS source code is simple

+ +

Prerequisites

+ +

        - Apache Ant with CppTasks and Ant-Contrib
+        - Tuscany SDO latest version
+        - Visual Studio Express (optional)

+
+
cd cpp/das
+ant
+
+
+

More details about downloading and installing DAS can be found at http://svn.apache.org/repos/asf/incubator/tuscany/cpp/das/GettingStarted.html

+ +

Developing RDB DAS using Visual Studio Express IDE

+ +

There is a VS solution file under cpp/das/VSExpress/tuscany_das/ that contains all configuration necessary to start developing DAS C++ with your Visual Studio Express.

+

Testing

+ +

All commits are expected to be accompanied by test cases execution. Test cases should verify specific behavior relating to a single class or small set of related classes; integration tests verify code paths across subsystems. Test cases should be documented and clearly indicate what they verify. Also, avoid things that may cause side-effects when possible such as access of external resources. Test cases source code can be found at cpp/das/runtime/test/src/.

+ + +

Reporting issues and providing patches

+ +

Issue Tracking

+ +

Tuscany bug reports are handled via a JIRA issues list. Please use this list to report any bugs and track their status.

+ +

Reporting an Issue

+ +

Please search JIRA to see if the problem has already been reported. If it has not, please create a new JIRA issue. To help developers quickly resolve an issue, include as much information with your report as possible such as your platform, version numbers, error logs, configuration, steps to reproduce the problem, etc. Also, if possible, please include a testcase that demonstrates the problem.
+Thanks for working with us to improve Apache Tuscany.

+ +

Submitting a Patch

+ +

To submit a patch, create an issue in JIRA that describes the problem and attach your patch file. Please include detailed steps to reproduce the problem in the issue description. Providing test cases in the patch will help us verify and apply it quicker. To create a patch, follow the steps below:

+
    +
  • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
  • +
  • Confirm that the problem is fixed and include testcases where possible
  • +
  • Generate the patch using svn diff File > patchfile
  • +
  • Try to give your patch files meaningful names, including the JIRA number
  • +
  • Add your patch file as an attachment to the associated JIRA issue
    +Once you have submitted the patch it will be picked up for review.
  • +
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-c-documentation-menu.html b/site/trunk/site-publish/das-c-documentation-menu.html new file mode 100644 index 0000000000..b9fce97858 --- /dev/null +++ b/site/trunk/site-publish/das-c-documentation-menu.html @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS C++ Documentation Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ +
+ +

DAS C++ Documentation

+

This page provides guides to all available Tuscany DAS implementations in Java.

+ + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-c-found-a-bug.html b/site/trunk/site-publish/das-c-found-a-bug.html new file mode 100644 index 0000000000..fa8a6466a1 --- /dev/null +++ b/site/trunk/site-publish/das-c-found-a-bug.html @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS C++ Found A Bug + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Found A Bug + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ +
+

Reporting an Issue or Asking For New Features

+ +

Please use ApacheJIRA system to report bugs or request new features. First time users need to create a login.

+ +

Search the existing JIRAs to see if what you want to create is already there. If not, create a new one. Make sure JIRAs are categorized correctly using JIRA categories and are created under the correct component area. Please include as much information as possible in your JIRA to help resolve the issue quicker. This can include version of the software used, platforms running on, steps to reproduce, test case, details of your requirement or even a patch if you have one.

+ +

Submitting a Patch

+ +

Please follow the steps below to create a patch. It will be reviewed and committed by a committer in the project.

+ +
    +
  • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
  • +
  • Confirm that the problem is fixed and include a test case where possible to help the person who is applying the patch to verify the fix.
  • +
  • Generate the patch using svn diff File > patchfile
  • +
  • Try to give your patch files meaningful names, including the JIRA number
  • +
  • Add your patch file as an attachment to the associated JIRA issue +
      +
    • Clicking on the 'Patch Available' box in the screen where the patch is being submitted will help identify available patches quicker.
    • +
    +
  • +
+ + +

How do I get my JIRAs into a release?

+

You can always propose a release and drive the release with the content that you want. Another way to get a JIRA into a release is by providing a patch or working with other community members (volunteers) to help you get the problem fixed. You can also help by providing test cases.

+ +

Each release is managed by a release manager. Make sure that the Release Manager is aware of why a fix to a JIRA is important to your business. In general, the best attempt is made to include as many JIRAs as possible depending on the level of community help. The voting mechanism in the JIRA system can be used to raise the importance of a JIRA to the attention of the release manager. Adding comments in the JIRA would help the release manager understand why a JIRA is important to include in a given release.

+ +

How is a release done?

+

Anyone can volunteer to be a release manager and drive a release. Based on Apache guidelines, a release requires at least three PMC +1 votes and more +1s than -1s. A release can not be vetoed so a -1 does not block a release. The steps for how to create a Tuscany release are documented here

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-c-get-involved.html b/site/trunk/site-publish/das-c-get-involved.html new file mode 100644 index 0000000000..a0cab7b0da --- /dev/null +++ b/site/trunk/site-publish/das-c-get-involved.html @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS C++ Get Involved + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Get Involved + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ +
+

Getting Involved with Apache Tuscany - Welcome!

+ + + +
+

Getting involved in the project is easy. First, any help is welcome and we are excited to help you come on board. Here are some suggestions for how you can get involved in Apache Tuscany.

+ +
    +
  • Tuscany consists of several subprojects. Identify what areas you are interested in. Take a look at samples for that area.
  • +
  • Subscribe to the mailing list. If you are interested to get involved at the user level, subscribe to user mailing list. If you are interested to get involved in the development of Tuscany, subscribe to the developer list. Rememer that you can always unsubscribe later.
  • +
  • Help answer questions posted to the user mailing list for areas that you are familiar with. Your real usage experience can be very valueable to other users as well as developers on the project.
  • +
  • Would like to get invovled in development? Have new ideas? Start with the mailing list and share your thoughts.
  • +
  • Contribute to feature developement. Just let the community know what you'd like to work on. It is as easy as that.
  • +
  • Identify JIRAsin the area that you are interested in and provide patches.
  • +
  • Contribute to the user or developer documentation or website. Make your update on the on the Tuscany Wiki, create a JIRA and attach the link for your update.
  • +
  • If in doubt about where to start, send a note to the mailing list and mention your area of interest. Any questions is welcomed. We'd like you to be involved!
  • +
  • If you are new to open source and would like to learn more about how to work in open source, check this page.
  • +
+ + +
    +
  • Provide feedback: What is working well? What is missing? Get involved in creating software that addresses real pain points in SOA. Any help is good. Be part of the community.
  • +
+ + +

You can get a quick overview of many Tuscany information resources by watching the video "A Tour of the Tuscany Information Resources", Vcasmo site (password tuscany), You Tube.

+ +

communication

+ +

The Tuscany community also gets together on IRC. 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:

+ + + +

If you are not familiar with Apache, you can read more about how Apache works at this link.

+ + +
+ + +

Open CSA (SCA standards)

+ +

The SCA specifications which are implemented by Tuscany have moved to OASIS for formal
+standardization. This is being done as a series of OASIS technical
+committees, each dealing with one or more of aspects of the SCA specifications.

+ +

The OASIS activities are carried out in public. You can either observe the activities in the various technical committees, or join one or more of the committees to contribute to.

+ +

There are 6 SCA technical committees and by clicking on the links below you can find information about how to join as an observer or contributor. You will also have access to the minutes of meetings of the meetings on the same page.

+ + + + +
    +
  • OASIS SCAPolicy TC:Defining an SCA policy framework to simplify SOA application development
  • +
+ + +
    +
  • OASIS SCA Bindings TC:Standardizing bindings for SCA services and references to communication protocols, technologies and frameworks
  • +
+ + + + + + + + +
    +
  • OASIS SCA BPEL TC:Specifying how SCA component implementations for SOA can be written using BPEL
  • +
+ + +

Each OASIS SCA TC mailing list archives can be found here:

+ + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-c-releases.html b/site/trunk/site-publish/das-c-releases.html new file mode 100644 index 0000000000..f3e6b731f5 --- /dev/null +++ b/site/trunk/site-publish/das-c-releases.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS C++ Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ +
+ +

DAS C++

+ +

An Apache release of DAS C++ is not available yet. You can build a DAS C++ from the trunk.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-c-subproject-menu.html b/site/trunk/site-publish/das-c-subproject-menu.html new file mode 100644 index 0000000000..d0a1551647 --- /dev/null +++ b/site/trunk/site-publish/das-c-subproject-menu.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS C++ Subproject Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > Subproject Menus > DAS C++ Subproject Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-c.data/das graph as I suppose it shoud be.JPG b/site/trunk/site-publish/das-c.data/das graph as I suppose it shoud be.JPG new file mode 100644 index 0000000000..1402f3b8f5 Binary files /dev/null and b/site/trunk/site-publish/das-c.data/das graph as I suppose it shoud be.JPG differ diff --git a/site/trunk/site-publish/das-c.data/das graph as I suppose it shoud be.JPG.jpeg b/site/trunk/site-publish/das-c.data/das graph as I suppose it shoud be.JPG.jpeg new file mode 100644 index 0000000000..d8256c11a8 Binary files /dev/null and b/site/trunk/site-publish/das-c.data/das graph as I suppose it shoud be.JPG.jpeg differ diff --git a/site/trunk/site-publish/das-c.data/das_graph.JPG b/site/trunk/site-publish/das-c.data/das_graph.JPG new file mode 100644 index 0000000000..c5a3a06df2 Binary files /dev/null and b/site/trunk/site-publish/das-c.data/das_graph.JPG differ diff --git a/site/trunk/site-publish/das-c.data/das_graph.JPG.jpeg b/site/trunk/site-publish/das-c.data/das_graph.JPG.jpeg new file mode 100644 index 0000000000..814cad6825 Binary files /dev/null and b/site/trunk/site-publish/das-c.data/das_graph.JPG.jpeg differ diff --git a/site/trunk/site-publish/das-c.html b/site/trunk/site-publish/das-c.html new file mode 100644 index 0000000000..58b2f47428 --- /dev/null +++ b/site/trunk/site-publish/das-c.html @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS C++ + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +

DAS C++

+ +

RDB DAS is the only DAS avaialable under C++ at the momemnt. This work is in progress. The code is available on the trunk and an official release is not yet available.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-cplus-menu.html b/site/trunk/site-publish/das-cplus-menu.html new file mode 100644 index 0000000000..c70928beb6 --- /dev/null +++ b/site/trunk/site-publish/das-cplus-menu.html @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS CPlus Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > DAS General Menu > DAS CPlus Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
DAS C++
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-documentation-menu.html b/site/trunk/site-publish/das-documentation-menu.html new file mode 100644 index 0000000000..68be8ec291 --- /dev/null +++ b/site/trunk/site-publish/das-documentation-menu.html @@ -0,0 +1,80 @@ + + + + + + + DAS Documentation Menu : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Menus > General > Tuscany Downloads & Documentations > DAS Documentation Menu + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ +
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/das-downloads.html b/site/trunk/site-publish/das-downloads.html new file mode 100644 index 0000000000..08a711b36f --- /dev/null +++ b/site/trunk/site-publish/das-downloads.html @@ -0,0 +1,333 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Downloads + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > DAS Downloads + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

DAS Releases Downloads

+ +

Learn more about content of each release .

+ +

Incubating-Beta2 (Oct. 06, 2007)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ DescriptionDownload linkMD5PGP
Linux RDB DAS Binary das-1.0-incubating-beta2-bin.tar.gz MD5PGP
LinuxRDB DAS Sourcedas-1.0-incubating-beta2-src.tar.gzMD5PGP
WindowsRDB DAS Binary das-1.0-incubating-beta2-bin.zipMD5PGP
WindowsRDB DAS Sourcedas-1.0-incubating-beta2-src.zipMD5PGP
+ + + + +

Incubating-Beta1 (Aug. 21st, 2007)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ DescriptionDownload linkMD5PGP
Linux RDB DAS Binary das-1.0-incubating-beta1-bin.tar.gz MD5PGP
LinuxRDB DAS Sourcedas-1.0-incubating-beta1-src.tar.gzMD5PGP
WindowsRDB DAS Binary das-1.0-incubating-beta1-bin.zipMD5PGP
WindowsRDB DAS Sourcedas-1.0-incubating-beta1-src.zipMD5PGP
+ + +

Incubating-M2 (Nov 20th, 2006)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ DescriptionDownload linkMD5PGP
Linux
+ Binary
Tuscany M2 DAS Implementation das-1.0-incubator-M2-bin.tar.gzMD5PGP
Linux
+ Binary
Tuscany M2 DAS Samplesdas-samples-1.0-incubator-M2-bin.tar.gzMD5PGP
Linux
+ Source
Tuscany M2 DAS Implementationdas-1.0-incubator-M2-src.tar.gzMD5PGP
Windows
+ Binary
Tuscany M2 DAS Implementation das-1.0-incubator-M2-bin.zipMD5PGP
Windows
Binary
Tuscany M2 DAS Samplesdas-samples-1.0-incubator-M2-bin.zipMD5PGP
Windows
+ Source
Tuscany M2 DAS Implementationdas-1.0-incubator-M2-src.zipMD5PGP
+ + + +

Incubating-M1 (June 7th, 2006)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ DescriptionDownload linkMD5PGP
Linux
+ Binary
Tuscany M1 DAStuscany-incubating-M1.tar.gzMD5PGP
Linux
+ Source
Tuscany M1 DAStuscany-incubating-M1-src.tar.gzMD5PGP
Windows
+ Binary
Tuscany M1 DAStuscany-incubating-M1.zipMD5PGP
Windows
+ Source
Tuscany M1 DAStuscany-incubating-M1-src.zip + MD5PGP
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-faq.html b/site/trunk/site-publish/das-faq.html new file mode 100644 index 0000000000..cf9fc29c1f --- /dev/null +++ b/site/trunk/site-publish/das-faq.html @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS FAQ + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > old-Sandbox > DAS > DAS FAQ + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Tuscany DAS - Frequently Asked Questions

+ +

Is DAS Thread safe ?
+DAS design should support thread safety, but we have done no explicit testing on this area.
+Initializing a DAS and using across multiple DAS calls should be OK and safe as long as you are using the same config file. I'd recommend initializing the DAS in a sync method tough.

+ + +

I'm getting "Feature 'Config' not found." after migrating my application for after M2 codebase.
+There was a change (see http://issues.apache.org/jira/browse/TUSCANY-899). To fix this, changed the attribute "xmlns"'s value of the "config" tag to "http:///org.apache.tuscany.das.rdb/config.xsd".

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-general-menu.html b/site/trunk/site-publish/das-general-menu.html new file mode 100644 index 0000000000..05aa1fc36d --- /dev/null +++ b/site/trunk/site-publish/das-general-menu.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS General Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > DAS General Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-beta1.html b/site/trunk/site-publish/das-java-beta1.html new file mode 100644 index 0000000000..b0c1b65b00 --- /dev/null +++ b/site/trunk/site-publish/das-java-beta1.html @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Beta1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > DAS Java Beta1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

DAS Java Beta1 Release (Aug. 21st, 2007)

+ +

What's new in Apache Tuscany DAS beta1?

+ +
    +
  • Support for J2SE connections in DAS config using Driver Manager.
  • +
  • Added support for multiple database schemas in queries
  • +
  • Enhanced Optimistic Concurrency Control with overqualified updates
  • +
  • Multiple enhancements around ApplyChanges API
  • +
  • Enhanced support for MySQL
  • +
  • Enhanced Documentation: User, Developer and Architect guides as well as javadocs
  • +
  • Enhanced and new sample applications
  • +
+ + +

Download DAS Java Beta1

+ +

Windows

+
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-das-1.0-incubating-beta1-bin.zip ASC MD5
Source tuscany-das-1.0-incubating-beta1-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-das-1.0-incubating-beta1-bin.tar.gz ASC MD5
Source tuscany-das-1.0-incubating-beta1-src.tar.gz ASC MD5
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-beta2.html b/site/trunk/site-publish/das-java-beta2.html new file mode 100644 index 0000000000..64e17cc34d --- /dev/null +++ b/site/trunk/site-publish/das-java-beta2.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Beta2 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > DAS Java Beta2 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

DAS Java Beta2 Release (Oct. 06, 2007)

+ +

What's new in Apache Tuscany DAS beta2?

+ +

The main purpose of the DAS beta2 release is to fix incompatibilities that were found with SDO 1.0 release.

+ +

The following JIRAs also were fixed on DAS beta2

+ +
    +
  • TUSCANY-986 - DAS integration with SDO 2.1 APIs
  • +
  • TUSCANY-961 - DAS: Using deprected SDO method causes Type lookup failure
  • +
  • TUSCANY-1353 - Exception attempting to insert rows using DAS w/DataDirect JDBC driver
  • +
  • TUSCANY-1453 - DAS can't read or write the blob field
  • +
  • TUSCANY-1463 - Support for Clob and Array fields
  • +
  • TUSCANY-1462 - Consistent use of Parameters in Config
  • +
  • TUSCANY-1464 - Wrong query results when SELECT misses PKs
  • +
  • TUSCANY-1465 - Allow passing ResultDescriptor for dynamic Commands
  • +
  • TUSCANY-1720 - Modify sample readmes for - steps to run sample with other databases
  • +
+ + + +

Download DAS Java Beta2

+ +

Windows

+
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-das-1.0-incubating-beta2-bin.zip ASC MD5
Source tuscany-das-1.0-incubating-beta2-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-das-1.0-incubating-beta2-bin.tar.gz ASC MD5
Source tuscany-das-1.0-incubating-beta2-src.tar.gz ASC MD5
+
+ + + +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-developer-guide.data/das_class_diagram.jpg b/site/trunk/site-publish/das-java-developer-guide.data/das_class_diagram.jpg new file mode 100644 index 0000000000..1a7c90023c Binary files /dev/null and b/site/trunk/site-publish/das-java-developer-guide.data/das_class_diagram.jpg differ diff --git a/site/trunk/site-publish/das-java-developer-guide.data/das_class_diagram.jpg.jpeg b/site/trunk/site-publish/das-java-developer-guide.data/das_class_diagram.jpg.jpeg new file mode 100644 index 0000000000..5a5552a160 Binary files /dev/null and b/site/trunk/site-publish/das-java-developer-guide.data/das_class_diagram.jpg.jpeg differ diff --git a/site/trunk/site-publish/das-java-developer-guide.html b/site/trunk/site-publish/das-java-developer-guide.html new file mode 100644 index 0000000000..19c8b06790 --- /dev/null +++ b/site/trunk/site-publish/das-java-developer-guide.html @@ -0,0 +1,332 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Developer Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +

How to get involved in development of Java RDB DAS?

+

This document is the development guideline for RDB DAS Java project.

+
    +
  • General Guide
  • +
  • Getting Source code
  • +
  • Setting up your development environment
  • +
  • Importing DAS code and samples into your Development IDE
  • +
  • Coding Guidelines
  • +
  • Testing
  • +
  • Maven Build Structure
  • +
  • Reporting Issues and Providing patches
  • +
+ + +

General Guide

+

Welcome to the Tuscany RDB DAS Java subproject project. We look forward to your participation and try to help you get on board. Feel free to ask your questions on the mailing list.

+ +

Here are some general guidelines we use in this project.

+ +
    +
  • Java RDB DAS sub-project aims to provide enterprise-grade Data Access Service to help SOA applications using SDO have data updates with Database Data Source at backend.
  • +
  • Java RDB DAS provides feedback to Tuscany SDO and Spec as it evolves.
  • +
  • The Java RDB DAS provides flexibility in accessing data with explicit CRUD as well as using SDO DataObjects.
  • +
  • The Java RDB DAS infrastructure is very modularized and is designed to be highly extensible so users can customize it to fit their needs.
  • +
+ + +

Getting Source code

+

The Java RDB DAS project Subversion repository is located at https://svn.apache.org/repos/asf/incubator/tuscany/java/das .
+The repository can also be viewed online at http://svn.apache.org/viewvc/incubator/tuscany/java/das
+Anyone can check code out of Subversion. You only need to specify a username and password in order to update the Subversion repository, and only Tuscany committers have the permissions to do so.

+ +

Checking out code from Subversion

+

Use the command as follows (note that it uses http scheme so if you're a committer change it to https):

+ +
+
 svn checkout http://svn.apache.org/repos/asf/incubator/tuscany/java/das 
+
+ +

Committing Changes to Subversion

+

Any Tuscany committer should have a shell account on svn.apache.org. Before you can commit, you'll need to set a Subversion password for yourself. To do that, log in to svn.apache.org and run the command svnpasswd.
+Once your password is set, you can use a command like this to commit:

+ +
+
 svn commit 
+
+ +

If Subversion can't figure out your username, you can tell it explicitly:

+ +
+
 svn --username <name> commit 
+
+ +

Subversion will prompt you for a password, and once you've entered it, it will remember it for you. Note this is the password you configured with svnpasswd not your shell or other password.

+ +

Setting up your Development Environment

+ +

Prerequisites

+ +

Java RDB DAS requires the following:

+
    +
  • JDK 5.0+ (J2SE 1.5.0+)
  • +
  • Apache Maven (2.0.4+)
  • +
  • Subversion (1.2+)
  • +
+ + +

Build tree structure

+ +

The build tree is designed to facilitate modular development and releases. Maven modules are grouped by how they are released under a hierarchy. Java RDB DAS currently have the below module hierarchy :

+ +
+
-java
+ |-- das
+     |-- distribution         DAS distributions
+     |-- rdb                	 DAS Core Source
+     |-- samples              DAS Web, J2SE Sample Applications
+
+
+ +

The individual modules can be built separately or build with top-down build.

+ +

top-down build (recommended approach)

+ +

Check out all of the java source code.

+ +
+
svn checkout http://svn.apache.org/repos/asf/incubator/tuscany/java 
+
+ +

Building the RDB DAS source code is simple

+ +
+
cd java/das
+mvn
+
+
+ +

It should work irrespective of whether you have an empty Maven local repository. This assumes that maven is able to retrieve a SNAPSHOT version of SDO (and of course the rest of software that RDB DAS depends on) as we do not build anything other than RDB DAS here.

+ +

There can be occasional problems downloading artifacts from remote Maven repositories so if mvn fails with network related sounding messages sometimes just trying again can fix the problem.
+Once you have done a top-down build, and your local maven repository is populated, you can start using the maven off line option to speed up the build process

+ +
+
 mvn -o  
+
+ +

Importing RDB DAS into your Development IDE

+ +

Using Eclipse

+ +

If this is the first time you are using your workspace with maven m2 local repository, you will need to tell your Eclipse workspace the location of the directory, and you can do this with the following command :

+ +
+
 mvn -Declipse.workspace=[path-to-eclipse-workspace] eclipse:add-maven-rep 
+
+ +

In order to generate the necessary project files to import the SCA modules to Eclipse, you can use the maven eclipse plugin

+ +
+
cd java/das
+mvn -Peclipse eclipse:eclipse
+
+
+ +

Now, launch your Eclipse IDE, select File->Import->Existing projects into Workplace, and then select the base DAS directory (e.g java/das) and then press Finish, this should import all DAS core and Samples into your Eclipse Workspace.

+ +

Coding Guidelines

+

There are a few simple guidelines when developing for JAVA DAS:

+
    +
  • Formatting standards are defined by the .checkstyle and .pmd configurations in the source repository. Please be sure to check code is formatted properly before doing a checkin (see below). If you are unfamiliar with Checkstyle or PMD, please see http://checkstyle.sourceforge.net/ and http://pmd.sourceforge.net/ . Consistent formatting makes it easier for others to follow and allows diffs to work properly.
  • +
  • Always include the Apache License Headers on all files and the following version tag: +
    +
     @version $Rev$ $Date$ 
    +
  • +
  • Please attempt to accompany code with at least unit tests or verify it by existing tests before submitting a patch or checking in.
  • +
  • Do not checkin IDE-specific resources such as project files.
  • +
  • Prior to check-in, perform a clean build and run the complete battery of unit tests for the current module from the command line with Checkstyle enabled, as in:
  • +
+ + +
+
mvn clean
+mvn -o -Psourcecheck
+
+
+ +
    +
  • Please do not perform a checkin using an IDE as doing so is frequently problematic.
  • +
  • Include a descriptive log message for checkins, for example "fixed such and such problem".
  • +
+ + +

Naming conventions to increase consistency
+Folder Names: Please use all lowercases and dashes in folder names (like in the jar names)

+
    +
  • Maven artifact id = tuscany-<folder name>
  • +
+ + +

Package names: Package names within modules should include the module name so that source code can be located in the source tree easily.

+ +

Testing

+

All commits are expected to be accompanied by unit test and integration tests when appropriate. Unit tests should verify specific behavior relating to a single class or small set of related classes; integration tests verify code paths across subsystems. Testcases should be documented and clearly indicate what they verify. Also, avoid things that may cause side-effects when possible such as access of external resources.
+Tuscany uses plain junit test cases to perform unit and integration testing. Web Samples use htmlunit Test cases to verify the expected behavior.
+Note that we use surefire maven plugin to run the unit and integration tests, and in most cases, they are configured to match a **/*TestCase.java file name pattern. Because of this, if your test case has a different file name pattern, you might execute it from your IDE of choice, but the maven build won't execute the test.

+ +

Maven Build Structure

+

We use the term Module to refer to the leaf of maven tree.

+
    +
  • das/pom.xml's parent will be pom/parent/pom.xml
  • +
  • Other poms will use the pom from the parent folder as parent pom
  • +
  • Group id: org.apache.tuscany.das
  • +
  • Version of our modules will be specified once in java/das/pom.xml, child poms don't need specify a version as they get it from their parent
  • +
  • pom names begin Apache Tuscany DAS
  • +
  • Eclipse projects are generated for all built modules using mvn -Peclipse eclipse:eclipse
  • +
+ + +

Reporting issues and providing patches

+ +

Issue Tracking

+ +

Tuscany bug reports are handled via a JIRA issues list. Please use this list to report any bugs and track their status.

+ +

Reporting an Issue

+ +

Please search JIRA to see if the problem has already been reported. If it has not, please create a new JIRA issue. To help developers quickly resolve an issue, include as much information with your report as possible such as your platform, version numbers, error logs, configuration, steps to reproduce the problem, etc. Also, if possible, please include a testcase that demonstrates the problem.
+Thanks for working with us to improve Apache Tuscany.

+ +

Submitting a Patch

+ +

To submit a patch, create an issue in JIRA that describes the problem and attach your patch file. Please include detailed steps to reproduce the problem in the issue description. Providing test cases in the patch will help us verify and apply it quicker. To create a patch, follow the steps below:

+
    +
  • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
  • +
  • Confirm that the problem is fixed and include testcases where possible
  • +
  • Generate the patch using svn diff File > patchfile
  • +
  • Try to give your patch files meaningful names, including the JIRA number
  • +
  • Add your patch file as an attachment to the associated JIRA issue
    +Once you have submitted the patch it will be picked up for review.
  • +
+ + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-documentation-menu.html b/site/trunk/site-publish/das-java-documentation-menu.html new file mode 100644 index 0000000000..2205f64416 --- /dev/null +++ b/site/trunk/site-publish/das-java-documentation-menu.html @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Documentation Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ +
+ +

DAS Java Documentation

+

This page provides guides to all available Tuscany DAS implementations in Java.

+ +

Relational Database Data Access Service (RDB DAS)

+ + + + + + + +
    +
  • User Guide
    +This introduces you to RDB DAS features and provides 'how to' examples.
  • +
+ + + + + + + + +

LDAP DAS

+ + + +

Getting Invovled With DAS Project

+ + + + +
    +
  • Developer Guide
    +If you would like to contribute to the project, this guide explains how to build Java DAS and how to contribute code back to the project.
  • +
+ + +
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-faq.html b/site/trunk/site-publish/das-java-faq.html new file mode 100644 index 0000000000..d6ab185c7f --- /dev/null +++ b/site/trunk/site-publish/das-java-faq.html @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java - FAQ + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > DAS Java - FAQ + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +

Welcome to the Apache Tuscany Java DAS RDB FAQ page. Please help to keep the information on this page current.

+ +


+ + +

RDB DAS thread safety
+

+

DAS design should support thread safety, but we have done no explicit testing on this area.
+Initializing a DAS and using across multiple DAS calls should be OK and safe as long as you are using the same config file. I'd recommend initializing the DAS in a sync method tough.

+ +

Migration from M2
+

+

I'm getting "Feature 'Config' not found." after migrating my application for after M2 codebase.

+ +

There was a change (see http://issues.apache.org/jira/browse/TUSCANY-899). To fix this, changed the attribute "xmlns"'s value of the "config" tag to "http:///org.apache.tuscany.das.rdb/config.xsd".

+ +

Handling internal/external transaction management
+

+ +

In DAS Config, element ConnectionInfo has a boolean attribute managedtx (default true).
+If it is true, DAS runtime manages transaction otherwise the caller is supposed to manage
+transaction.
+In cases, when the connection is externally passed (config file does not specify ConnectionInfo),
+the managedtx attribute default value ( true) is assumed.

+ +

Handling parent/child relationship
+

+

Question: If two tables have a parent-child relationship but the query result set contains only columns from one table, does RDB DAS result DataGraph contain data from both parent and child table?

+ +

The RDB DAS will only populate a graph with data returned from the used query. If you want a
+graph that contains data from related tables then the query provided must return that data
+(typically a join). The relationship tests in the test suite demonstrate this.

+ +

Question: If two tables have a parent-child relationship and the query result set contains columns from both tables, is the relationship analyzed by DAS when,

+
    +
  1. DAS Config explicitly defines relationship
  2. +
  3. DAS Config does not explicitly define relationship?
  4. +
+ + +

DAS supports some Convention over Configuration when it comes to supporting implied relationships.
+http://cwiki.apache.org/confluence/display/TUSCANY/ConventionOverConfiguration
+http://cwiki.apache.org/confluence/display/TUSCANY/ForeignKeyRepresentationAndManagement
+http://cwiki.apache.org/confluence/display/TUSCANY/WorkingWithRelationships
+Also, see test: ImpliedRelationshipTests.testAddNewOrder()

+ +

So, in summary, if the query has a where clause specifying the relationship, there is no need to
+have any relationship definition in config file as long as the column names (PK, FK) follow the
+naming conventions.

+ +

In the absence of naming conventions, the relationship needs to be explicitly defined in the config,
+so that the query result is mapped against it and the necessary result DataGraph is represented
+reflecting the relationship.

+ +

Question: When there is 1:n relationship between 2 tables, say Department:Employee, and there is a DataGraph with this relationship present, can one Employee DataObject from this graph be associated with 2 different Department DataObjects, using DAS Java Client? i.e. can 1:n relationship be changed to n:n using SDO?_

+ +

No, when this is attempted, SDO maintains referential integrity. e.g.
+If you have a dept1 with emp1 and then execute:
+ dep2.getEmployees.add(emp1)
+the graph will automatically remove emp1 from dep1's list of employees and
+you are left with valid 1:m relationship.

+ +

Question: In case of parent-child relationship, how to traverse back and forth?

+ +

If by Convention over Configuration/from DAS Config there is a name to a relationship, the opposite relationship is named with _opposite appended to it.

+ +

e.g. Consider two tables (CUSTOMER, ORDER) each with a PK named "ID". Also, ORDER has a FK named CUSTOMER_ID. The DAS recognizes this convention and assumes a one:many relationship between CUSTOMER and ORDER. In the fully dynamic case, a read of CUSTOMER and ORDER tables using a join will result in a graph of CUSTOMER DataObjects along with their related ORDERS.(name of relationship is ORDERS now.)

+ +

The property for the CUSTOMER Types list of ORDERs is named "ORDER" so:
+ DataObject order = cust.getDataObject("ORDER1");
+The name of the property in the ORDER Type that references the parent CUSTOMER, is
+ DataObject cust = order.getDataObject("CUSTOMER_opposite")

+ + +

How does DAS handle mapping between DataGraph properties and Database Metadata like table name, column name etc. during disconnected processing.
+

+ +

DAS supports this mapping using DAS Config and in the absence of that using Convention over Configuration.
+http://cwiki.apache.org/confluence/display/TUSCANY/ConventionOverConfiguration. DataObject graph
+change summary contains old as well as modified values. Using this change summary and config/conventions DAS can support the necessary mapping.

+ +

no PK defined
+

+

Does DAS support working with tables that have no PK defined?

+ +

DAS mandates PK for any table, either specified in DAS Config or by following convention. In absence
+of both of these, DAS throws an error. Having PK ensures uniqueness of Data Object - returned as query result.

+ +

RDB DAS support for generated keys
+

+ +

This is supported for INSERT operation - either explicit insert (SQL INSERT statement as DAS command) or generated insert.
+In case of generated insert, the DAS config needs to have Column element having attribute "generated" set to "true". This attribute is not needed in case of explicit insert.
+In case of generated insert, "generated" attribute from Column element in Config is checked to form the appropriate insert statement. The jdbc supported PreparedStatement.getGeneratedKeys() is used to fetch the values being generated by the database. In case of generated insert, the value thus returned is set in DataGraph.

+ +

New boolean attribute added in Config - "generatedKeysSupported". User can set true/false for this in Config. If not set in Config, JDBC Metadata API check supportsGetGeneratedKeys() is done to detect whether to use auto generated keys during INSERT.

+ +

Note: For Derby, always assumed generatedKeysSupported=TRUE. This is because current Derby API return FALSE for supportsGetGeneratedKeys(), as it is partially implemented, but in DAS context, this support is sufficient.

+ +

This gived user flexibility to turn on/off support for database generated keys during INSERT based on the
+database vendor/driver version in use.

+ +

How DAS works with Dataobjects
+

+ +

DAS can get DataObject using Dynamic approach or Static approach. In Dynamic approach the query result set is used to form the DataObject. In static approach, DAS Config's DataObjectModel attribute needs a valid value, using which the DataObjects are created.
+For more details see http://cwiki.apache.org/confluence/display/TUSCANY/Graph+Merge.

+ +

What is Optimistic Concurrency Control?
+

+

See details on http://cwiki.apache.org/confluence/display/TUSCANY/OptimisticConcurrencyControl

+ +

By default OCC is ON. With this, in generated UPDATE statement, any column undergoing change also gets included in the WHERE clause.

+ +

Other than that, in DAS Config, in <Table> element , the <Column> element can have two boolean attributes:- managed(default true), collision

+ +

When collision=true for a column, during UPDATE statement generation, that column is included
+in the WHERE clause.

+ +

When managed=true for a column, during UPDATE statement generation, that column (needs to be BigDecimal) value is incremented by 1 and used in the SET clause in UPDATE.

+ +

managed=true, is effective only when collision=true, else managed attribute value is ignored.

+ +

What is the purpose of many and keyRestricted attributes in Relationship?
+

+

many=true allows for 1:n relationship. If it is false, it's 1:1 relationship. In case of 1:1 relationship, if keyRestricted is not specified, the link (relationship) between the parent and child rows can be broken, by setting the parentKeyTable's row to null/deleting the row. Also, a different parent row can be associated to the child row, which has one pre-existing parent row association. If keyRestricted=true, this kind on change in existing relationship is not allowed, user will get exception 'Can not modify a one to one relationship that is key restricted'.

+ +

what is paging capability?
+

+

What is currently available in DAS is detailed on http://cwiki.apache.org/confluence/display/TUSCANY/WorkingWithPaging
+Other than sequential page access(pager.next(), pager.previous()), random access is also
+allowed using pager.getPage(number).

+ +

Example to define the ResultSet shape Definition for a join in DAS
+

+

Doing:

+
+
+Select a.dept_name, b.employee_name
+from dept a, emp b
+where a.id = b.dept_id (+)
+
+
+

How do I define an Explicit ResultSet shape definition for the resultset from a join?

+ +

You can find some information on the DAS User Guide 1. There are
+couple test cases that also show this working, here is one test case
+2 and it's config file 3.

+ +

Allow passing ResultDescriptor to Dynamic Commands. i.e. Command x = das.createCommand("y");
+x can have set/get of single/list of ResultDescriptors. Useful for databases like Oracle
+which require user to pass ResultDescriptor and for cases when the commands are created dynamically
+using createCommand()

+ +

1 http://incubator.apache.org/tuscany/explicit-resultset-shape-definition.html
+2 https://svn.apache.org/repos/asf/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java
+3 https://svn.apache.org/repos/asf/incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithResultDescriptor.xml

+ +

Does DAS support datatypes like Blob?
+

+

RDB DAS supports SQL Data Types like Blob, Clob, ByteArray, Array.

+ +

Does DAS support named parameters passing?
+

+

User can do Command.setParameter(String name, Object value), getParameter(String name). Indexed set/getParameter() is available as before. Also <create>, <update>, <delete> from Config support named parameters.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-found-a-bug.html b/site/trunk/site-publish/das-java-found-a-bug.html new file mode 100644 index 0000000000..f519c235cb --- /dev/null +++ b/site/trunk/site-publish/das-java-found-a-bug.html @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Found A Bug + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Found A Bug + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ +
+

Reporting an Issue or Asking For New Features

+ +

Please use ApacheJIRA system to report bugs or request new features. First time users need to create a login.

+ +

Search the existing JIRAs to see if what you want to create is already there. If not, create a new one. Make sure JIRAs are categorized correctly using JIRA categories and are created under the correct component area. Please include as much information as possible in your JIRA to help resolve the issue quicker. This can include version of the software used, platforms running on, steps to reproduce, test case, details of your requirement or even a patch if you have one.

+ +

Submitting a Patch

+ +

Please follow the steps below to create a patch. It will be reviewed and committed by a committer in the project.

+ +
    +
  • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
  • +
  • Confirm that the problem is fixed and include a test case where possible to help the person who is applying the patch to verify the fix.
  • +
  • Generate the patch using svn diff File > patchfile
  • +
  • Try to give your patch files meaningful names, including the JIRA number
  • +
  • Add your patch file as an attachment to the associated JIRA issue +
      +
    • Clicking on the 'Patch Available' box in the screen where the patch is being submitted will help identify available patches quicker.
    • +
    +
  • +
+ + +

How do I get my JIRAs into a release?

+

You can always propose a release and drive the release with the content that you want. Another way to get a JIRA into a release is by providing a patch or working with other community members (volunteers) to help you get the problem fixed. You can also help by providing test cases.

+ +

Each release is managed by a release manager. Make sure that the Release Manager is aware of why a fix to a JIRA is important to your business. In general, the best attempt is made to include as many JIRAs as possible depending on the level of community help. The voting mechanism in the JIRA system can be used to raise the importance of a JIRA to the attention of the release manager. Adding comments in the JIRA would help the release manager understand why a JIRA is important to include in a given release.

+ +

How is a release done?

+

Anyone can volunteer to be a release manager and drive a release. Based on Apache guidelines, a release requires at least three PMC +1 votes and more +1s than -1s. A release can not be vetoed so a -1 does not block a release. The steps for how to create a Tuscany release are documented here

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-get-involved.html b/site/trunk/site-publish/das-java-get-involved.html new file mode 100644 index 0000000000..234c2b78d5 --- /dev/null +++ b/site/trunk/site-publish/das-java-get-involved.html @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Get Involved + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Get Involved + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ +
+

Getting Involved with Apache Tuscany - Welcome!

+ + + +
+

Getting involved in the project is easy. First, any help is welcome and we are excited to help you come on board. Here are some suggestions for how you can get involved in Apache Tuscany.

+ +
    +
  • Tuscany consists of several subprojects. Identify what areas you are interested in. Take a look at samples for that area.
  • +
  • Subscribe to the mailing list. If you are interested to get involved at the user level, subscribe to user mailing list. If you are interested to get involved in the development of Tuscany, subscribe to the developer list. Rememer that you can always unsubscribe later.
  • +
  • Help answer questions posted to the user mailing list for areas that you are familiar with. Your real usage experience can be very valueable to other users as well as developers on the project.
  • +
  • Would like to get invovled in development? Have new ideas? Start with the mailing list and share your thoughts.
  • +
  • Contribute to feature developement. Just let the community know what you'd like to work on. It is as easy as that.
  • +
  • Identify JIRAsin the area that you are interested in and provide patches.
  • +
  • Contribute to the user or developer documentation or website. Make your update on the on the Tuscany Wiki, create a JIRA and attach the link for your update.
  • +
  • If in doubt about where to start, send a note to the mailing list and mention your area of interest. Any questions is welcomed. We'd like you to be involved!
  • +
  • If you are new to open source and would like to learn more about how to work in open source, check this page.
  • +
+ + +
    +
  • Provide feedback: What is working well? What is missing? Get involved in creating software that addresses real pain points in SOA. Any help is good. Be part of the community.
  • +
+ + +

You can get a quick overview of many Tuscany information resources by watching the video "A Tour of the Tuscany Information Resources", Vcasmo site (password tuscany), You Tube.

+ +

communication

+ +

The Tuscany community also gets together on IRC. 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:

+ + + +

If you are not familiar with Apache, you can read more about how Apache works at this link.

+ + +
+ + +

Open CSA (SCA standards)

+ +

The SCA specifications which are implemented by Tuscany have moved to OASIS for formal
+standardization. This is being done as a series of OASIS technical
+committees, each dealing with one or more of aspects of the SCA specifications.

+ +

The OASIS activities are carried out in public. You can either observe the activities in the various technical committees, or join one or more of the committees to contribute to.

+ +

There are 6 SCA technical committees and by clicking on the links below you can find information about how to join as an observer or contributor. You will also have access to the minutes of meetings of the meetings on the same page.

+ + + + +
    +
  • OASIS SCAPolicy TC:Defining an SCA policy framework to simplify SOA application development
  • +
+ + +
    +
  • OASIS SCA Bindings TC:Standardizing bindings for SCA services and references to communication protocols, technologies and frameworks
  • +
+ + + + + + + + +
    +
  • OASIS SCA BPEL TC:Specifying how SCA component implementations for SOA can be written using BPEL
  • +
+ + +

Each OASIS SCA TC mailing list archives can be found here:

+ + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-incubating-m1.html b/site/trunk/site-publish/das-java-incubating-m1.html new file mode 100644 index 0000000000..29ec4cdad2 --- /dev/null +++ b/site/trunk/site-publish/das-java-incubating-m1.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Incubating-M1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS Releases > RDB DAS Java Previous Releases > DAS Java Incubating-M1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

The RDB DAS Java Incubating-M1 was released in June 2006.

+ +
    +
  • DAS Core Features +
      +
    • RDB CRUD operations in terms of SDO DataObjects
    • +
    • Optimistic concurrency control
    • +
    • Generated database IDs
    • +
    • Stored procedures
    • +
    • Paging API
    • +
    • 1..1 and 1..n relationships
    • +
    • Partial row updates
    • +
    +
  • +
+ + +

 This release comprises a single package containing SCA, SDO and DAS.

+ +

RDB DAS Java Incubating-M1

+

Windows

+ +
+ + + + + + + + + + + + + + + + + + + +
Type Description File
Signature
Binary Tuscany M1 DAS tuscany-incubating-M1.zip MD5     PGP
Source Tuscany M1 DAS tuscany-incubating-M1-src.zip MD5     PGP
+
+ + +

Linux

+ +
+ + + + + + + + + + + + + +
Type Description
File
Signature
Source Tuscany M1 DAS tuscany-incubating-M1-src.tar.gz MD5     PGP
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-incubator-m2.html b/site/trunk/site-publish/das-java-incubator-m2.html new file mode 100644 index 0000000000..67a052c6e2 --- /dev/null +++ b/site/trunk/site-publish/das-java-incubator-m2.html @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Incubator-M2 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS Releases > RDB DAS Java Previous Releases > DAS Java Incubator-M2 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

The SCA Java Incubator-M2 was released in Nov 2006.

+ +

SCA Java Incubator-M2

+ +
    +
  • DAS Core features +
      +
    • MySQL support
    • +
    • Static Data Objects
    • +
    • Dynamic root for static graphs
    • +
    • "Unique" attribute on relationships
    • +
    • Explicit ResultSet shape definition
    • +
    • Improved logging
    • +
    • Programmatic Configuration
    • +
    • Helper for empty SDO Graph +
        +
      • Column named "ID" is the PK
      • +
      • Column named "xxx_ID" is the FK to table "xxx"
      • +
      +
    • +
    • Convention over configuration
    • +
    +
  • +
+ + +
    +
  • DAS Samples +
      +
    • Tomcat integration and automated DAS samples testing (htmlUnit)
    • +
    • DAS Samples now have all dependencies and source code inside the sample war
    • +
    +
  • +
+ + +

Windows

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Type Description File
Signature
Binary Tuscany M2 DAS das-1.0-incubator-M2-bin.zip     PGP
Source Tuscany M2 DAS das-1.0-incubator-M2-src.zip     PGP
Source Tuscany M2 DAS Samples
das-samples-1.0-incubator-M2-bin.zip
    PGP
+
+ + +

Linux

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Type Description
File
Signature
Binary Tuscany M2 DAS das-1.0-incubator-M2-bin.tar.gz     PGP
Source Tuscany M2 DAS
das-1.0-incubator-M2-src.tar.gz    PGP
Source Tuscany M2 DAS Samples
das-samples-1.0-incubator-M2-bin.tar.gz PGP
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-m1.html b/site/trunk/site-publish/das-java-m1.html new file mode 100644 index 0000000000..444d65552d --- /dev/null +++ b/site/trunk/site-publish/das-java-m1.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java M1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > DAS Java M1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

DAS Java M1 Release (June 7th, 2006)

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • RDB CRUD operations in terms of SDO DataObjects
  • +
  • Optimistic concurrency control
  • +
  • Generated database IDs
  • +
  • Stored procedures
  • +
  • Paging API
  • +
  • 1..1 and 1..n relationships
  • +
  • Partial row updates
  • +
+ + + +

Download DAS Java M1

+ +

Windows

+
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-incubating-M1.zip ASC MD5
Source tuscany-incubating-M1-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-incubating-M1.tar.gz ASC MD5
Source tuscany-incubating-M1-src.tar.gz ASC MD5
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-m2-release.html b/site/trunk/site-publish/das-java-m2-release.html new file mode 100644 index 0000000000..66832096c9 --- /dev/null +++ b/site/trunk/site-publish/das-java-m2-release.html @@ -0,0 +1,129 @@ + + + + + + + DAS Java M2 Release : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > DAS Java M2 Release + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

DAS Releases

+ +

DAS M2 Release - Key Features

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • DAS Core features +
      +
    • MySQL support
    • +
    • Static Data Objects
    • +
    • Dynamic root for static graphs
    • +
    • "Unique" attribute on relationships
    • +
    • Explicit ResultSet shape definition
    • +
    • Improved logging
    • +
    • Programmatic Configuration
    • +
    • Helper for empty SDO Graph
    • +
    • Convention over configuration +
        +
      • Column named "ID" is the PK
      • +
      • Column named "xxx_ID" is the FK to table "xxx"
      • +
      +
    • +
    +
  • +
  • DAS Samples +
      +
    • Tomcat integration and automated DAS samples testing (htmlUnit)
    • +
    • DAS Samples now have all dependencies and source code inside the sample war
    • +
    +
  • +
+ + +

To download DAS M2 Release go to DAS Downloads page

+ +

DAS M2 Release - Key Features

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • RDB CRUD operations in terms of SDO DataObjects
  • +
  • Optimistic concurrency control
  • +
  • Generated database IDs
  • +
  • Stored procedures
  • +
  • Paging API
  • +
  • 1..1 and 1..n relationships
  • +
  • Partial row updates
  • +
+ + +

To download DAS M1 Release go to DAS Downloads page

+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/das-java-m2.html b/site/trunk/site-publish/das-java-m2.html new file mode 100644 index 0000000000..e358d0d473 --- /dev/null +++ b/site/trunk/site-publish/das-java-m2.html @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java M2 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > DAS Java M2 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

DAS Java M2 Release (Nov 20th, 2006)

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • DAS Core features +
      +
    • MySQL support
    • +
    • Static Data Objects
    • +
    • Dynamic root for static graphs
    • +
    • "Unique" attribute on relationships
    • +
    • Explicit ResultSet shape definition
    • +
    • Improved logging
    • +
    • Programmatic Configuration
    • +
    • Helper for empty SDO Graph
    • +
    • Convention over configuration +
        +
      • Column named "ID" is the PK
      • +
      • Column named "xxx_ID" is the FK to table "xxx"
      • +
      +
    • +
    +
  • +
  • DAS Samples +
      +
    • Tomcat integration and automated DAS samples testing (htmlUnit)
    • +
    • DAS Samples now have all dependencies and source code inside the sample war
    • +
    +
  • +
+ + +

Download DAS Java M2

+ +

Windows

+
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary das-1.0-incubator-M2-bin.zip ASC MD5
Source das-1.0-incubator-M2-src.zip ASC MD5
Sample das-samples-1.0-incubator-M2-bin.zip ASC MD5
+
+ + + +

Linux / Mac OS X / Unix

+
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary das-1.0-incubator-M2-bin.tar.gz ASC MD5
Source das-1.0-incubator-M2-src.tar.gz ASC MD5
Sample das-samples-1.0-incubator-M2-bin.tar.gz ASC MD5
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-menu.html b/site/trunk/site-publish/das-java-menu.html new file mode 100644 index 0000000000..2fb0b198c5 --- /dev/null +++ b/site/trunk/site-publish/das-java-menu.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > DAS General Menu > DAS Java Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-nightly-build.html b/site/trunk/site-publish/das-java-nightly-build.html new file mode 100644 index 0000000000..a6d61ce6dc --- /dev/null +++ b/site/trunk/site-publish/das-java-nightly-build.html @@ -0,0 +1,80 @@ + + + + + + + DAS Java Nightly Build : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > DAS Java Nightly Build + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ +
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/das-java-previous-releases.html b/site/trunk/site-publish/das-java-previous-releases.html new file mode 100644 index 0000000000..7ef6e07e3b --- /dev/null +++ b/site/trunk/site-publish/das-java-previous-releases.html @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Previous Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > DAS Java Previous Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+ +
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-project.data/das_class_diagram.jpg b/site/trunk/site-publish/das-java-project.data/das_class_diagram.jpg new file mode 100644 index 0000000000..1a7c90023c Binary files /dev/null and b/site/trunk/site-publish/das-java-project.data/das_class_diagram.jpg differ diff --git a/site/trunk/site-publish/das-java-project.data/das_class_diagram.jpg.jpeg b/site/trunk/site-publish/das-java-project.data/das_class_diagram.jpg.jpeg new file mode 100644 index 0000000000..5a5552a160 Binary files /dev/null and b/site/trunk/site-publish/das-java-project.data/das_class_diagram.jpg.jpeg differ diff --git a/site/trunk/site-publish/das-java-project.html b/site/trunk/site-publish/das-java-project.html new file mode 100644 index 0000000000..9c58a5310a --- /dev/null +++ b/site/trunk/site-publish/das-java-project.html @@ -0,0 +1,285 @@ + + + + + + + DAS Java Project : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java Project + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+ + +

DAS Projects

+

This document provides information on DAS Java subproject of the Apache Tuscany incubator project.

+ +

DAS Java Getting Started

+ +

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.

+ +

Build Environment Setup

+ +

DAS is a subproject of the Tuscany Java project subtree. If you check out and build the whole Tuscany Java project, you will have also built the DAS subproject.
+[Note: Show how this can be done]

+ +

Build DAS subproject

+ +

Set up your environment using the instructions for building the whole of Tuscany, but only download and install Java 5, Maven and Svn

+ +

Make sure 'mvn' and 'svn' commands are in your PATH environment variable.

+ +

Check out the DAS open source projects from Apache.

+ +

Commands:

+ +

md <local tuscany dir>
+cd <local tuscany dir>
+svn co https://svn.apache.org/repos/asf/incubator/tuscany/java

+ +

Run "mvn" under <local tuscany dir>/java directory to install POM files from the root project to the local repository

+ +

cd <local tuscany dir>/java/das
+mvn

+ +

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
+Use of Firewall can cause 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"

+ +

cd <local tuscany dir>/java/das
+mvn -P javadoc

+ +

Javadoc will become available at <local tuscany dir>/java/das/rdb/target/apidocs/index.html.

+ +

Dependency Jars for DAS.RDB

+ +

The DAS.RDB project has a dependency on SDO and requires the following SDO runtime jars to build

+ +

sdo-api-r2.0.1-1.0-SNAPSHOT.jar - SDO 2.0 Interfaces
+tuscany-sdo-impl-1.0-SNAPSHOT.jar - SDO 2.0 implementation

+ +

The SDO.IMPL project have dependencies on the following EMF (Eclipse Modeling Framework - www.eclipse.org/emf) runtime jars to build:

+ +

common-2.2.1.jar - some common framework utility and base classes
+ecore-2.2.1.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ecore-change-2.2.1.jar - the EMF change recorder and framework
+ecore-xmi-2.2.1.jar - EMF's default XML (and XMI) serializer and loader
+xsd-2.2.1.jar - the XML Schema model
+log4j-1.2.12.jar - log4j logging framework

+ +

Running DAS Samples

+ +

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.
+[Note: Please check to make sure this is correct]

+ +

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 and follow regular deployment procedures to deploy the war file

+ + +

Running Tuscany DAS Unit Tests

+ +

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

+ +

Please run unit tests as a good practice before submitting your contribution.

+ +

Running DAS tests as part of the build

+ +

-cd 'local tuscany dir'/java/das_
+mvn test

+ +

-------------------------------------------------------
+T E S T S
+-------------------------------------------------------
+Running org.apache.tuscany.das.rdb.test.suites.AllTestsDerby
+Setting up for Derby run
+Ending Derby run
+Tests run: 137, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 33.468 sec

+ +

Results :

+ +

Tests run: 137, Failures: 0, Errors: 0, Skipped: 0

+ +

INFO ------------------------------------------------------------------------
+INFO BUILD SUCCESSFUL
+INFO ------------------------------------------------------------------------
+INFO Total time: 57 seconds
+INFO Finished at: Tue Oct 03 12:06:13 PDT 2006
+INFO Final Memory: 5M/10M
+INFO ------------------------------------------------------------------------

+ + +

Running DAS CompanyWeb tests in tomcat

+ +

Download tomcat distribution into your local filesystem : http://tomcat.apache.org/

+ +

Create a build.properties in your root directory (e.g. C:\Documents and Settings\lresende in Win2K systems) with the following contents

+ +

tuscany.acceptance.tomcat.zipped='directory where tomcat was downloaded'
apache-tomcat-5.5.17-tuscany.zip

+ +

checkout DAS Sample from SVN repository:

+ +

md 'local tuscany dir'
+cd 'local tuscany dir'
+svn co https://svn.apache.org/repos/asf/incubator/tuscany/java/das das

+ +

use maven run the DAS CompanyWeb tests in Tomcat:

+ +

cd das/samples/testing/tomcat
+mvn

+ +

-------------------------------------------------------
+T E S T S
+-------------------------------------------------------
+Running org.apache.tuscany.test.das.DasTestCase
+Running:HomePage SUCCESS!!!
+Running:AllCompanies SUCCESS!!!
+Running:AllCompaniesDepartments SUCCESS!!!
+Running:AddDepartmentToFirstCompany SUCCESS!!!
+Running:ChangeCompanyDepartmentNames SUCCESS!!!
+Running:DeleteCompanyOneDepartments SUCCESS!!!
+Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.911 sec

+ +

Results :

+ +

Tests run: 6, Failures: 0, Errors: 0, Skipped: 0

+ +

INFO
+INFO
+INFO ------------------------------------------------------------------------
+INFO Reactor Summary:
+INFO ------------------------------------------------------------------------
+INFO Tuscany Testing in Tomcat ............................. SUCCESS 0.251s
+INFO Tuscany Testing DAS Sample - Companyweb ............... SUCCESS [1:17.791s]
+INFO ------------------------------------------------------------------------
+INFO ------------------------------------------------------------------------
+INFO BUILD SUCCESSFUL
+INFO ------------------------------------------------------------------------
+INFO Total time: 1 minute 18 seconds
+INFO Finished at: Tue Oct 03 12:25:48 PDT 2006
+INFO Final Memory: 7M/15M
+INFO ------------------------------------------------------------------------

+ +

Due to a current limitation, you must run mvn clean before you can run the tests a second time

+ +

DAS RDB Code Structure

+ +

Currently, the project's code base includes an implementation of a DAS RDB (relational database) and it is divided into three parts:

+ +

1. das.rdb contains the DAS interfaces and the RDB (Relational Database) runtime implementation.

+ +

2. samples.das provides sample applications based on DAS.

+ +

3. distribution.das provides DAS binaries distribution with required dependencies.

+ +

Please note that distribution.das-samples provides DAS samples distribution as a ready-to-deploy war file.

+ +

Following diagram shows the high level class diagram for RDB DAS.
+[Note: Should the following be moved to architecture guide for RDB DAS\?]

+ +

+ +
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/das-java-release-contents.html b/site/trunk/site-publish/das-java-release-contents.html new file mode 100644 index 0000000000..14319ce9f9 --- /dev/null +++ b/site/trunk/site-publish/das-java-release-contents.html @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Release Contents + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > DAS Java Release Contents + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Latest Release: RDB DAS Beta2 Release

+ +

Download RDB DAS Beta2 Release

+ +

What's new in Apache Tuscany DAS beta2?

+ +

The main purpose of the DAS beta2 release is to fix incompatibilities that were found with SDO 1.0 release.

+ +

The following JIRAs also were fixed on DAS beta2

+ +
    +
  • TUSCANY-986 - DAS integration with SDO 2.1 APIs
  • +
  • TUSCANY-961 - DAS: Using deprected SDO method causes Type lookup failure
  • +
  • TUSCANY-1353 - Exception attempting to insert rows using DAS w/DataDirect JDBC driver
  • +
  • TUSCANY-1453 - DAS can't read or write the blob field
  • +
  • TUSCANY-1463 - Support for Clob and Array fields
  • +
  • TUSCANY-1462 - Consistent use of Parameters in Config
  • +
  • TUSCANY-1464 - Wrong query results when SELECT misses PKs
  • +
  • TUSCANY-1465 - Allow passing ResultDescriptor for dynamic Commands
  • +
  • TUSCANY-1720 - Modify sample readmes for - steps to run sample with other databases
  • +
+ + + +

Previous releases content

+

DAS Beta1 Release - Key Features

+ +

What's new in Apache Tuscany DAS beta1?

+ +
    +
  • Support for J2SE connections in DAS config using Driver Manager.
  • +
  • Added support for multiple database schemas in queries
  • +
  • Enhanced Optimistic Concurrency Control with overqualified updates
  • +
  • Multiple enhancements around ApplyChanges API
  • +
  • Enhanced support for MySQL
  • +
  • Enhanced Documentation: User, Developer and Architect guides as well as javadocs
  • +
  • Enhanced and new sample applications
  • +
+ + +

DAS M2 Release - Key features

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • DAS Core features +
      +
    • MySQL support
    • +
    • Static Data Objects
    • +
    • Dynamic root for static graphs
    • +
    • "Unique" attribute on relationships
    • +
    • Explicit ResultSet shape definition
    • +
    • Improved logging
    • +
    • Programmatic Configuration
    • +
    • Helper for empty SDO Graph
    • +
    • Convention over configuration +
        +
      • Column named "ID" is the PK
      • +
      • Column named "xxx_ID" is the FK to table "xxx"
      • +
      +
    • +
    +
  • +
  • DAS Samples +
      +
    • Tomcat integration and automated DAS samples testing (htmlUnit)
    • +
    • DAS Samples now have all dependencies and source code inside the sample war
    • +
    +
  • +
+ + +

To download DAS M2 Release go to DAS Downloads page

+ +

DAS M1 Release - Key Features

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • RDB CRUD operations in terms of SDO DataObjects
  • +
  • Optimistic concurrency control
  • +
  • Generated database IDs
  • +
  • Stored procedures
  • +
  • Paging API
  • +
  • 1..1 and 1..n relationships
  • +
  • Partial row updates
  • +
+ + +

To download DAS M1 Release go to DAS Downloads page

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-releases.html b/site/trunk/site-publish/das-java-releases.html new file mode 100644 index 0000000000..d67f42bf79 --- /dev/null +++ b/site/trunk/site-publish/das-java-releases.html @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ +
+ +

Latest Release

+ +

DAS Java Beta2 Release (Oct. 06, 2007)

+ +

What's new in Apache Tuscany DAS beta2?

+ +

The main purpose of the DAS beta2 release is to fix incompatibilities that were found with SDO 1.0 release.

+ +

The following JIRAs also were fixed on DAS beta2

+ +
    +
  • TUSCANY-986 - DAS integration with SDO 2.1 APIs
  • +
  • TUSCANY-961 - DAS: Using deprected SDO method causes Type lookup failure
  • +
  • TUSCANY-1353 - Exception attempting to insert rows using DAS w/DataDirect JDBC driver
  • +
  • TUSCANY-1453 - DAS can't read or write the blob field
  • +
  • TUSCANY-1463 - Support for Clob and Array fields
  • +
  • TUSCANY-1462 - Consistent use of Parameters in Config
  • +
  • TUSCANY-1464 - Wrong query results when SELECT misses PKs
  • +
  • TUSCANY-1465 - Allow passing ResultDescriptor for dynamic Commands
  • +
  • TUSCANY-1720 - Modify sample readmes for - steps to run sample with other databases
  • +
+ + + +

Download DAS Java Beta2

+ +

Windows

+
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-das-1.0-incubating-beta2-bin.zip ASC MD5
Source tuscany-das-1.0-incubating-beta2-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-das-1.0-incubating-beta2-bin.tar.gz ASC MD5
Source tuscany-das-1.0-incubating-beta2-src.tar.gz ASC MD5
+
+ + + +

+ +

Previous Releases

+ +

Below is a complete list of all Apache Tuscany DAS downloads.

+ +

It is strongly recommended that you download the latest release instead of any of the previous releases since it is closer to the latest code in the trunk.

+ + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java-subproject-menu.html b/site/trunk/site-publish/das-java-subproject-menu.html new file mode 100644 index 0000000000..dd5f102b38 --- /dev/null +++ b/site/trunk/site-publish/das-java-subproject-menu.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java Subproject Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > Subproject Menus > DAS Java Subproject Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-java.data/das_class_diagram.jpg b/site/trunk/site-publish/das-java.data/das_class_diagram.jpg new file mode 100644 index 0000000000..1a7c90023c Binary files /dev/null and b/site/trunk/site-publish/das-java.data/das_class_diagram.jpg differ diff --git a/site/trunk/site-publish/das-java.data/das_class_diagram.jpg.jpeg b/site/trunk/site-publish/das-java.data/das_class_diagram.jpg.jpeg new file mode 100644 index 0000000000..5a5552a160 Binary files /dev/null and b/site/trunk/site-publish/das-java.data/das_class_diagram.jpg.jpeg differ diff --git a/site/trunk/site-publish/das-java.html b/site/trunk/site-publish/das-java.html new file mode 100644 index 0000000000..3efdcdde54 --- /dev/null +++ b/site/trunk/site-publish/das-java.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Java + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ +
+ +

What is RDB Data Access Service?

+ +

RDB DAS provides 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 SDO Data Object types/properties.

+ +

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 a DAS client. 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.

+ + +

+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-lite-c.data/DAS Lite C Class Diagram b/site/trunk/site-publish/das-lite-c.data/DAS Lite C Class Diagram new file mode 100644 index 0000000000..da5d22eb40 --- /dev/null +++ b/site/trunk/site-publish/das-lite-c.data/DAS Lite C Class Diagram @@ -0,0 +1 @@ +A new Gliffy diagram

]]>
\ No newline at end of file diff --git a/site/trunk/site-publish/das-lite-c.data/DAS_lite_diagram.jpg b/site/trunk/site-publish/das-lite-c.data/DAS_lite_diagram.jpg new file mode 100644 index 0000000000..9aefc7f42d Binary files /dev/null and b/site/trunk/site-publish/das-lite-c.data/DAS_lite_diagram.jpg differ diff --git a/site/trunk/site-publish/das-lite-c.data/DAS_lite_diagram.jpg.jpeg b/site/trunk/site-publish/das-lite-c.data/DAS_lite_diagram.jpg.jpeg new file mode 100644 index 0000000000..9a1189ebfb Binary files /dev/null and b/site/trunk/site-publish/das-lite-c.data/DAS_lite_diagram.jpg.jpeg differ diff --git a/site/trunk/site-publish/das-lite-c.html b/site/trunk/site-publish/das-lite-c.html new file mode 100644 index 0000000000..d50ea3a399 --- /dev/null +++ b/site/trunk/site-publish/das-lite-c.html @@ -0,0 +1,104 @@ + + + + + + + DAS Lite C++ : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > DAS C++ Architecture Guide > DAS Lite C++ + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+ + + + +
Development
+

Introduction

+ +

    The DAS Lite C++ library is a minimal collection of classes needed to implement a simple read  webApp. This webApp should create a prepared statement using a given select statement string  and return the selected rows. It also should generate a graph with the data returned by the database using SDO C++ framework. 

+ +

DAS Lite is in its early stages of development. Your help is welcome

+ +
+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/das-lite-cplus-menu.html b/site/trunk/site-publish/das-lite-cplus-menu.html new file mode 100644 index 0000000000..b70a6e2768 --- /dev/null +++ b/site/trunk/site-publish/das-lite-cplus-menu.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Lite CPlus Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > DAS General Menu > DAS CPlus Menu > DAS Lite CPlus Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + + + +
Development
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-menu.html b/site/trunk/site-publish/das-menu.html new file mode 100644 index 0000000000..86c86481e4 --- /dev/null +++ b/site/trunk/site-publish/das-menu.html @@ -0,0 +1,81 @@ + + + + + + + DAS Menu : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Menus > DAS Menu + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
Tuscany DAS
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/das-outline.html b/site/trunk/site-publish/das-outline.html new file mode 100644 index 0000000000..712639e11b --- /dev/null +++ b/site/trunk/site-publish/das-outline.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Outline + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > old-Sandbox > DAS > DAS Outline + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-overview.data/RDB-DAS-Overview.pdf b/site/trunk/site-publish/das-overview.data/RDB-DAS-Overview.pdf new file mode 100644 index 0000000000..2398de5cc2 Binary files /dev/null and b/site/trunk/site-publish/das-overview.data/RDB-DAS-Overview.pdf differ diff --git a/site/trunk/site-publish/das-overview.data/das-data-services-v01.pdf b/site/trunk/site-publish/das-overview.data/das-data-services-v01.pdf new file mode 100644 index 0000000000..24082aeb07 Binary files /dev/null and b/site/trunk/site-publish/das-overview.data/das-data-services-v01.pdf differ diff --git a/site/trunk/site-publish/das-overview.data/sdo_das_sm.jpg b/site/trunk/site-publish/das-overview.data/sdo_das_sm.jpg new file mode 100644 index 0000000000..c9c22fc646 Binary files /dev/null and b/site/trunk/site-publish/das-overview.data/sdo_das_sm.jpg differ diff --git a/site/trunk/site-publish/das-overview.data/sdo_das_sm.jpg.jpeg b/site/trunk/site-publish/das-overview.data/sdo_das_sm.jpg.jpeg new file mode 100644 index 0000000000..1929dcd235 Binary files /dev/null and b/site/trunk/site-publish/das-overview.data/sdo_das_sm.jpg.jpeg differ diff --git a/site/trunk/site-publish/das-overview.html b/site/trunk/site-publish/das-overview.html new file mode 100644 index 0000000000..14f1164a58 --- /dev/null +++ b/site/trunk/site-publish/das-overview.html @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Overview + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + +
+ +

What is Data Access Service?

+ +

Service Data Object(SDO) provides a uniform API for handling different types of data. Data Access Service (DAS) simplifies handling of data when interacting with the back-end data source and frees application developers from dealing with tedious and error-prone transformation between end source types and SDO Data Object Types/properties.

+ +

Tuscany provides implementation for different flavors of DAS in two languages, Java and C++. Please follow the link under each language to explore what is available or is in progress. We welcome your help to extend support for other back-end data source types or complete the existing solutions.

+ +

The following diagram illustrates a typical client interaction. The client starts by reading a graph of data and makes modifications to the graph, possibly by adding elements, and then requests the DAS to push the changes back to the data source.
+

+ +

Learn more about DAS

+ + + + + + + + + + + + + + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-previous-releases.html b/site/trunk/site-publish/das-previous-releases.html new file mode 100644 index 0000000000..539e526502 --- /dev/null +++ b/site/trunk/site-publish/das-previous-releases.html @@ -0,0 +1,97 @@ + + + + + + + DAS Previous Releases : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > DAS Previous Releases + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ + +
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/das-rdb-menu.html b/site/trunk/site-publish/das-rdb-menu.html new file mode 100644 index 0000000000..313fb3946e --- /dev/null +++ b/site/trunk/site-publish/das-rdb-menu.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS RDB Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > DAS General Menu > DAS RDB Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ + +
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-release-process-menu.html b/site/trunk/site-publish/das-release-process-menu.html new file mode 100644 index 0000000000..98cf09e917 --- /dev/null +++ b/site/trunk/site-publish/das-release-process-menu.html @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Release Process Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > DAS General Menu > DAS Release Process Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
DAS Release Process
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-release-process.html b/site/trunk/site-publish/das-release-process.html new file mode 100644 index 0000000000..bc4c39e62d --- /dev/null +++ b/site/trunk/site-publish/das-release-process.html @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Release Process + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Release Process + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Starting a Release for DAS Subproject

+

This is work in progress. At this point, thoughts are put together to review with the community. Please help to complete this

+ +

What's a Release

+ +

The ASF release definition basically says that any artifact that is made available for people outside of the Apache Tuscany project is considered a release. The Release process usually consist of preparing the contents of the release on the project dev-list, voting release candidate(s) and, because Tuscany is still under Incubation, asking the iPMC to approve the release after it has already been approved on the project development community.

+ +

Prerequisites

+ +

DAS releases are dependent on SDO release. Make sure we have a SDO release to base this release on.

+ +

Starting the release process

+
    +
  1. Identify a release manager on devlist.
  2. +
  3. The release manager initiates the discussion on the dev list or gathers previous dicussion threads related to the release content and starts a release thread discussion. Get consensus on the content from the community early.
  4. +
  5. Nail the must-have functions from the community that is required to be delivered in this release.
  6. +
  7. Target (or reTarget) all of the Jira defects and new function that is required for the release. Move non-critical items to the next milestone.
  8. +
+ + +

During the release

+
    +
  1. Keep Jiras under control during the milestone. Make sure new opened ones are targeted for the appropriate release, and the backlog is decreasing.
  2. +
  3. Make sure the new function Jira are marked appropriately (since they will be used in the ReadMe file creation).
  4. +
  5. Look for Jira's that have patches attached to them and get the code integrated early in the cycle. Don't wait until the last minute.
  6. +
  7. Make sure that you begin to obtain clean versions for all SNAPSHOTs in the build. This can sometimes be a lengthy process as dependent packages are sometimes not available.
  8. +
  9. Lay out a plan for the distributed execution of the test suites (unit tests, integration tests, scenarios)
  10. +
  11. Ensure that all of the licenses are valid and replacements/remediation should be done.
  12. +
  13. Make sure that you remind the community that all modules should have the appropriate header file with the appropriate copyright statement.
  14. +
  15. Prepare for signing/authenticating distro files +
      +
    1. identify/install s/w for public key infrastructure stuff and MD5 message digest generation
    2. +
    3. Create a PGP key for signing files
    4. +
    5. Lodge your PGP key with a keyserver
    6. +
    7. Put your public key in the svn KEYS file
    8. +
    +
  16. +
  17. Get set up for easy file transfer to people.apache.org +
      +
    1. Identify/Install clients for ssh, secure copying and secure ftping
    2. +
    3. Establish authentication with people.apache.org by key
    4. +
    +
  18. +
  19. Ensure that there is inter-module understanding of how we plan to sequence releasing modules and requesting IPMC votes
  20. +
  21. make the trunk reference the newly released parent pom and buildtools
  22. +
  23. optionally make a branch
  24. +
  25. stabilize code in branch (or trunk if development activity can be halted in trunk) +
      +
    1. check LICENSE and NOTICE files in project roots and in jar manifests +
        +
      1. run the rat tool against the source and check for exceptions
      2. +
      3. once exceptions have been fixed, store the rat log and make a note of rat log exceptions which are there because they have to be
      4. +
      5. repeat this as necessary during the release process if new files are included
      6. +
      +
    2. +
    3. update readme with the important New Function and a pointer to defect fixes for this release. Put the delivery date of the release at the top of the readme.
    4. +
    +
  26. +
+ + +
    +
  1. +
      +
    1. Ensure the DAS Tuscany project's root level svn Status file is up to date, and then copy/update it into the root folders of any source distribution that will be made,
    2. +
    +
  2. +
+ + +

Exiting the release cycle

+ +
    +
  1. Create a release candidate +
      +
    1. Create local copies of source hierarchies, , one per source distribution, using svn export <uri> <local-dir>
    2. +
    3. Make archives of your clean exports in order to be able to distribute source
    4. +
    5. Follow the instructions in BUILDING.txt in the root folders of the source distributions to produce the binary distribution
    6. +
    7. Test binary distro on a clean machine before publishing it as an RC.
    8. +
    9. When ready, put in place distro signing capabilities +
        +
      1. Sign and create md5 checksums for each of the source and binary distribution archives
      2. +
      3. transfer the archives to a logical place under your public_html people.apache.org space
      4. +
      5. create a suitable readme for the root level of your release candidate folder, and ensure the readme names the release candidate version
      6. +
      +
    10. +
    +
  2. +
+ + +
    +
  1. Declare a candidate build and ask for feedback on devlist and user list. Work out any issues that are voiced.
  2. +
  3. Get some to verify that all of the samples pass without issues. Integration tests and unit tests should run and known problems need to be identifed.
  4. +
  5. Initiate a vote on tuscany-dev mailing list for the release candidate to make the build a public release.
  6. +
  7. After 3 days, post the result to the devlist
  8. +
  9. Once the community approved the candidate, create a tag from the branch (or trunk if no branch) +
      +
    1. Note that a release must have a referenceable tag
      + svn will complain when you try to do an svn commit into a tag, which is a warning only, and during this phase of the release process, updates to a tag are justifiable
    2. +
    +
  10. +
  11. Get approval from IPMC to make this a public release. Send a note to general@apache.org which summarizes the result of vote on devlist and include a pointer to the release in your note. 3 (+1) IPMC votes are required to make this a public release and of course no (-1).
  12. +
  13. Once you have IPMC approval, post the release to people.apache.org.
  14. +
  15. Update the version elements of the poms to define the version of the parent pom and buildtools that should be used
  16. +
  17. Update the tags version names of the distributable artifacts to non SNAPSHOT titles that match the release name
  18. +
  19. Update the tags version names of the dependencies to non SNAPSHOT versions, if not already done earlier in the release candidate process
  20. +
  21. Ideally update the tags version names of maven plugins to non SNAPSHOT versions if not already done earlier in the release candidate process (note that if the plugin behaviour changes after release, your tag or source distribution may not build in the same way as it did when you released if you rely on SNAPSHOT plugin versions)
  22. +
  23. Rebuild and upload a new release to /www/people.apache.org/dist/incubator/tuscany/java
  24. +
  25. update 'Download' link on the wiki and make it a goal to update or add documentation.
  26. +
  27. Announce the release by sending to anounce@apache.org (note that you must use an apache.org email address to do this), copying tuscany-dev, tuscany-user and general@incubator
  28. +
  29. Don't forget that all this could not have been done without everyone's help. Post a congratulation note to the dev list and thank the entire team for their efforts to make this happen And thank you for the extra ordinary effort to make this happen
  30. +
+ + + +

Good References

+ + + + +

Examples

+

http://wiki.apache.org/ws/FrontPage/Axis2C/releases/steps

+ + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das-releases.html b/site/trunk/site-publish/das-releases.html new file mode 100644 index 0000000000..830d18dc41 --- /dev/null +++ b/site/trunk/site-publish/das-releases.html @@ -0,0 +1,129 @@ + + + + + + + DAS Releases : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Sandbox for website > DAS > DAS Releases + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

DAS Releases

+ +

DAS M2 Release - Key Features

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • DAS Core features +
      +
    • MySQL support
    • +
    • Static Data Objects
    • +
    • Dynamic root for static graphs
    • +
    • "Unique" attribute on relationships
    • +
    • Explicit ResultSet shape definition
    • +
    • Improved logging
    • +
    • Programmatic Configuration
    • +
    • Helper for empty SDO Graph
    • +
    • Convention over configuration +
        +
      • Column named "ID" is the PK
      • +
      • Column named "xxx_ID" is the FK to table "xxx"
      • +
      +
    • +
    +
  • +
  • DAS Samples +
      +
    • Tomcat integration and automated DAS samples testing (htmlUnit)
    • +
    • DAS Samples now have all dependencies and source code inside the sample war
    • +
    +
  • +
+ + +

To download DAS M2 Release go to DAS Downloads page

+ +

DAS M2 Release - Key Features

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • RDB CRUD operations in terms of SDO DataObjects
  • +
  • Optimistic concurrency control
  • +
  • Generated database IDs
  • +
  • Stored procedures
  • +
  • Paging API
  • +
  • 1..1 and 1..n relationships
  • +
  • Partial row updates
  • +
+ + +

To download DAS M1 Release go to DAS Downloads page

+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/das-users-guide.html b/site/trunk/site-publish/das-users-guide.html new file mode 100644 index 0000000000..6f123edd39 --- /dev/null +++ b/site/trunk/site-publish/das-users-guide.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS Users Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > old-Sandbox > DAS > DAS Users Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/das.html b/site/trunk/site-publish/das.html new file mode 100644 index 0000000000..e05c233304 --- /dev/null +++ b/site/trunk/site-publish/das.html @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + Apache Tuscany : DAS + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > old-Sandbox > DAS + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+

Tuscany DAS

+

DAS Overview
+DAS Java Developer Guide
+DAS Documentation
+DAS Java Release Contents
+DAS Downloads

+

General

+

Home
+News & Events
+License
+ASF

+

Community

+

Get Involved
+Mailing Lists
+Found a Bug?
+Blog

+ +
+

+ + + +
+ +

What is Data Access Service?

+ +

Service Data Object(SDO) provides a uniform API for handling different types of data. Data Access Service (DAS) simplifies handling of data when interacting with the back-end data source and frees application developers from dealing with tedious and error-prone transformation between end source types and SDO Data Object Types/properties.

+ +

Tuscany provides implementation for different flavors of DAS in two languages, Java and C++. Please follow the link under each language to explore what is available or is in progress. We welcome your help to extend support for other back-end data source types or complete the existing solutions.

+ +

The following diagram illustrates a typical client interaction. The client starts by reading a graph of data and makes modifications to the graph, possibly by adding elements, and then requests the DAS to push the changes back to the data source.
+

+ +

Learn more about DAS

+ + + + + + + + + + + + + + + +
+
+

Copyright © 2006, The Apache Software Foundation Apache Tuscany is undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Web Services PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/delete-java-sca-architecture-overview.data/TuscanyJAVASCAM2.pdf b/site/trunk/site-publish/delete-java-sca-architecture-overview.data/TuscanyJAVASCAM2.pdf new file mode 100644 index 0000000000..aa2f5ffe41 Binary files /dev/null and b/site/trunk/site-publish/delete-java-sca-architecture-overview.data/TuscanyJAVASCAM2.pdf differ diff --git a/site/trunk/site-publish/delete-java-sca-architecture-overview.html b/site/trunk/site-publish/delete-java-sca-architecture-overview.html new file mode 100644 index 0000000000..6a1eaed7e0 --- /dev/null +++ b/site/trunk/site-publish/delete-java-sca-architecture-overview.html @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + Apache Tuscany : DELETE- Java SCA Architecture Overview + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > DELETE- Java SCA Architecture Overview + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
Apache Tuscany SCA Java Architecture
+

This page is work in progress. Thanks for your contribution
+At the moment we are pulling different pieces of information in one place and then we'll decide on how to organize the information.

+ + + +


+
+ +

Architecture Overview

+

The SCA Java runtime is composed of a kernel and extensions. The kernel is essentially a multi-VM wiring engine that connects components together using the principles of Dependency Injection, or Inversion of Control.

+ +

Kernel

+

The kernel is designed to be simple and limited in its capabilities: it wires functional units together. Capabilities such as service discovery, reliability, support for transport protocols, etc. are provided through extensions. The kernel extension model is based on the SCA 1.0 Java programming and assembly model. In otherwords, the kernel uses SCA to bootstrap itself. The mechanics of how this is done are described in detail in Kernel Architecture Guide.

+ +

The kernel is divided into a number of modules: api, host_api, spi and core. The api module defines Tuscany proprietary programming model annotations and APIs. The host_api module defines APIs for interacting with the kernel. The spi module defines extension points and abstract helper classes. The core module contains the kernel implementation.

+ +

Extension

+

Extensions enhance the kernel with specific sets of functionality. Extension types are not fixed and the kernel is designed to be as flexible as possible by providing an open-ended extension model. From the kernel perspective, extensions are just a set of SCA components. However, there are a number of known extension types defined by the spi module, including:

+ +
    +
  • Component implementation types, e.g. Spring, Groovy, and JavaScript
  • +
  • Binding types, e.g. Axis, CXF, AMQP, ActiveMQ, JXTA
  • +
  • DataBinding types, e.g. JAXB, SDO, XmlBeans
  • +
+ + +

There are also a number of add-on extensions that do not correspond to a well-know type:

+ +
    +
  • The JPA extension for O/R mapping
  • +
  • The Geronimo Transaction Manager extension for transactional support in the runtime
  • +
  • The HOWL-based Persistent Store extension for high-throughput persistence of conversational state
  • +
+ + +

More detail can be found in the Extensions Guide.

+ +

Runtime

+

The kernel is designed to be embedded in, or provisioned to, a number of different host environments. For example, the kernel may be provisioned to an OSGi container, a standalone runtime, a servlet engine, or JEE application server. There is even a Maven runtime that embeds kernel for integration testing. Runtime capabilities may vary based on the host environment.

+ + +

Data Binding

+

Not sure if this belongs to this page or not

+ +

Data provides transparent data mapping between different types of data that can be exchanged between caller of a service and the service itself given the format of the data that will be supplied by the client. Data Mediator will do this transformation given the following information:

+
    +
  1. format of the data that can be consumed by the service
  2. +
  3. format of the data that will be sent by the client
  4. +
+ + +

You can find more detailed information about databinding at this link

+ +

+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/delete-java-sca-kernel.html b/site/trunk/site-publish/delete-java-sca-kernel.html new file mode 100644 index 0000000000..eff6c48b09 --- /dev/null +++ b/site/trunk/site-publish/delete-java-sca-kernel.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + Apache Tuscany : Delete-Java SCA Kernel + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > Delete-Java SCA Kernel + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+

Links

+

Architecture
+Build Status

+ +

The Kernel

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/delete-junk.html b/site/trunk/site-publish/delete-junk.html new file mode 100644 index 0000000000..6fd503c216 --- /dev/null +++ b/site/trunk/site-publish/delete-junk.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + Apache Tuscany : Delete-Junk + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > Delete-Junk + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+

+ + + + + + + +
+

SCA Java Documentation for 1.x

+ +
Getting Started with Tuscany
+

These guides help you to get setup in Tuscany, develop and run a simple application using comand line or Eclipse.

+ + +
+ + +
SCA Introduction
+

provides a quick introduction to SCA and links to the SCA specifications
+Introduction to SCA

+
+ +
Tuscany SCA User Guide
+

These guides provide the following information:

+
    +
  • How to develop and run applications using Tuscany in a single node or multi node environment
    +User Guide
  • +
  • What are the available Tuscany extensions and how to use them? This includes bindings, impelementation types, interface types, policies, databindings.
    +Extension Guide
  • +
  • Available development and management tools for Tuscany
    +SCA Java Tools Guides
  • +
+
+ + +
Tuscany SCA Extension Development Guides
+

Although Tuscany provides many extensions, you might be interested to add an extension that is not available today. This guide helps you understand how to develop extensions such
+as new bindings, implementation types, interfaces, policies, etc.

+ +

You are welcome to contribute these new extensions to Tuscany and make them available to others in the community.

+ + +
+ +
Tuscany SCA Java Development Guides
+

These guides help you learn more about Tuscany architecture and how to get involved in the
+development of Tuscnay. We look forward to your help.

+ +
+
+

Java SCA Documentation

+ +

Documentation is a bit light at the moment

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/delete-old-sca-developer-guide.data/component.png b/site/trunk/site-publish/delete-old-sca-developer-guide.data/component.png new file mode 100644 index 0000000000..72b9d1b4d2 Binary files /dev/null and b/site/trunk/site-publish/delete-old-sca-developer-guide.data/component.png differ diff --git a/site/trunk/site-publish/delete-old-sca-developer-guide.data/component.png.jpeg b/site/trunk/site-publish/delete-old-sca-developer-guide.data/component.png.jpeg new file mode 100644 index 0000000000..6ab7db30aa Binary files /dev/null and b/site/trunk/site-publish/delete-old-sca-developer-guide.data/component.png.jpeg differ diff --git a/site/trunk/site-publish/delete-old-sca-developer-guide.data/component.svg b/site/trunk/site-publish/delete-old-sca-developer-guide.data/component.svg new file mode 100644 index 0000000000..4de33edb54 --- /dev/null +++ b/site/trunk/site-publish/delete-old-sca-developer-guide.data/component.svg @@ -0,0 +1,160 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + Properties + Services + References + Implementation + Intents + + diff --git a/site/trunk/site-publish/delete-old-sca-developer-guide.html b/site/trunk/site-publish/delete-old-sca-developer-guide.html new file mode 100644 index 0000000000..4bbe950b55 --- /dev/null +++ b/site/trunk/site-publish/delete-old-sca-developer-guide.html @@ -0,0 +1,164 @@ + + + + + + + DELETE- (OLD) SCA Developer Guide : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > SCA Java Documentation > DELETE- (OLD) SCA Developer Guide + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+
General
+ + + + + +
+ +

There's nothing to it. Really. Seriously, one of the main goals of Tuscany and SCA is to avoid imposing rules and requirements on how people write applications. We want to let people write application code the way they want without being concerned about the environment in which it will be used. After all, writing code to handle plumbing just gets in the way of writing the interesting stuff. So basically, you write the code for interesting bits, and Tuscany provides the environment that lets it run.

+ +

As a result of that, this guide does not actually contain a lot of gory details on how to write an application for SCA. What it does contain is a description of the information that Tuscany uses to figure out how to run your code, the things that it can handle, and the things that it can't. As part of that it provides guidelines and best practices that you can use to make your code easier for others to use or that allow it to run in more places. This guide also describes the different environments that Tuscany supports (such as command line clients or web applications) and how to package up applications to run in them.

+ +

Components

+ +

The basic building block for SCA is a component. When you're writing code for SCA, you are typically writing code that will either be the implementation of a component or will be used by such an implementation.

+ +

An SCA component follows the Inversion of Control design pattern with Tuscany providing the controlling framework. A typical component can be illustrated as:
+


+where

+
    +
  • Services describe the function this type of component provides
  • +
  • References are dependencies this type of component has in order to function
  • +
  • Properties define configuration parameters for this type of component
  • +
  • Intents describe assumptions this type of component has on how it will be used
  • +
  • and Implementation is some code that actually does the work (i.e. what a developer writes)
  • +
+ + +

Although the Tuscany runtime is written in Java, the implementation of a component can be in other languages some of which may be more suitable to the form of implementation than Java code (for example, BPEL for business processes or XSL-T for transformations). How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type; Tuscany provides several including:

+ +
    +
  • Java for POJO style components
  • +
  • JUnit for integration testing of SCA components
  • +
  • Spring for integrating Spring components
  • +
  • JavaScript for components written in JavaScript
  • +
+ + +

Please see each sub-section for detailed information on implementing components in any of these languages.

+ +

Composites

+

Individual components like those above can be used on their own, or they can be grouped together to form composite components. A composite is a type of component whose implementation is not code but an aggregation of other components co-operating to provide Services as a whole. A composite provides Services, has References to other dependencies, and can be configured using Properties in just the same way as individual components can.

+ +

The typical implementation of a composite is described using XML defined by the SCA Assembly Specification (known as SCA Component Definition Language or SCDL). For information on how this is used in Tuscany, please see:

+ + + +

>> Comment: Is this a good place to talk about wires? We talk about wires in the next section for the first time and it is out of context

+ +

Domain Assemblies

+ +

The implementations of components above, either individual or composite, all form reusable units that can be run multiple times in different environments (in much the same way as you have multiple instances of a Java class). A component becomes instantiated when it is actually used in an SCA environment. This is done by using it as part of the assembly of an SCA Domain.

+ +

SCA Domains can vary in size from the very small to the very large:

+
    +
  • a very small domain could be one within a test environment inside an IDE
  • +
  • a medium sized domain could be a single server or small cluster supporting a single application
  • +
  • a large domain could describe all the services within a department or company
  • +
+ + +

A domain is self-defining - it is what it is. It is really just a coherent grouping of components that are working together, connected to each other using SCA wiring. In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services but during development the goal is to make that Someone Else's Problem as all that baggage really just gets in the way of writing code.

+ +

Making it Someone Else's Problem though does mean that at some point you need to hand them the implementations that you have been developing. This generally goes better if the code being handed over has been well tested and packaged up nicely (sometimes with a bow on it). Tuscany provides some build-time tools to help with this:

+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/delete-overview.html b/site/trunk/site-publish/delete-overview.html new file mode 100644 index 0000000000..198a715af2 --- /dev/null +++ b/site/trunk/site-publish/delete-overview.html @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + Apache Tuscany : Delete-Overview + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > Delete-Overview + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Java SCA Project

+ +

The Java SCA project provides infrastructure for creating service-based systems.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/delete-sca-java-documentation-delete.html b/site/trunk/site-publish/delete-sca-java-documentation-delete.html new file mode 100644 index 0000000000..99549d2a3e --- /dev/null +++ b/site/trunk/site-publish/delete-sca-java-documentation-delete.html @@ -0,0 +1,121 @@ + + + + + + + DELETE- SCA Java Documentation DELETE : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java Subproject > DELETE- SCA Java Documentation DELETE + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + +

Thanks for your interest in Apache Tuscany Java SCA.

+ +

If you are just getting started and are interested to learn about SCA

+
    +
  • User Guide
    +This introduces you to SCA concepts and shows you how to build simple sample applications.
  • +
+ + +

If you would like to contribute to the project itself, we have a

+
    +
  • Developer Guide
    +This explains how to build Tuscany from the latest source code and also how to contribute code back to the project.
  • +
+ + + + + + + +
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/delete-this-page-old-introduction-page.html b/site/trunk/site-publish/delete-this-page-old-introduction-page.html new file mode 100644 index 0000000000..8f56a6bab5 --- /dev/null +++ b/site/trunk/site-publish/delete-this-page-old-introduction-page.html @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + delete this page (old introduction page) : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > delete this page (old introduction page) + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ +

delete this page

+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + diff --git a/site/trunk/site-publish/delete-this-page-using-sdo-java.html b/site/trunk/site-publish/delete-this-page-using-sdo-java.html new file mode 100644 index 0000000000..97e4cfda70 --- /dev/null +++ b/site/trunk/site-publish/delete-this-page-using-sdo-java.html @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + Apache Tuscany : Delete This Page - Using SDO Java + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SDO Overview > SDO Java > Delete This Page - Using SDO Java + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Getting Started with using SDO Java

+

[Note: Content of this page is moved to user guide]

+ +

As an SDO user, you have (at least) three ways of establishing a Tuscany SDO runtime environment on your machine. In decreasing order of likelihood, you can either

+
    +
  • download a binary distribution of a Tuscany Java SDO milestone release, and follow the instructions in the release archive
  • +
  • Or you can download a Tuscany source distribution, and follow the instruction in the release archive to recreate the corresponding binary release
  • +
  • or you can build from the svn repository source code, giving you the flexibility to base your runtime on the most recent code, or a particular level of your choice.
  • +
+ + +

If you are going to take either of the latter two approaches you will need to establish a development environment.

+ +

For examples of how to use SDO, you can look at the documents or at the samples. If you have downloaded the source distribution, the sample code will be part of that distribution. If however you have downloaded a binary distribution, you'll need to go and download the sample source code as a separate archive.

+ +

Other sources of inspiration might come from the use of SDO within the Tuscany DAS and SCA code. When you come across issues, please look at and/or post to the Tuscany mailing lists.

+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/delete-this-page.html b/site/trunk/site-publish/delete-this-page.html new file mode 100644 index 0000000000..fea8cb2582 --- /dev/null +++ b/site/trunk/site-publish/delete-this-page.html @@ -0,0 +1,119 @@ + + + + + + + + delete this page + + + + + + + +
+  Apache Tuscany > Home > Java SCA > Java SCA Menu > Documentation > Java SCA Documentation Menu > SCA Java User Guide > delete this page + +
+ + + + + + +
+
+ +
+ +
+ Added by Shelita Overton, last edited by Shelita Overton on Mar 21, 2007 +  (view change) + +
+ +
+
+

delete this page

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/delete-tuscany-sca-databinding-faq.html b/site/trunk/site-publish/delete-tuscany-sca-databinding-faq.html new file mode 100644 index 0000000000..35209d395b --- /dev/null +++ b/site/trunk/site-publish/delete-tuscany-sca-databinding-faq.html @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + Apache Tuscany : Delete - Tuscany SCA - DataBinding - FAQ + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Tuscany SCA Java - FAQ > Delete - Tuscany SCA - DataBinding - FAQ + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

SCA DataBinding FAQs

+ +
    +
  1. What is he difference between Logical Type and Physical Type? From the comments in DataType.java, logical type is used by the assembly, physical type is used by the runtime, and for Tuscany Java the physical type is always a Java Type
    + The logical type represents the data type the user thinks is flowing across a wire. This could be a Java type, a XML type, a CORBA type, whatever depending on the /logical/ service contract defined in the assembly.
    + The physical type is the actual representation of that type that is flowed by the runtime. In the Java runtime this will always be a Java type (i.e. some subclass of Object). In some cases it will be the same as the logical type - e.g. when a Java component calls another Java component over a local wire using a Java interface then both logical and physical types will be the same. In many cases though they will be different - for example, if the service contract was WSDL then the logical type would be the XML type used by the WSDL.
    + Within the runtime the same logical type may have different physical forms. For example, the same XML document could be represented physically as a DOM, a StAX stream, an SDO, a JAXB object, or an AXIOM stream. The framework supports conversion between these different physical forms.
  2. +
  3. What is the role of a data mediator interceptor? Can you cite an example of how mediation works say for a component A with reference R that references a service S in component B.?
    + The interceptor gets added by the connector. A's outbound wire and B's inbound wire describe the datatypes their implementations can support. When the wire ends are connected the connector adds the interceptor if mediation is needed.
    + One job of a transport binding is to convert an in-memory physical representation to a suitable set of bits on the network (aka serialization and deserialization). Rather than reinvent the different transports we reuse existing implementations such as Axis2 or RMI. As such we need to convert the physical representation on our internal wire with that used by the transport. So, for example, Axis2 only understands AXIOM so in a reference we need to convert the user's physical representation to AXIOM and in a service we need to convert the AXIOM generated by the transport into the form the user's implementation requires. The steps could be described as follows: +
      +
    1. A calls reference R with physical Java object X(java)
    2. +
    3. X is placed on R's outbound wire
    4. +
    5. data mediation converts X(java) to AXIOM object X(axiom)
    6. +
    7. X(axiom) is placed on inbound wire for the Axis2 binding
    8. +
    9. Axis2 binding serializes X(axiom) onto the network as XML
    10. +
    11. Axis2 binding on the target deserializes the XML from the network to X(axiom)
    12. +
    13. X(axiom) is placed on the outbound wire from the Axis2 binding
    14. +
    15. data mediation converts X(axiom) to X(java) as needed by the target component
    16. +
    17. X(java) is placed on B's inbound wire
    18. +
    19. the target instance for B is invoked passing in X(java)
      +. An important thing to note here is that from the fabric's perspective we are dealing with two physical wires: the wire on the client connecting the source component A to the outbound Axis2 transport and the wire on the server connecting the inbound Axis2 transport to the target component B.
      +From a global perspective there is one logical wire from A to B but because A and B are located on two different runtimes that logical wire gets split into two physical wires A->net and net->B.
    20. +
    +
  4. +
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/deploying-to-server-runtime.html b/site/trunk/site-publish/deploying-to-server-runtime.html new file mode 100644 index 0000000000..48482d6592 --- /dev/null +++ b/site/trunk/site-publish/deploying-to-server-runtime.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Deploying to server runtime + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Deploying to server runtime + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/deployment.data/Artifact Resolver.gif b/site/trunk/site-publish/deployment.data/Artifact Resolver.gif new file mode 100644 index 0000000000..61ce76471e Binary files /dev/null and b/site/trunk/site-publish/deployment.data/Artifact Resolver.gif differ diff --git a/site/trunk/site-publish/deployment.data/Artifact Resolver.gif.jpeg b/site/trunk/site-publish/deployment.data/Artifact Resolver.gif.jpeg new file mode 100644 index 0000000000..942d8795fc Binary files /dev/null and b/site/trunk/site-publish/deployment.data/Artifact Resolver.gif.jpeg differ diff --git a/site/trunk/site-publish/deployment.data/Contribution Diagram.GIF b/site/trunk/site-publish/deployment.data/Contribution Diagram.GIF new file mode 100644 index 0000000000..78eaf36891 Binary files /dev/null and b/site/trunk/site-publish/deployment.data/Contribution Diagram.GIF differ diff --git a/site/trunk/site-publish/deployment.data/Contribution Diagram.GIF.jpeg b/site/trunk/site-publish/deployment.data/Contribution Diagram.GIF.jpeg new file mode 100644 index 0000000000..083363a289 Binary files /dev/null and b/site/trunk/site-publish/deployment.data/Contribution Diagram.GIF.jpeg differ diff --git a/site/trunk/site-publish/deployment.data/Contribution Processors.gif b/site/trunk/site-publish/deployment.data/Contribution Processors.gif new file mode 100644 index 0000000000..f06307f2ad Binary files /dev/null and b/site/trunk/site-publish/deployment.data/Contribution Processors.gif differ diff --git a/site/trunk/site-publish/deployment.data/Contribution Processors.gif.jpeg b/site/trunk/site-publish/deployment.data/Contribution Processors.gif.jpeg new file mode 100644 index 0000000000..c01b8d5c74 Binary files /dev/null and b/site/trunk/site-publish/deployment.data/Contribution Processors.gif.jpeg differ diff --git a/site/trunk/site-publish/deployment.data/Contribution Services.gif b/site/trunk/site-publish/deployment.data/Contribution Services.gif new file mode 100644 index 0000000000..aa8e5b6fd2 Binary files /dev/null and b/site/trunk/site-publish/deployment.data/Contribution Services.gif differ diff --git a/site/trunk/site-publish/deployment.data/Contribution Services.gif.jpeg b/site/trunk/site-publish/deployment.data/Contribution Services.gif.jpeg new file mode 100644 index 0000000000..f87c460f22 Binary files /dev/null and b/site/trunk/site-publish/deployment.data/Contribution Services.gif.jpeg differ diff --git a/site/trunk/site-publish/deployment.data/Tuscany_deployment.doc b/site/trunk/site-publish/deployment.data/Tuscany_deployment.doc new file mode 100644 index 0000000000..6b11c9918a Binary files /dev/null and b/site/trunk/site-publish/deployment.data/Tuscany_deployment.doc differ diff --git a/site/trunk/site-publish/deployment.data/tuscany_contribution_service.jpg b/site/trunk/site-publish/deployment.data/tuscany_contribution_service.jpg new file mode 100644 index 0000000000..9a58f8fd84 Binary files /dev/null and b/site/trunk/site-publish/deployment.data/tuscany_contribution_service.jpg differ diff --git a/site/trunk/site-publish/deployment.data/tuscany_contribution_service.jpg.jpeg b/site/trunk/site-publish/deployment.data/tuscany_contribution_service.jpg.jpeg new file mode 100644 index 0000000000..3d003e1391 Binary files /dev/null and b/site/trunk/site-publish/deployment.data/tuscany_contribution_service.jpg.jpeg differ diff --git a/site/trunk/site-publish/deployment.html b/site/trunk/site-publish/deployment.html new file mode 100644 index 0000000000..418cd9d8c6 --- /dev/null +++ b/site/trunk/site-publish/deployment.html @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + Apache Tuscany : Deployment + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Deployment + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

1) Add a contribution to the SCA domain

+ +

The contribution process is about adding Types to the domain (composites, classes, XSD  complexTypes, etc).

+ +

1. An SCA application is developed and packaged as a jar or another archive format

+ +

2. The ContributionService is requested to add this jar as a contribution to the SCA domain. In effect, the SCA domain has a store to keep all the contributions.  The ContributionService is an API that allows users to put contributions in the store. The contributions are identified by the URI. 3. Registered ContributionProcessor's will be selected based on the contentType of the contribution. The ContributionProcessor is responsible to introspect the contribution which is a collection of artifacts. It may enlist other services to help, e.g the annotation processors for Java classes.We'd support a few well-known types in the core, primarily the ones used by the runtime like "jar" and "java class". Others could be contributed as extensions, e.g "rpm"

+
Introspection of a contribution
In general the result of that introspection would be invariant so it can be cached and replicated in many places. Introspection will be intensive and so we should do it as little as possible and caching the results is good. Of course, we'd need invalidation too. + +

The caching is about storing the introspection results for "production" artifacts that are basically versioned and immutable. This is similar in concept to the way Maven caches artifacts locally and never needs to go back to an online repo once they have been downloaded. Given some introspections are likely to be expensive (e.g. scanning an EAR to look for EJBs and then processsing the class files for annotations) it would be good to avoid redoing that when its not necessary.

+ +

3. The ContributionProcessor introspects the contribution to create a list of artifacts of interest for SCA. Each artifact is classified by ContentTypes.

+ +

4. The artifacts are parsed by the content type.  we provide parsers for SCDL (StAXElementLoader) and we can reuse existing parsers for XSD and WSDL (XmlSchema, wsdl4j, woden). So the WSDL introspector would parse the document using, say, wsdl4j and then store the interesting things that it finds.

+ +

5. The interesting definitions are added to the contribution store and that is the end of the contribution operation. We keep the contribution and cache the introspection results.

+ +

The following diagram is created to illustrate the key players that interacts with the ContributionService.

+ +

+ +
We could merge the ContributionProcessor and ArtifactProcessor concepts into one. If so, the processor for the jar will be called first, it scans the files in the jar and delegate the processors which can handle the content types, for example, WSDLProcessor to load WSDLs, XSDProcessor to load XSDs, JavaAnnotationProcessor to introspect java classes and SCDL loaders to load SCDL files.
+ + +

Contribution Services Implementation

+ +

The contribution services is available in multiple modules at java/sca/runtime/services

+ +

Contribution Modules

+ +

+
Note that the Contribution Services Implementation have dependencies on the Kernel SPI
+ -> LooaderRegistry
+ -> SCA Model objects + +

The Kernel will have dependency on Contribution-Framework once things get integrated

+ +

The ContributionService interface

+
+
+
+/**
+ * Service interface that manages artifacts contributed to a Tuscany runtime.
+ *
+ * @version $Rev: 523009 $ $Date: 2007-03-27 10:38:24 -0700 (Tue, 27 Mar 2007) $
+ */
+public interface ContributionService {
+    /**
+     * Contribute an artifact to the SCA Domain. The type of the contribution is
+     * determined by the Content-Type of the resource or, if that is undefined,
+     * by some implementation-specific means (such as mapping an extension in
+     * the URL's path).
+     * 
+     * @param contributionURI The URI that is used as the contribution unique ID. 
+     * @param sourceURL the location of the resource containing the artifact
+     * @param storeInRepository flag that identifies if you want to copy the
+     *            contribution to the repository
+     * @throws DeploymentException if there was a problem with the contribution
+     * @throws IOException if there was a problem reading the resource
+     */
+    void contribute(URI contributionURI, URL sourceURL, boolean storeInRepository) throws ContributionException,
+        IOException;
+
+    /**
+     * Contribute an artifact to the SCA Domain.
+     * 
+     * @param contributionURI The URI that is used as the contribution unique ID.
+     * @param contributionContent a stream containing the resource being
+     *            contributed; the stream will not be closed but the read
+     *            position after the call is undefined
+     * @throws DeploymentException if there was a problem with the contribution
+     * @throws IOException if there was a problem reading the stream
+     */
+    void contribute(URI contributionURI, InputStream contributionContent)
+        throws ContributionException, IOException;
+
+    /**
+     * Get the model for an installed contribution
+     * 
+     * @param contribution The URI of an installed contribution
+     * @return The model for the contribution or null if there is no such
+     *         contribution
+     */
+    Contribution getContribution(URI contribution);
+
+    /**
+     * Adds or updates a deployment composite using a supplied composite
+     * ("composite by value" - a data structure, not an existing resource in the
+     * domain) to the contribution identified by a supplied contribution URI.
+     * The added or updated deployment composite is given a relative URI that
+     * matches the "name" attribute of the composite, with a ".composite"
+     * suffix.
+     */
+    void addDeploymentComposite(URI contribution, Object composite);
+
+    /**
+     * Remove a contribution from the SCA domain
+     * 
+     * @param contribution The URI of the contribution
+     * @throws DeploymentException
+     */
+    void remove(URI contribution) throws ContributionException;
+
+    /**
+     * Resolve an artifact by QName within the contribution
+     * 
+     * @param <T> The java type of the artifact such as javax.wsdl.Definition
+     * @param contribution The URI of the contribution
+     * @param definitionType The java type of the artifact
+     * @param namespace The namespace of the artifact
+     * @param name The name of the artifact
+     * @return The resolved artifact
+     */
+    <T> T resolve(URI contribution, Class<T> definitionType, String namespace, String name);
+
+    /**
+     * Resolve the reference to an artifact by the location URI within the given
+     * contribution. Some typical use cases are:
+     * <ul>
+     * <li>Reference a XML schema using
+     * {http://www.w3.org/2001/XMLSchema-instance}schemaLocation or
+     * <li>Reference a list of WSDLs using
+     * {http://www.w3.org/2004/08/wsdl-instance}wsdlLocation
+     * </ul>
+     * 
+     * @param contribution The URI of the contribution
+     * @param namespace The namespace of the artifact. This is for validation
+     *            purpose. If the namespace is null, then no check will be
+     *            performed.
+     * @param uri The location URI
+     * @param baseURI The URI of the base artifact where the reference is
+     *            declared
+     * @return The URL of the resolved artifact
+     */
+    URL resolve(URI contribution, String namespace, URI uri, URI baseURI);
+}
+
+
+ +

Contribution Services UML Diagrams

+ +

Contribution Services

+ +

+ +

Contribution Processors

+ +

+ +

Artifact Resolver

+ +

+ + +

2) Apply Changes to the Assembly

+ +

The assembly is about creating/modifying/ removing instances of things (primarily components).

+ +

1. User calls "addToDomainComosite" or "applyChanges" aginst the AssemblyService. There is a changeSet which represents an atomic modification to the domain, for example, adding an "include" to the domain composite.

+ +

2. The assembly service applies this to the current logical assembly creating a new revision of the assembly.

+ +

3. The action in the changeSet will need to be expanded out, e.g.

+
    +
  • The <include> will need to be resolved to a composite. 
  • +
  • The content of the composite will need to be examined and result in new components being defined
  • +
  • Those components will have implementations that need to be run and requirements on where and so forth
  • +
+ + +

There is a resolution phase that is used to build a fully configured logical model where references (things like composite names, class names, etc) are resolved this is done using the contribution service to retrieve the target artifacts for the references. It calls back the contribution service to resolve the cross-references probably via a different api but it is going to the store.So now we have a fully resolved logical configuration model. Errors may be reported during the resolve phase such as:

+
    +
  • No such composite
  • +
  • No such service
  • +
  • WSDL portType cannot be resolved
  • +
+ + +

But we also run a logical validation on the resulting model, e.g. checking that if wires connect.

+ +

4. Convert the new logical model to a set of physical models which involves allocating pieces of the model to physical runtimes so that they can be consumed by the runtime to activate the components. This is done by creating physical changeSets for each runtime.

+ +

5. The physical models are propagated to the given runtime by some means (via the FederatedDeployer suppor that Meeraj's working on)

+
Physical models for the runtime
The changeSet for the physical runtime is meant to be very precise and the builder's role is to turn that into runnable code. So it's not SCDL stuff but much lower level. The idea is to keep the builder very simple (and hence quite testable) that means there is a bit more work in the conversion from logical to physical, bascially a "portable" builder.
+The conversion will use the introspection results from the store to generate the builder configuration, for example, suppose introspection discovers a component has an @Init method, we store that in the introspection result. The ContributionProcessor might load the java classes to introspect the annotations. (It may not actually load the class using a class loader since it could parse bytecode e.g. with ASM). But the result is an extended implemenation description. We need a langauge neutral form for that so ideally it can be used on both a Java and Native platform. It's something that goes beyond the componentType and it's the PojoComponentType type of thing, but more. + +

The idea of "portable builders" is about separating the node  responsible for domain assembly from the nodes running component  implementations. In a heterogeneous federation, it could be the  assembly node(s) are running C++ but the user wants to add a Java  component that will actually run on a Java node. If the introspection  results for the Java contribution are portable, it would be possible  for the C++ to set up the physical configuration for the Java  builder; alternatively, it could delegate that to a service running  in a native Java environment. Similarly, if the component was in some  portable language (like Ruby or XSLT), then the configuration could  be done on a Java node and passed to a C++ runtime node.

+

6. The next steps is the build/connect/run.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/design-discussions.html b/site/trunk/site-publish/design-discussions.html new file mode 100644 index 0000000000..361e89479c --- /dev/null +++ b/site/trunk/site-publish/design-discussions.html @@ -0,0 +1,80 @@ + + + + + + + Design Discussions : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Menus > Subproject Menus > DAS Java Subproject Menu > Design Discussions + + User List | Dev List | Issue Tracker   +
+ + + + + +
+ +
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/developing-sdo-java.html b/site/trunk/site-publish/developing-sdo-java.html new file mode 100644 index 0000000000..6a768c89dd --- /dev/null +++ b/site/trunk/site-publish/developing-sdo-java.html @@ -0,0 +1,282 @@ + + + + + + + + + + + + + + + Apache Tuscany : Developing SDO Java + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SDO Overview > SDO Java > Developing SDO Java + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +
How to get involved in development of Java SDO?
+ +

General Guide
+

+ +

Welcome to the Tuscany SDO Java subproject. We look forward to your participation and try to help you get on board. Feel free to ask your questions on the mailing list.

+ +

Here are some general guidelines we use in this project.

+
    +
  • Java SDO sub-project aims to provide uniform access to data from heterogeneous sources which could be XML, RDB, POJO, SOAP, etc.
  • +
  • Tuscany Java SDO is not just a reference implementation. We encourage innovation based on the tenets of SDO. A lot of work we do provides feedback to the specifications.
  • +
  • SDO provides both a static (or strongly typed) programming model and a dynamic (or loosely typed) programming model. This provides a simple programming model without sacrificing the dynamic model needed by tools and frameworks.
  • +
  • It supports a disconnected model and provides Meta-data for easy introspection of data types.
  • +
+ + +

Getting Source code and Setting Development Environment
+

+ + +

The Java SDO project Subversion repository is located at https://svn.apache.org/repos/asf/incubator/tuscany/java/sdo.
+The repository can also be viewed online at http://svn.apache.org/viewvc/incubator/tuscany/java/

+ +

Anyone can check code out of Subversion. You only need to specify a username and password in order to update the Subversion repository, and only Tuscany committers have the permissions to do so.

+ +

Checking out code from Subversion

+ +

Use the command as follows (note that it uses http scheme so if you're a committer change it to https):

+
+
+svn checkout http://svn.apache.org/repos/asf/incubator/tuscany/java/sdo
+
+
+ +

Committing Changes to Subversion

+ +

Any Tuscany committer should have a shell account on svn.apache.org. Before you can commit, you'll need to set a Subversion password for yourself. To do that, log in to svn.apache.org and run the command svnpasswd.

+ +

Once your password is set, you can use a command like this to commit:

+
+
+svn commit
+
+
+

If Subversion can't figure out your username, you can tell it explicitly:

+
+
+svn --username <name> commit
+
+
+

Subversion will prompt you for a password, and once you've entered it, it will remember it for you. Note this is the password you configured with svnpasswd not your shell or other password.

+ +

For more details check Getting Source. Also for setup details check Establishing a Development Environment. Reference the code structure at SDO Project Code Structure.

+ +

Coding Guidelines
+

+ +

There are a few simple guidelines when developing for JAVA SDO:

+
    +
  • The basic coding style used is described at Sun Java coding standards but the main thing is to be consistent with the existing code you're updating, so for example, if you're updating a method that uses the braces on the same line style don't add code with the hanging braces style.
  • +
+ + +
    +
  • Always include the Apache License Headers on all files (both source code files and resource files such as xml documents)
  • +
+ + +
    +
  • Include a descriptive log message for check-ins, for example "fixed such and such problem".
  • +
+ + +

Naming conventions to increase consistency

+ +

Folder Names: Please use all lowercases and dashes in folder names (like in the jar names)

+
    +
  • Maven artifact id = tuscany-<folder name>
  • +
+ + +

Package names: Package names within modules should include the module name so that source code can be located in the source tree easily.

+ +

Testing
+

+ +

Tuscany uses plain junit test cases to perform unit and integration testing. You can check Test Cases for some examples.

+ +

Note that we use surefire maven plugin to run the unit and integration tests, and in most cases, they are configured to match a **/*TestCase.java file name pattern. Because of this, if your test case has a different file name pattern, you might execute it from your IDE of choice, but the maven build won't execute the test.

+ +

Maven Build Structure
+

+ +

We use the term Module to refer to the leaf of maven tree.

+
    +
  • All poms will use the pom from the parent folder as parent pom
  • +
  • Group id: org.apache.tuscany.sdo
  • +
  • Version of our modules will be specified once in java/sdo/pom.xml, child poms don't need to specify a version as they get it from their parent
  • +
  • pom names begin Apache Tuscany SDO
  • +
  • Eclipse projects are generated for all built modules using mvn -Peclipse eclipse:eclipse
  • +
+ + +

Reporting issues and providing patches
+

+ +

You are very welcome to help us develop Tuscany SDO Java. You may have ideas that you want to pursue yourself or you may wish to pitch in with the design, coding and documentation. If it's the first of these two then please put forward your suggestions on the development mailing list. If it's the latter, then feel free to ask on the mailing list or browse the issue tracking.

+ +

Reporting an Issue or Asking For New Features

+ +

Please use ApacheJIRA system to report bugs or request new features. First time users need to create a login.

+ +

Search the existing JIRAs to see if what you want to create is already there. If not, create a new one. Make sure JIRAs are categorized correctly using JIRA categories and are created under the correct component area. Please include as much information as possible in your JIRA to help resolve the issue quicker. This can include version of the software used, platforms running on, steps to reproduce, test case, details of your requirement or even a patch if you have one.

+ +

Submitting a Patch

+ +

Please follow the steps below to create a patch. It will be reviewed and committed by a committer in the project.

+ +
    +
  • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
  • +
  • Confirm that the problem is fixed and include a test case where possible to help the person who is applying the patch to verify the fix.
  • +
  • Generate the patch using svn diff File > patchfile
  • +
  • Try to give your patch files meaningful names, including the JIRA number
  • +
  • Add your patch file as an attachment to the associated JIRA issue +
      +
    • Clicking on the 'Patch Available' box in the screen where the patch is being submitted will help identify available patches quicker.
    • +
    +
  • +
+ + +

How do I get my JIRAs into a release?

+

You can always propose a release and drive the release with the content that you want. Another way to get a JIRA into a release is by providing a patch or working with other community members (volunteers) to help you get the problem fixed. You can also help by providing test cases.

+ +

Each release is managed by a release manager. Make sure that the Release Manager is aware of why a fix to a JIRA is important to your business. In general, the best attempt is made to include as many JIRAs as possible depending on the level of community help. The voting mechanism in the JIRA system can be used to raise the importance of a JIRA to the attention of the release manager. Adding comments in the JIRA would help the release manager understand why a JIRA is important to include in a given release.

+ +

How is a release done?

+

Anyone can volunteer to be a release manager and drive a release. Based on Apache guidelines, a release requires at least three PMC +1 votes and more +1s than -1s. A release can not be vetoed so a -1 does not block a release. The steps for how to create a Tuscany release are documented here

+

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/developing-using-tuscany-sca-best-practices.html b/site/trunk/site-publish/developing-using-tuscany-sca-best-practices.html new file mode 100644 index 0000000000..c5bc80585d --- /dev/null +++ b/site/trunk/site-publish/developing-using-tuscany-sca-best-practices.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + Apache Tuscany : Developing using Tuscany SCA - Best Practices + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Documentation Menu > Developing using Tuscany SCA - Best Practices + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

After writing the Alert Aggregator sample for the Tuscany Native runtime I thought it would be worthwhile documenting my experiences. I've titled this "Best Practices" but perhaps "Hints & Tips" or "Andy's Observations" would be more appropriate! Anyway, below is a suggested list of things to do/think about when writing your own SCA based applications. A few of the points below are from general software development, but they apply equally to SCA development.

+ +

Start by drawing your SCA diagram (example here) - this helps with the componentization of your app. SCA diagrams aren't code path diagrams (such as a BPEL visualization): they simply show what blocks of function you have and which blocks are used by other blocks. Separating components into composites also helps you think about componentization and deployment, as (currently) the smallest deployable block is a composite. Similarly, an SCA diagram is not a class diagram - the smallest SCA unit is the component which could consist of multiple classes or scripts or similar. You may have a requirement for a "Utilities" class providing some basic function that is used by lots of other classes - SCA wires involve a certain amount of overhead, so it may not be worth creating a "Utilities" component that all other components reference. Instead, it can be valid to have multiple instances of the same class embedded as part of multiple components.

+ +

Think about the services and references that your components and composites provide/require, so you can draw the wiring on the diagram and work out which components and composites you need, but don't worry too much about bindings (REST, WS, etc) - SCA/Tuscany makes it so easy to switch bindings that this can be decided at a later time.

+ +

I didn't worry too much about interfaces at this point - I planned to do most of my components in scripting languages (which don't need defined interfaces in Tuscany Native). In other languages (Java, C++) it may be worth defining the public interfaces that your component implements, so you can see how and where functions are implemented within your composites.

+ +

When coding the component implementations, it's easiest to start with the 'least-dependent' components - those that don't need lots of other infrastructure or other components or composites in place. For the Alert Aggregator sample (see here), my order of component development was as follows:
+RSSChecker
+AlertConfig
+AlertChecker
+HTMLFormatter
+POPChecker
+Of course, as in normal software development, this was an iterative process where each component got revisited as necessary.

+ +

Component implementations were developed in a standard test-driven manner, but deploying within an SCA runtime adds extra layers of required testing (think unit vs. system tests). I began by testing my component implementations in a standalone, unit-testing-style fashion, then tested under Tuscany via local clients, then via remote clients using whichever service bindings I had chosen and finally via full system tests (in the Alert Aggregator case, through clicking on a web page). The power of SCA meant that I could use the same client code for both local and remote testing , just by adding in a local SCA reference that called the remote service (see the PythonCalculator sample for an example of this - the sample.calculator.client/client.py code is almost exactly the same as the sample.calculator.wsclient/client.py code).

+ +

I found I needed to programme somewhat defensively - Tuscany SCA Native (or at least the extensions I used) is not yet particularly good at handling exceptions or errors that get thrown, but not caught, in component code. Instead, I tried to check for bad data and catch exception cases within the component implementation. The handling of errors is something that definately needs more work in Tuscany SCA Native - should errors get propagated back to the original client, or should they be caught and logged? A problem that exacerbates this issue is that some of our logging messages don't provide much (or any!) useful information!

+ +

The XML story with Tuscany SCA Native is pretty good - I found using SDO/XML/Python ElementTree objects easy and very useful. I would probably go as far as suggesting that developers use XML complex types and SDO rather than trying to flow multiple method parameters, as this can mean less changes required in code and interfaces throughout the development cycle.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/discovery.html b/site/trunk/site-publish/discovery.html new file mode 100644 index 0000000000..9771e3d84f --- /dev/null +++ b/site/trunk/site-publish/discovery.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Discovery + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > Discovery + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Discovery

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/distributed-runtime.data/distribution1.png b/site/trunk/site-publish/distributed-runtime.data/distribution1.png new file mode 100644 index 0000000000..4de2314697 Binary files /dev/null and b/site/trunk/site-publish/distributed-runtime.data/distribution1.png differ diff --git a/site/trunk/site-publish/distributed-runtime.data/distribution1.png.jpeg b/site/trunk/site-publish/distributed-runtime.data/distribution1.png.jpeg new file mode 100644 index 0000000000..6c8f18066f Binary files /dev/null and b/site/trunk/site-publish/distributed-runtime.data/distribution1.png.jpeg differ diff --git a/site/trunk/site-publish/distributed-runtime.data/distribution3.png b/site/trunk/site-publish/distributed-runtime.data/distribution3.png new file mode 100644 index 0000000000..3134bc52ac Binary files /dev/null and b/site/trunk/site-publish/distributed-runtime.data/distribution3.png differ diff --git a/site/trunk/site-publish/distributed-runtime.data/distribution3.png.jpeg b/site/trunk/site-publish/distributed-runtime.data/distribution3.png.jpeg new file mode 100644 index 0000000000..156056028f Binary files /dev/null and b/site/trunk/site-publish/distributed-runtime.data/distribution3.png.jpeg differ diff --git a/site/trunk/site-publish/distributed-runtime.data/distribution4.png b/site/trunk/site-publish/distributed-runtime.data/distribution4.png new file mode 100644 index 0000000000..619f4e28ee Binary files /dev/null and b/site/trunk/site-publish/distributed-runtime.data/distribution4.png differ diff --git a/site/trunk/site-publish/distributed-runtime.data/distribution4.png.jpeg b/site/trunk/site-publish/distributed-runtime.data/distribution4.png.jpeg new file mode 100644 index 0000000000..03a1d14cac Binary files /dev/null and b/site/trunk/site-publish/distributed-runtime.data/distribution4.png.jpeg differ diff --git a/site/trunk/site-publish/distributed-runtime.html b/site/trunk/site-publish/distributed-runtime.html new file mode 100644 index 0000000000..d3fced09e4 --- /dev/null +++ b/site/trunk/site-publish/distributed-runtime.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Distributed Runtime + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Distributed Runtime + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ + +
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/distributed-sca-domain.data/calculator-distributed.png b/site/trunk/site-publish/distributed-sca-domain.data/calculator-distributed.png new file mode 100644 index 0000000000..44edc197da Binary files /dev/null and b/site/trunk/site-publish/distributed-sca-domain.data/calculator-distributed.png differ diff --git a/site/trunk/site-publish/distributed-sca-domain.data/calculator-distributed.png.jpeg b/site/trunk/site-publish/distributed-sca-domain.data/calculator-distributed.png.jpeg new file mode 100644 index 0000000000..8f5a8fa2db Binary files /dev/null and b/site/trunk/site-publish/distributed-sca-domain.data/calculator-distributed.png.jpeg differ diff --git a/site/trunk/site-publish/distributed-sca-domain.data/calculator2.png b/site/trunk/site-publish/distributed-sca-domain.data/calculator2.png new file mode 100644 index 0000000000..69b9027a44 Binary files /dev/null and b/site/trunk/site-publish/distributed-sca-domain.data/calculator2.png differ diff --git a/site/trunk/site-publish/distributed-sca-domain.data/calculator2.png.jpeg b/site/trunk/site-publish/distributed-sca-domain.data/calculator2.png.jpeg new file mode 100644 index 0000000000..c52fe73a5c Binary files /dev/null and b/site/trunk/site-publish/distributed-sca-domain.data/calculator2.png.jpeg differ diff --git a/site/trunk/site-publish/distributed-sca-domain.data/calculator3.png b/site/trunk/site-publish/distributed-sca-domain.data/calculator3.png new file mode 100644 index 0000000000..33d13a9ed1 Binary files /dev/null and b/site/trunk/site-publish/distributed-sca-domain.data/calculator3.png differ diff --git a/site/trunk/site-publish/distributed-sca-domain.data/calculator3.png.jpeg b/site/trunk/site-publish/distributed-sca-domain.data/calculator3.png.jpeg new file mode 100644 index 0000000000..7c77067545 Binary files /dev/null and b/site/trunk/site-publish/distributed-sca-domain.data/calculator3.png.jpeg differ diff --git a/site/trunk/site-publish/distributed-sca-domain.data/distributed-overview.png b/site/trunk/site-publish/distributed-sca-domain.data/distributed-overview.png new file mode 100644 index 0000000000..4dfd1052f3 Binary files /dev/null and b/site/trunk/site-publish/distributed-sca-domain.data/distributed-overview.png differ diff --git a/site/trunk/site-publish/distributed-sca-domain.data/distributed-overview.png.jpeg b/site/trunk/site-publish/distributed-sca-domain.data/distributed-overview.png.jpeg new file mode 100644 index 0000000000..f664149db4 Binary files /dev/null and b/site/trunk/site-publish/distributed-sca-domain.data/distributed-overview.png.jpeg differ diff --git a/site/trunk/site-publish/distributed-sca-domain.data/multi-node-abstract.png b/site/trunk/site-publish/distributed-sca-domain.data/multi-node-abstract.png new file mode 100644 index 0000000000..a047c2416c Binary files /dev/null and b/site/trunk/site-publish/distributed-sca-domain.data/multi-node-abstract.png differ diff --git a/site/trunk/site-publish/distributed-sca-domain.data/multi-node-abstract.png.jpeg b/site/trunk/site-publish/distributed-sca-domain.data/multi-node-abstract.png.jpeg new file mode 100644 index 0000000000..d7ef63e34d Binary files /dev/null and b/site/trunk/site-publish/distributed-sca-domain.data/multi-node-abstract.png.jpeg differ diff --git a/site/trunk/site-publish/distributed-sca-domain.html b/site/trunk/site-publish/distributed-sca-domain.html new file mode 100644 index 0000000000..7aa99478f9 --- /dev/null +++ b/site/trunk/site-publish/distributed-sca-domain.html @@ -0,0 +1,421 @@ + + + + + + + + + + + + + + + Apache Tuscany : Distributed SCA Domain + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Distributed SCA Domain + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

Create A Distributed Application

+ +

An SCA assembly can be run in a single or multi-node environment. Here we introduce the Tuscany node and SCA domain and explain how the calculator example can be distributed across multiple nodes.

+ +

Nodes

+ +

Node is a Tuscany specific term (you won't find it in the OASIS SCA specifications). The node wraps the Tuscany SCA runtime. The runtime comprises the modules that are present in the modules directory of the Tuscany SCA Java distribution. As you might expect there are functions that read XML, create an in memory model of the SCA assembly, create the components and wire them together ready to process incoming messages.

+ +

A node runs an SCA assembly described by one or more composite files. A node runs in a single JVM. You can start more than one node in a single JVM if you need to but we only tend to do this for testing purposes. In the first section of the user guide we built a calculator sample that included Calculator, Add, Subtract, Multiply and Divide components included in a single composite.

+ +

+ +

The composite was run using the following API;

+ +
+
+        node = SCANodeFactory.newInstance().createSCANodeFromClassLoader("Calculator.composite", getClass().getClassLoader());
+        node.start();
+
+
+ +

This loads the named composite, and any associated resources, and then starts the node to start up all of the components within the composite.

+ +

Configuring Nodes

+ +

Creating a node in code is straightforward. For example,

+ +
+
+SCANode2 node = SCANodeFactory.newInstance().createSCANodeFromClassLoader("calculator.composite", null);
+
+
+

Here the "null" parameter means that the node factory uses the current class' classloader to locate the named composite file. The location of the composite file is assumed to be the location of the SCA contribution. The assumption here is that only one contribution is required.

+ +

If more contributions must be loaded by the node the following interface can be used.

+
+
+SCANode2  node = SCANodeFactory.newInstance().createSCANode("file:/C:/CalculatorContribution1/Calculator.composite",
+        		                               new SCAContribution("CalculatorContribution1",
+        		                                                               "file:/C:/CalculatorContribution1"),
+                                                       new SCAContribution("CalculatorContribution2",
+        		                                                               "file:/C:/CalculatorContribution2"));
+
+
+

Where

+
+
+"file:/C:/CalculatorContribution1/Calculator.composite"
+
+
+

Is the explicit location of the composite file to be run and

+
+
+new SCAContribution("CalculatorContribution1",
+                    "file:/C:/CalculatorContribution1")
+
+
+

Shows how to provide contribution details. The first parameter "CalculatorContribution1" gives a name for the contribution. The second parameter tells the node where to find the contribution. As this second parameter is a URL the contribution can be read from disk or directly from the network.

+ +

Using multiple contributions can be useful if, for example, you have chosen to separate common artifacts from those specific to this composite. The contribution containing common artifacts can then be used in other SCA applications without change.

+ +

Starting a Node

+ +

Once the node is created it is configured and ready to be started. It can be started as follows.

+
+
+node.start();
+
+
+ +

Locating Services

+ +

If the node has been created from within a piece of Java code using the node fatory interface a local service reference can be retrieved in the following way.

+
+
+calculatorService = ((SCAClient)node).getService(CalculatorService.class, "CalculatorServiceComponent");
+
+
+ +

One a node has been started all of its remote bindings will be active so you can also access the component services that the node contains via any remote bindings that they define.

+ +

Stopping a Node

+ +

If you are done with the node or need to stop it processing messages use the following.

+
+
+node.stop();
+
+
+ + +

SCA Domain

+ +

When running standalone a node defines the scope of component services that references can target by name. SCA defines the term SCA Domain to describe this scope. Section 10 of the SCA Assembly specification actually describes an SCA Domain as defining "the boundary of visibility for all SCA mechanisms".

+ +

In a standalone node a reference can only target services that are running within the same node. However nodes running in separate JVMs can be configured to run an SCA assembly in a distributed fashion. In this way components running on one node can reference components running on a separate node. To make this configuration work the nodes must be running as part of the same distributed SCA domain. In Tuscany a distributed SCA domain is represented using a separate domain manager process.

+ +

Creating composites to run across multiple nodes.

+

From the calculator sample you can see that the wires between the component references and services, formed by adding a target component name to a reference, are resolved inside an SCA domain comprising a single node.

+ +

+ +

For example, this section of the calculator composite file shows how the CalcuatorServiceComponent targets the AddServiceComponent.

+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           targetNamespace="http://sample"
+           xmlns:sample="http://sample"
+           name="Calculator">
+    <component name="CalculatorServiceComponent">
+        <implementation.java class="calculator.CalculatorServiceImpl"/>
+        <reference name="addService" target="AddServiceComponent" />
+        <reference name="subtractService" target="SubtractServiceComponent" />
+        <reference name="multiplyService" target="MultiplyServiceComponent" />
+        <reference name="divideService" target="DivideServiceComponent" />
+    </component>
+
+    <component name="AddServiceComponent">
+        <implementation.java class="calculator.AddServiceImpl"/>
+    </component>
+ 
+    ...
+</composite>
+
+
+

The target="AddServiceComponent" of the CalculatorServiceComponent's addService reference refers to the AddServiceComponent defined later on in this composite. A single composite must run on a single node so to distribute this application we need to separate it into more than one composite.

+ +

In the distributed calculator sample the composite defines the calculator component but not the add component;

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           targetNamespace="http://sample"
+           xmlns:sample="http://sample"
+           name="Calculator">
+    <component name="CalculatorServiceComponent">
+        <implementation.java class="calculator.CalculatorServiceImpl"/>
+        <reference name="addService" target="AddServiceComponent" />
+        <reference name="subtractService" target="SubtractServiceComponent" />
+        <reference name="multiplyService" target="MultiplyServiceComponent" />
+        <reference name="divideService" target="DivideServiceComponent" />
+    </component>
+ 
+    ...
+</composite>
+
+
+ +

Another composite defines the add component.

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           targetNamespace="http://sample"
+           xmlns:sample="http://sample"
+           name="Add">
+
+    <component name="AddServiceComponent">
+        <implementation.java class="calculator.AddServiceImpl"/>
+    </component>
+ 
+    ...
+</composite>
+
+
+ +

These two composites are run by separate nodes within the context of a single domain and the calculator addService reference

+ +
+
+<reference name="addService" target="AddServiceComponent" />
+
+
+ +

is still be able to find the add component running on a separate node.

+ +

+ +

So a distributed SCA domain can consist of more than one node/composite and wires can run between components defined in the separate composites.

+ +

Starting A Domain

+ +

There is a launcher that has a mainline for starting the domain. For example,

+ +
+
+    public static void main(String[] args) throws Exception {
+        DomainManagerLauncher.main(args);
+    }
+
+
+ +

In the calculator-distributed sample this code is contained in the class node.LaunchDomain.java. Runing this will run the domain mananger.

+ +

This article that is hosted outside of Tuscany provides a step by step instruction for how to use the Tuscany web-based domain manager UI to administer an SCA domain and how to use the domain administrative UI to deploy an SOA solution comprised of SCA components.

+ +

Configuring A Domain Through The Domain Manager Web Interface

+ +

Once the domain manager is running you can get to the web interface of the default domain by pointing your browser at http://localhost:9990/ui. This provides a number of different pages allowing you to

+ +
    +
  • Add contributions to the domain
  • +
  • Add node configurations to the domain
  • +
  • Configure composites to run on specific nodes
  • +
  • Start local node instances to test the configuration
  • +
+ + +

When you start the domain manager for the distributed calculator sample you will see the pages already populated with the information needed to execture the sample.

+ +

Configuring a Domain Through The File System

+ +

Behind the domain manager web application there are three files where the configuration information is stored.

+ +

workspace.xml - stores the ID and location of each contribution that has been added to the domain.

+ +

domain.composite - the virtual domain composite. This is an SCA composite that represents the virtual domain which includes all of the composites that will run in the domain. A URI is provided which indicates which contribution each composite comes from. Ultimately an SCANode instance will be started for each composite included in the virtual domain. Each SCANode instance can be running on separate/distributed processors. So the virtual domain is a consolidated description of you distributed SCA application

+ +

cloud.composite - describes the compute cloud (the set of distributed SCANode instances) being used to run the SCA application. Each node is assigned a composite and also has details of the configuration of bindings when they run on that node, for example, the root URI is set. It's possibly slightly confusing that this file is in SCA composite format also but this is a convenience because firstly we didn't have to create a new file format and secondly there may be some benefit in the future of representing this network of nodes as a network of SCA services for management purposes although we don't do that yet.

+ +

These files are updated when you make changes to the domain through the domain manager interface but they have a fairly simple XML format and can be edited manually or new utilities could be constructed to edit them automatically. In the distributed calculator sample you can find these files in the root directory.

+ +

Connection to non-SCA services

+ +

To connect to services outside of the SCA Domain (whether they be services provided by SCA or by other means) you can still configure an explicit binding, for example, lets now assume that the DivideServiceComponent is a non-sca web service out there on the network somewhere. As this is outside the SCA domain we can use an explicit remote binding to talk to it.

+
+
+<component name="CalculatorServiceComponent">
+		<implementation.java class="calculator.CalculatorServiceImpl"/>
+        <reference name="addService" ></reference>
+        <reference name="subtractService" target="SubtractServiceComponent"></reference>
+        <reference name="multiplyService" target="MultiplyServiceComponent"></reference>
+        <reference name="divideService" target="DivideServiceComponent">
+            <binding.ws uri="http://localhost:8080/sample-calculator-ws-webapp/AddServiceComponent"/>
+        </reference>
+    </component>
+
+
+ +

Starting Nodes In A Distributed Domain

+ +

The domain manager is used to pre-process each composited prior to the composites being deployed to nodes for running. Contributions (containing the composites) are added to the domain manager. Configuration must be provided which tells the domain manager where the nodes are that are going to run the composites and which composites they will run. Based on this information the domain manager makes an atom feed available for each composite that is deployed to a node. The node to which the composite is assigned must read the correct atom feed in order to configure itself by downloading the composite to run and the contributions required provide the artifacts required by the composite. There is a Node API that takes as input the URL of an atom feed exposed by the domain manager as follows.

+ +
+
+SCANode2 node = SCANodeFactory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/NodeA");
+
+
+ +

The URL http://localhost:9990/node-config/NodeA is the URL of the atom feed that the domain manager provides.

+ +

The domain manager processes all the relationships between all composite components and provides a fully configured composite to each node, i.e. all of the binding URIs are filled out correctly so it's basically a pre-processing step.

+ +

In the calculator-distributed sample java classes are provided which are set up ready to start the required nodes. Look at the files.

+ +
+
+node.LaunchCalculatorNodeA
+node.LaunchCalculatorNodeB
+node.LaunchCalculatorNodeC
+
+
+ +

The README provided with the samples gives more detailed instruction on how to run the sample.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg new file mode 100644 index 0000000000..a0b9c3c248 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg.jpeg new file mode 100644 index 0000000000..899edcb286 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/01-overview.html b/site/trunk/site-publish/documentation-2x/01-overview.html new file mode 100644 index 0000000000..d1c889e61b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/01-overview.html @@ -0,0 +1,229 @@ + + + + + + + + 01-Overview + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > 01-Overview + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Feb 04, 2009 +  (view change) + +
+ +
+
+

SCA Java Documentation for 2.x

+ + + + + + + + + + + + + + + + + +
  + Getting Started with Tuscany
+These guides help you to get setup in Tuscany, develop and run a simple application using comand line or Eclipse. +
 
+ + + + + + + + + + + + + + + + + +
  + SCA Introduction
+Provides a quick introduction to SCA and links to the SCA Specifications. +
 
+ + + + + + + + + + + + + + + + + + +
  + Development Guide
+These guides help you learn more about Tuscany architecture and how to get involved in the development of Tuscany. We look forward to your help. +
 
+ +
+ + +
+
+ + + diff --git a/site/trunk/site-publish/documentation-2x/02-getting-started.html b/site/trunk/site-publish/documentation-2x/02-getting-started.html new file mode 100644 index 0000000000..5cdd5cc3bd --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/02-getting-started.html @@ -0,0 +1,119 @@ + + + + + + + + 02-Getting Started + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > 02-Getting Started + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Feb 03, 2009 +  (view change) + +
+ +
+
+
In Progress
+
+ + +
+
+ + + diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg new file mode 100644 index 0000000000..4c1ea05f6d Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg.jpeg b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg.jpeg new file mode 100644 index 0000000000..b0e371f303 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png new file mode 100644 index 0000000000..72b9d1b4d2 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png differ diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png.jpeg b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png.jpeg new file mode 100644 index 0000000000..6ab7db30aa Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg new file mode 100644 index 0000000000..587094badc Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg.jpeg b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg.jpeg new file mode 100644 index 0000000000..829bd77110 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.html b/site/trunk/site-publish/documentation-2x/02-sca-introduction.html new file mode 100644 index 0000000000..fe1f949a88 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/02-sca-introduction.html @@ -0,0 +1,222 @@ + + + + + + + + 02-SCA Introduction + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > 02-SCA Introduction + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Feb 03, 2009 +  (view change) + +
+ +
+
+ + + +

What is SCA?

+

SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology.

+ +

SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.

+ +

SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes.

+ +

Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled applications.

+ +

Now let's talk about SCA building blocks and concepts.

+ +

SCA Component

+ +

The basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:

+ +
    +
  • Service: Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.
  • +
  • Reference: This describes the dependencies this type of component has in order to function. A reference is an interface.
  • +
  • Property: This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.
  • +
  • Intent policies: This describes assumptions on how the component will behave. There are two types of policies. +
      +
    • Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging
    • +
    • Interaction policy - defines how the components behave with one another. For example, security.
    • +
    +
  • +
  • Implementation: Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.
  • +
+ + +

This is demonstrated below.
+

+ +

The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.

+ +

SCA Wire

+ +

As mentioned above, an SCA component may have zero or more references. Refrences in SCA define how SCA components invoke services. The relationship between a reference and a service is typically demonstrated through a line in a SCA diagrams and is referred to as a wire.

+ +

The term wire can at the begining seem confusing because you may ask how a wire is realized. There is no physical definition for a wire, it is really derived from the relationship between a Service and its refrence(s) at runtime. This is realized through dependency injection in Tuscany.

+ + +

SCA Composite

+ +

An SCA composite consists of components, services, references, and wires that connect them. A composite is the unit of deployment for SCA.
+A composite can be viewed as a component whose implementation is not code but an aggregation of one or more components co-operating to provide higher level services. Think of composite as a solution, for example a credit check composite may consist of multiple components that together perform the credit checking work. A composite can also be used within a larger solution, for example credit check can be part of a order processing composite. A composite has the same charactersitics as a component. It provides Services, has References to other dependencies, and can be configured using Properties and can have intent policies in just the same way as an individual components can. In thise case, attributes of some of the components that are embedded in the composite get 'promoted' and becom the attribute of the composite. In the example below, you see a calculator composite which consists of 5 components, a calculator service has references to four components:Add, Subtract, Multiply and Divide.

+ +


+ The assembly or wiring is defined in .composite file through Service Component Definition Language (SCDL) that is in XML. For example, calculator.composite would define that calculator component references the other four components.

+ +

SCA Contribution

+ +

The artifacts that make up a solution get packaged into what is called a contribution. A contribution can take a number of different forms. For example, it could be a jar file, or it could be a directory tree on the file system. A contribution can contain composites, java classes, BPEL processes, XSD files, wsdl files, etc. An SCA application can be divided into multiple contributions with dependencies between them. In general, some services depend closely on other services and it makes sense to package them together. If services are more independent it is best to package them separately so that they can be reused in different contexts. A contribution is a deployable unit. A solution may require multiple contributions that share artifacts and artifacts can be shared between (imported) between contributions.

+ +

SCA Domain

+ +

Contribution packages get contributed to what is called SCA domain which is the scope of adminstration at runtime. An SCA Domain represents a complete runtime configuration, potentially distributed over a series of interconnected runtime nodes and is a logical view of the running applications or a coherent grouping of components that are working together. An SCA Domain typically represents an area of business functionality controlled by a single organization. For example, an SCA Domain may be the whole of a business, or it may be a department within a business.

+ +

Therefore, an SCA domain consists of the definitions of composites, components, their implementations, and the nodes on which they run. Components deployed into a domain can directly wire to other components within the same domain. Communication with services outside of a domain is done through bindings.

+ + +

SCA Domains can vary in size from the very small to the very large:

+
    +
  • a very small domain could be one within a test environment inside an IDE
  • +
  • a medium sized domain could be a single server or small cluster supporting a single application
  • +
  • a large domain could describe all the services within a department or company
  • +
+ + +

In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services. However, during development one is not concerned with all this. The code is packaged and made available for deployment. Tuscany SCA Java supports contributions in the form of JAR or filesystem.

+ +

Below is an example of domain with two contributions.
+

+ +

SCA Binding

+

A binding is used as a means of communication between services and handles the protocols. It defines with what communication method a service can be accessed with or with what communication method it can will access other services. There can be different types of bindings depending on technologies used to develop a solution. For example JMS binding, Webservices binding, Atom binding for web20 interaction, etc.

+ +

Services can be configured with different bindings and there can be multiple bindings for a service. Bindings for the services and references get defined declaratively in the .composite file. There is a default binding called binding.sca which when used leaves the choice of binding to the underlying infrastructure by default.

+ +

The declarative bindings and the abstraction of protocols from business logic brings agility to SCA applications. This allows SCA applications to be purely focused on business logic and not be contaminated with protocol handling information. It also enables the SCA compositions to grow or change without code modification while also working with applications that are not enabled with SCA.

+ + +

SCA Policy

+

An enterprise application requires control beyond the business functional capability which can include how security is handled in the enterprise or what transactional capability should be applied to services that are offered. SCA policies define the constraints or capabilities that get applied to services and their interaction. Two types of policies are defined in SCA.

+
    +
  • Interaction Policies - Define the policies that influence interaction of services for example whether authentication is required or not.
  • +
  • Implementation Policies - Define how the components behave at runtime for example whether it is transactional or not.
  • +
+ + +

SCA mechanisms for defining policies such as intents and policySets can only be used in the context of a single domain. The fact that policies can be defined declaratively make applications adaptive to the environment that they get deployed into or to changes in the business requirements.
+For more information about policy check out the sca policy framework specificationversion=1]

+ +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg new file mode 100644 index 0000000000..a0b9c3c248 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg.jpeg new file mode 100644 index 0000000000..899edcb286 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/03-development-guides.html b/site/trunk/site-publish/documentation-2x/03-development-guides.html new file mode 100644 index 0000000000..fde070d137 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-development-guides.html @@ -0,0 +1,221 @@ + + + + + + + + 03-Development Guides + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > 03-Development Guides + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Feb 03, 2009 +  (view change) + +
+ +
+
+ + + + + + + + + + + + + + + +
+ +
  + Development Guide
+If you would like to contribute to the project, this guide explains how to build Java SCA and how to contribute code back to the project. +
 
+ + + + + + + + + + + + + + + + +
+ +
  + OSGi Aware Programming in Tuscany
+This guide shows the Tuscany developer how to write code and extension code that would comply to some of the OSGi modularity concepts +
 
+
+ +
+ Children + + Show Children + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg new file mode 100644 index 0000000000..4c1ea05f6d Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg.jpeg b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg.jpeg new file mode 100644 index 0000000000..b0e371f303 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png new file mode 100644 index 0000000000..72b9d1b4d2 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png differ diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png.jpeg b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png.jpeg new file mode 100644 index 0000000000..6ab7db30aa Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg new file mode 100644 index 0000000000..587094badc Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg.jpeg b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg.jpeg new file mode 100644 index 0000000000..829bd77110 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.html b/site/trunk/site-publish/documentation-2x/03-sca-introduction.html new file mode 100644 index 0000000000..5067bc52fc --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-sca-introduction.html @@ -0,0 +1,222 @@ + + + + + + + + 03-SCA Introduction + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > 03-SCA Introduction + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Feb 03, 2009 +  (view change) + +
+ +
+
+ + + +

What is SCA?

+

SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology.

+ +

SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.

+ +

SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes.

+ +

Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled applications.

+ +

Now let's talk about SCA building blocks and concepts.

+ +

SCA Component

+ +

The basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:

+ +
    +
  • Service: Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.
  • +
  • Reference: This describes the dependencies this type of component has in order to function. A reference is an interface.
  • +
  • Property: This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.
  • +
  • Intent policies: This describes assumptions on how the component will behave. There are two types of policies. +
      +
    • Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging
    • +
    • Interaction policy - defines how the components behave with one another. For example, security.
    • +
    +
  • +
  • Implementation: Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.
  • +
+ + +

This is demonstrated below.
+

+ +

The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.

+ +

SCA Wire

+ +

As mentioned above, an SCA component may have zero or more references. Refrences in SCA define how SCA components invoke services. The relationship between a reference and a service is typically demonstrated through a line in a SCA diagrams and is referred to as a wire.

+ +

The term wire can at the begining seem confusing because you may ask how a wire is realized. There is no physical definition for a wire, it is really derived from the relationship between a Service and its refrence(s) at runtime. This is realized through dependency injection in Tuscany.

+ + +

SCA Composite

+ +

An SCA composite consists of components, services, references, and wires that connect them. A composite is the unit of deployment for SCA.
+A composite can be viewed as a component whose implementation is not code but an aggregation of one or more components co-operating to provide higher level services. Think of composite as a solution, for example a credit check composite may consist of multiple components that together perform the credit checking work. A composite can also be used within a larger solution, for example credit check can be part of a order processing composite. A composite has the same charactersitics as a component. It provides Services, has References to other dependencies, and can be configured using Properties and can have intent policies in just the same way as an individual components can. In thise case, attributes of some of the components that are embedded in the composite get 'promoted' and becom the attribute of the composite. In the example below, you see a calculator composite which consists of 5 components, a calculator service has references to four components:Add, Subtract, Multiply and Divide.

+ +


+ The assembly or wiring is defined in .composite file through Service Component Definition Language (SCDL) that is in XML. For example, calculator.composite would define that calculator component references the other four components.

+ +

SCA Contribution

+ +

The artifacts that make up a solution get packaged into what is called a contribution. A contribution can take a number of different forms. For example, it could be a jar file, or it could be a directory tree on the file system. A contribution can contain composites, java classes, BPEL processes, XSD files, wsdl files, etc. An SCA application can be divided into multiple contributions with dependencies between them. In general, some services depend closely on other services and it makes sense to package them together. If services are more independent it is best to package them separately so that they can be reused in different contexts. A contribution is a deployable unit. A solution may require multiple contributions that share artifacts and artifacts can be shared between (imported) between contributions.

+ +

SCA Domain

+ +

Contribution packages get contributed to what is called SCA domain which is the scope of adminstration at runtime. An SCA Domain represents a complete runtime configuration, potentially distributed over a series of interconnected runtime nodes and is a logical view of the running applications or a coherent grouping of components that are working together. An SCA Domain typically represents an area of business functionality controlled by a single organization. For example, an SCA Domain may be the whole of a business, or it may be a department within a business.

+ +

Therefore, an SCA domain consists of the definitions of composites, components, their implementations, and the nodes on which they run. Components deployed into a domain can directly wire to other components within the same domain. Communication with services outside of a domain is done through bindings.

+ + +

SCA Domains can vary in size from the very small to the very large:

+
    +
  • a very small domain could be one within a test environment inside an IDE
  • +
  • a medium sized domain could be a single server or small cluster supporting a single application
  • +
  • a large domain could describe all the services within a department or company
  • +
+ + +

In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services. However, during development one is not concerned with all this. The code is packaged and made available for deployment. Tuscany SCA Java supports contributions in the form of JAR or filesystem.

+ +

Below is an example of domain with two contributions.
+

+ +

SCA Binding

+

A binding is used as a means of communication between services and handles the protocols. It defines with what communication method a service can be accessed with or with what communication method it can will access other services. There can be different types of bindings depending on technologies used to develop a solution. For example JMS binding, Webservices binding, Atom binding for web20 interaction, etc.

+ +

Services can be configured with different bindings and there can be multiple bindings for a service. Bindings for the services and references get defined declaratively in the .composite file. There is a default binding called binding.sca which when used leaves the choice of binding to the underlying infrastructure by default.

+ +

The declarative bindings and the abstraction of protocols from business logic brings agility to SCA applications. This allows SCA applications to be purely focused on business logic and not be contaminated with protocol handling information. It also enables the SCA compositions to grow or change without code modification while also working with applications that are not enabled with SCA.

+ + +

SCA Policy

+

An enterprise application requires control beyond the business functional capability which can include how security is handled in the enterprise or what transactional capability should be applied to services that are offered. SCA policies define the constraints or capabilities that get applied to services and their interaction. Two types of policies are defined in SCA.

+
    +
  • Interaction Policies - Define the policies that influence interaction of services for example whether authentication is required or not.
  • +
  • Implementation Policies - Define how the components behave at runtime for example whether it is transactional or not.
  • +
+ + +

SCA mechanisms for defining policies such as intents and policySets can only be used in the context of a single domain. The fact that policies can be defined declaratively make applications adaptive to the environment that they get deployed into or to changes in the business requirements.
+For more information about policy check out the sca policy framework specificationversion=1]

+ +
+ + +
+
+ + + diff --git a/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg new file mode 100644 index 0000000000..a0b9c3c248 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg.jpeg new file mode 100644 index 0000000000..899edcb286 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/03development-guides.html b/site/trunk/site-publish/documentation-2x/03development-guides.html new file mode 100644 index 0000000000..a7bd32b146 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03development-guides.html @@ -0,0 +1,221 @@ + + + + + + + + 03.Development Guides + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > 03.Development Guides + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Feb 03, 2009 +  (view change) + +
+ +
+
+ + + + + + + + + + + + + + + +
+ +
  + Development Guide
+If you would like to contribute to the project, this guide explains how to build Java SCA and how to contribute code back to the project. +
 
+ + + + + + + + + + + + + + + + +
+ +
  + OSGi Aware Programming in Tuscany
+This guide shows the Tuscany developer how to write code and extension code that would comply to some of the OSGi modularity concepts +
 
+
+ +
+ Children + + Show Children + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg new file mode 100644 index 0000000000..a0b9c3c248 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg.jpeg new file mode 100644 index 0000000000..899edcb286 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/04-development-guides.html b/site/trunk/site-publish/documentation-2x/04-development-guides.html new file mode 100644 index 0000000000..7e53a8c0c5 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/04-development-guides.html @@ -0,0 +1,223 @@ + + + + + + + + 04-Development Guides + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > 04-Development Guides + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Feb 03, 2009 +  (view change) + +
+ +
+
+ + + + + + + + + + + + + + + + +
  + Development Guide
+If you would like to contribute to the project, this guide explains how to build Java SCA and how to contribute code back to the project. +
 
+ + + + + + + + + + + + + + + + + +
  + OSGi Aware Programming in Tuscany
+This guide shows the Tuscany developer how to write code and extension code that would comply to some of the OSGi modularity concepts +
 
+ +
+ +
+ Children + + Show Children + +
+ + +
+
+ + + diff --git a/site/trunk/site-publish/documentation-2x/20-beta-samples-documentation.html b/site/trunk/site-publish/documentation-2x/20-beta-samples-documentation.html new file mode 100644 index 0000000000..112b2faee3 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/20-beta-samples-documentation.html @@ -0,0 +1,1740 @@ + + + + + + + + + + + + + + + 2.0-beta-Samples documentation : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Getting Started > Samples > 2.0-beta-Samples documentation + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Getting Started > Samples > 2.0-beta-Samples documentation + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ + +

Tuscany 2.0-Beta1 Samples

+ +

The Tuscany samples are shipped with Tuscany binary and source releases (see the /samples directory). If you are using Tuscany from a release distribution then make sure you are looking at the documentation that corresponds to the samples as they stood at the time of the release.

+ +

The contents of the Samples page contains links to the various different versions of samples documentation.

+ +

In a distribution, the samples source code is found in the samples directory, directly under the root directory. The following sections are laid out to match the structure of the samples directory and its subdirectories.

+ +

If you're new to Tuscany SCA start with the getting-started. Samples are generally presented in the form on an SCA contribution (look for directories ending in "-contribution") or as a webapp (look for directories ending in "-webapp"). The directories getting-started, learning-more and applications all contain sample SCA contributions of increasing complexity. The running-tuscany directory describes the various different ways you can start the Tuscany runtime and install contributions. The extending-tuscany directory contains some examples of how to build new binding and implementation extensions for using in Tuscany.

+ +

In the following text we use <some_text> to mean you have to replace it with whatever is appropriate in your environment. For example <tuscany_bin_distro> means the directory in which you install the Tuscany binary distribution.

+ +

Instructions are colour coded as follows:

+ +
+

Instructions in pink boxes are for the Ant user

+
+
+

Instructions in silver boxes are for the Maven user

+
+ +

Note. As some of these samples create and use local network connections you may need to configure your firewall, if you are running one, to allow the test to run successfully.

+ +
+
+ +

getting-started

+ +

SCA defines a concept called a Contribution which is the way that SCA composite applications are packed for deployment. See SCA Introduction for more information on SCA concepts.

+ +

The getting-started samples consist of simple SCA contributions that you can build and run as your first step to getting up and running with the Tuscany SCA Java runtime.

+ +

You can build the sample contributions with either Maven or Ant and the running-tuscany directory contains information about the various ways you can start Tuscany and run these contributions.

+ +

helloworld-contribution

+ +

This is a simple SCA contribution. It describes a composite application with a single component, HelloWorldComponent, implemented in Java. The component's Java implementation provides service "business logic" for saying hello to a person whose name is supplied as input to the service. The component is described in a composite called helloworld.composite as follows:

+ +
+
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+           targetNamespace="http://sample"
+           name="helloworld">
+
+    <component name="HelloworldComponent">
+        <implementation.java class="sample.HelloworldImpl"/>
+    </component>
+
+</composite>
+
+
+ +

The contribution also contains a composite called helloworldws.composite which describes a component, HelloworldWSComponent, that uses the same implementation but uses a web services binding:

+ +
+
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+           targetNamespace="http://sample"
+           name="helloworldws">
+
+    <component name="HelloworldWSComponent">
+        <implementation.java class="sample.HelloworldImpl"/>
+        <service name="Helloworld">
+           <binding.ws />
+        </service>
+    </component>
+
+</composite>
+
+
+ +

This gives us a number of options for interacting with the components in this application.

+ +

Firstly there is a JUnit test inside this project called HelloworldTestCase.java. This starts the Tuscany runtime and loads the contribution. It then talks to the HelloworldComponent over the default SCA binding (binding.sca) using a local Java proxy.

+ +

Secondly the HelloworldWSComponent exposes a service with a web services binding. You can talk to this component using your favourite web services client. You can retrieve the WSDL for the web service automatically (see later)

+ +
+

To build this contribution using Ant do the following:

+ +

TODO

+
+ +
+

To build this contribution using Maven do the following:

+ +
+
+cd helloworld-contribution
+mvn
+
+
+
+ +

This will produce the contribution as follows:

+ +
+
+helloworld-contribution/target/helloworld-contribution.jar
+
+
+ +

As the JUnit test deploys and runs the contribution we can use it as a first simple example of a running SCA application.

+ +
+

To run the JUnit test using Ant do the following:

+ +

TODO

+
+ +
+

The contribution will be run automatically during the Maven build step and you will see the output from the JUnit test printed on the console in amongst the other output:

+ +
+
+Response from helloworld.sayHello("Petra") = Hello Petra
+
+
+
+ +

To access the web service that the HelloworldWSComponent exposes we have to keep the runtime runntime running.

+ +
+

To run the sample Ant so that you can access the web service do the following:

+ +

TODO

+
+ +
+

We have a Maven plugin that will run SCA contributions. You use it in Maven as follows:

+ +
+
+cd helloworld-contribution
+mvn tuscany:run
+
+
+ +

You will note that in the console output you can see a web service being exposed by the binding.ws JAXWS provider:

+ +
+
+Binding.ws JAXWS provider - Service URI: http://localhost:8085/HelloworldWSComponent/Helloworld
+
+
+ +

If you point you web browser at this address and add ?wsdl on the end:

+ +
+
+http://localhost:8085/HelloworldWSComponent/Helloworld?wsdl
+
+
+ +

You'll see the WSDL for the service returned. Using you're favourite web services client, for example, the Web Services Explorer in Eclipse, you can send messages to this web service.

+ +

When you're done use CTRL-C to stop the sample.

+
+ +

For more information on getting started with the Apache Tuscany SCA Java runtime see the Getting Started page.

+ +

helloworld-webapp

+ +

This sample is not a contribution in it's own right but demonstrates how to run the helloworld-contribution inside a web application. As it's the same contribution the same two components, HelloworldComponent and HelloworldWSComponnet, will be started.

+ +
+

To build this contribution using Ant do the following:

+ +

TODO

+
+ +
+

To build this contribution using Maven do the following:

+ +
+
+cd helloworld-webapp
+mvn
+
+
+
+ +

This will produce a webapp as follows:

+ +
+
+helloworld-webapp/target/helloworld.war
+
+
+ + +

You can run this webapp by deploying it to you're favourite webapp container. For example, you can deploy to Tomcat and run as follows:

+
+
+cp helloworld-webapp/target/helloworld.war my_tomcat_install/webapps
+my_tomcat_install/bin/catalina run
+
+
+ +

Once running point your web browser at:

+ +
+
+http://localhost:8080/helloworld/hello.html
+
+
+ +

You'll see a link there to the WSDL that's automatically generated for the web service binding of the HelloworldWSComponent. Again you can use your favourite web services client to send messages to the service.

+ +
TODO
There is no example of accessing binding.sca from within the webapp. Do we want to include this?
+ +
TODO
For more information on creating webapps to run SCA contributions with Tuscany see - ?
+ +

callback-api

+
TODO
This feels like a learning-more sample. I wouldn't focus on callbacks with the first time user
+ +

sca-scopes

+
TODO
This feels like a learning-more sample. I wouldn't focus on scopes with the first time user
+ +

sca-include-contribution

+
TODO
This feels like a learning-more sample. I wouldn't focus on inclusion with the first time user
+ +

learning-more

+ +
TODO
All of the run instructions here are subject to change. I just picked ones that works but ideally we'd use the command line consistently when that is operating correctly. Also Mike commented that it's unnatural and confusing to "cd running-tuscany/xyz" to run a sample. This should also be solved if we can go with the command line.
+ +

The samples found in the contributions below illustrate more of SCA and Tuscany's features in action. The contributions here are primarily focused on demonstrating the various SCA extensions that the Tuscany runtime supports, for example, bindings and implementations. The directories are named to let you easily find a sample of the extension you're interested in.

+ +

You can identify contributions here as the name of the directory from which they are built ends with "-contribution". There are also webapp samples here. The names of these directories end with "-webapp".

+ +

async

+ +

This sample demonstrates the SCA asynchronous progamming model in action as typified by services that are configured with the asyncInvocation intent. For example, from calculator-contribution

+ +
+
+@Remotable
+@AsyncInvocation
+public interface CalculatorServiceAsync {
+    void calculateAsync(Integer n1, ResponseDispatch<String> response);
+}
+
+
+ +

A client component can access an asynchronous service either synchronously or asynchronously. Asynchronous reference interfaces also have a special form, again from calculator-contribution:

+ +
+
+@Remotable
+public interface CalculateReferenceAsync {
+	// Sync
+	public String calculate(Integer i1);
+
+	// Aysnc Poll
+	public Response<String> calculateAsync(Integer i1);
+
+	// Async Callback
+	public Future<String> calculateAsync(Integer i1, AsyncHandler<String> handler);
+}
+
+
+ +

calculator-contribution

+ +

This contribution defines synchronous and asynchronous component services and a client component which references both. During the test the client component exercise all three styles of reference interface operation against both the synchronous and asynchronous service.

+ +
+

The contribution can be built using Ant as follows:

+ +
+
+cd learning-more/async/calculator-contribution
+ant
+
+
+ +

The contribution can be installed and the composite it contains run using Ant as follows

+ +
+
+cd running-tuscany/embedded-jse
+ant sample-implementation-java-calculator-async-contribution
+
+
+
+ +
+

The contribution can be built using Maven as follows:

+ +
+
+cd learning-more/async/calculator-contribution
+mvn
+
+
+ +

The contribution can be installed and the composite it contains run using Maven as follows

+ +
+
+cd running-tuscany/embedded-jse
+mvn
+
+
+ +

This will run several contributions including the sample-implementation-java-calculator-async-contribution.

+
+ +

binding-comet

+ +

The Comet protocol allows a servlet to process IO asynchronously, receiving events when data is available for reading on the connection (rather than always using a blocking read), and writing data back on connections asynchronously (most likely responding to some event raised from some other source).

+ +

weather-webapp

+ +

Executing the command "mvn" in this sample project creates a web archive suitable for deployment to Tomcat. It makes use of the tuscany comet binding.

+ +
+

The webapp can be built using Maven as follows:

+ +
+
+cd learning-more/binding-commet/weather-webapp
+mvn
+
+
+
+ +

The webapp can be installed and run as follows:

+ +
+
+cd learning-more/binding-commet/weather-webapp
+cp target/sample-binding-comet-1.0.war <your_container_deployment-dir>
+start the container as appropriate
+
+
+ +

binding-jms

+ +

This binding supports message orient communication via the JMS API.

+ +

helloworld-webapp

+ +

This contribution packages an SCA application inside a webapp. The application has two components which exchange helloworld style messages over the JMS binding.

+ +
+

The webapp can be built using Maven as follows:

+ +
+
+cd learning-more/binding-jms/helloworld-webapp
+mvn
+
+
+
+ +

The webapp can be installed and run as follows:

+ +
+
+cd learning-more/binding-jms/helloworld-webapp
+cp target/helloworld-jms.war <your_container_deployment-dir>
+start the container as appropriate
+
+
+ +
TODO
By rights the webapp should be called sample-binding-jms-helloworld-webapp.war
+ +

Once the webapp is deployed point your browser at:

+ +
+
+http://localhost:8080/helloworld-jms/
+
+
+ +

binding-jsonrpc

+ +

This binding supports communication over the JSON-RPC protocol.

+ +

calculator-contribution

+ +

This sample demonstrates using the simple calculator service component which makes use of four other services for add, subtract, multiply and divide functions. In this variant of the calculator sample the AddService is configured to be invoked using the JSON-RPC protocol. You can see the configuration by looking in the src/main/resources/Calculator.composite xml file.

+ +
+

The contribution Jar can be built using Ant as follows:

+ +
+
+cd learning-more/binding-jsonrpc/calculator-contribution
+ant
+
+
+ +

The contribution can be installed and the composite it contains run using Ant as follows:

+ +
+
+cd running-tuscany/embedded-jse
+ant sample-implementation-java-calculator-async-contribution
+
+
+
+ +
+

The contribution Jar can be built using Maven as follows:

+ +
+
+cd learning-more/binding-jsonrpc/calculator-contribution
+mvn
+
+
+ +

The contribution can be installed and the composite it contains run using Maven as follows

+ +
+
+cd running-tuscany/embedded-jse
+mvn
+
+
+ +

This will run several contributions including the sample-implementation-java-calculator-async-contribution.

+
+ +

calculator-webapp

+ +

This contribution packages the same calculator-contribution inside a webapp.

+ +
+

The webapp can be built using Maven as follows:

+ +
+
+cd learning-more/binding-jsonrpc/calculator-webapp
+mvn
+
+
+
+ +

The webapp can be installed and run as follows:

+ +
+
+cd learning-more/binding-jsonrpc/calculator-webapp
+cp target/sample-binding-jsonrpc-calculator-webapp.war <your_container_deployment-dir>
+start the container as appropriate
+
+
+ +

Once the webapp is deployed point your browser at:

+ +
+
+http://localhost:8080/sample-binding-jsonrpc-calculator-webapp/
+
+
+ +

binding-rmi

+ +

In this example the calculator function is split over two contributions in order to demonstrate the remote method invocation binding (binding.rmi). The calculator-service-contribution contains a composite which defines a CalculatorServiceComponent which exposes a CalculatorService using binding.rmi. The calculator-reference-contribution contains a composite which also defines a CalculatorServiceComponent but which in this case calls the add, subtract, multiple and divide operations offered by the component in the calculator-service-contribution. The two contributions are run using separate Tuscany nodes and the resulting components communicate over RMI. Both contributions must be deployed and started for the sample to work;

+ +
+

The contributions can be installed and the composite they contain run using Ant as follows:

+ +
+
+cd running-tuscany/embedded-jse
+ant sample-binding-rmi-calculator-contribution
+
+
+
+ +
+

The contributions can be installed and the composite they contain run using Ant as follows:

+ +
+
+cd running-tuscany/embedded-jse
+mvn
+
+
+ +

This will run several contributions including the binding-rmi sample contributions

+
+ +

calculator-service-contribution

+ +

This contribution defines a CalculatorServiceComponent whose add, subtract, multiply and divide operations are available over RMI.

+ +
+

The contribution Jar can be built using Ant as follows:

+ +
+
+cd learning-more/binding-rmi/calculator-service-contribution
+ant
+
+
+
+ +
+

The contribution Jar can be built using Maven as follows:

+ +
+
+cd learning-more/binding-rmi/calculator-service-contribution
+mvn
+
+
+
+ + +

calculator-reference-contribution

+ +

This sample extends the calculator sample by replacing the local wired connections with RMI bindings. Instead of local add, subtract, multiply and divide components, an RMI service implementation now provides the add, subtract, multiply and divide interfaces and is hosted as an RMI server. References specified in the .composite file include an RMI binding which targets
+this RMI server.

+ + + +
+

The contribution Jar can be built using Ant as follows:

+ +
+
+cd learning-more/binding-rmi/calculator-reference-contribution
+ant
+
+
+
+ +
+

The contribution Jar can be built using Maven as follows:

+ +
+
+cd learning-more/binding-rmi/calculator-reference-contribution
+mvn
+
+
+
+ +

binding-sca

+ +

This sample is the simplest sample other than that shown in the getting starting section. It uses the default SCA protocol for communicating between the various components of the caluclator application.

+ +

calculator-contribution

+

The service and reference definitions in the Calculator.composite and CalculatorClient.composite files have no binding attributes, thereby defaulting to the SCA binding for communication between the running instances of the components.

+ +
+

The contribution Jar can be built using Ant as follows:

+ +
+
+cd learning-more/binding-sca/calculator-contribution
+ant
+
+
+ +

The contribution can be installed and the composite it contains run using Ant as follows:

+ +
+
+cd running-tuscany/embedded-jse
+ant sample-binding-sca-calculator-contribution
+
+
+
+ +
+

The contribution Jar can be built using Maven as follows:

+ +
+
+cd learning-more/binding-sca/calculator-contribution
+mvn
+
+
+ +

The contribution can be installed and the composite it contains run using Maven as follows

+ +
+
+cd running-tuscany/embedded-jse
+mvn
+
+
+ +

This will run several contributions including the sample-binding-sca-calculator-contribution.

+
+ +

binding-ws

+ +

The web service binding allows components to expose and call services using SOAP formatted messages primarily over HTTP.

+ +

calculator-contribution

+ +

This contribution provides the four arithmetic operations in the calculator service, with the AddService being accessible as a web service via the URL http://localhost:8085/AddServiceComponent, as configured in the Calculator.composite file.

+ +
+

The contribution Jar can be built using Ant as follows:

+ +
+
+cd learning-more/binding-ws/calculator-contribution
+ant
+
+
+ +

The contribution can be installed and the composite it contains run using Ant as follows:

+ +
+
+cd running-tuscany/embedded-jse
+ant sample-binding-ws-calculator-contribution
+
+
+
+ +
+

The contribution Jar can be built using Maven as follows:

+ +
+
+cd learning-more/binding-ws/calculator-contribution
+mvn
+
+
+ +

The contribution can be installed and the composite it contains run using Maven as follows

+ +
+
+cd running-tuscany/embedded-jse
+mvn
+
+
+ +

This will run several contributions including the sample-binding-sca-calculator-contribution.

+
+ +

contribution-helloworld-ws-sdo

+ +

This sample demonstrates an SCA reference that uses a web service binding which works with SDO. Instead if using JAXB style Java beans in the service interface they are replaced with SDO object.

+ +
TODO
Sample not currently enabled - awaiting SDO support
+ +

distributed-osgi

+ +

These samples demonstrate the execution of Tuscany contributions in a OSGI environment. In particular the two bundle project in this directory define calculator objects that communicate with one another using the mechanisms defined in the OSGi remote services specifications. Here the Tuscany SCA runtime provides dynamic service discovery functionality. The calculator objects are registered as services directly with the OSGi bundle context by the bundle activator. Under the covers SCA provides the remote service disovery features that allow OSGi registered service to discover and communicate with one another across two JVMs.

+ +

To run the sample each bundle must be build using maven and then loaded into a separate OSGi environment into which the Tuscany SCA runtime has already been installed (See "osgi" under running-tuscany)

+ +

dosgi-dynamic-calculator-operations

+ +

This bundle provides the calculator add, subtract, multiple, divide operations services.

+ +
+

The bundle Jar can be built using Maven as follows:

+ +
+
+cd learning-more/distributed-osgi/dosgi-dynamic-calculator-operations
+mvn
+
+
+
+ +
TODO
projects should be called dosgi-dynamic-calculator-operations-bundle
+ +

To run the bundle see "osgi" under running-tuscany. In short do the following:

+ +

On Windows, run

+ +
+
+java -jar ..\..\..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\..\..\features\configuration -clean -console
+
+
+ +

You should see the osgi console. You can run "ss" command under the osgi> to see the status of the bundles.

+ +
+
+osgi> ss
+
+
+ +

Then you can install and start the bundle that's just been built:

+ +
+
+osgi> install file:./target/sample-dosgi-dynamic-calculator-operations.jar
+
+
+ +

dosgi-dynamic-calculator

+ +
+

The bundle Jar can be built using Maven as follows:

+ +
+
+cd learning-more/distributed-osgi/dosgi-dynamic-calculator
+mvn
+
+
+
+ +
TODO
projects should be called dosgi-dynamic-calculator-bundle
+ +

To run the bundle see "osgi" under running-tuscany. In short do the following:

+ +

On Windows, run

+ +
+
+java -jar ..\..\..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\..\..\features\configuration -clean -console
+
+
+ +

You should see the osgi console. You can run "ss" command under the osgi> to see the status of the bundles.

+ +
+
+osgi> ss
+
+
+ +

Then you can install and start the bundle that's just been built:

+ +
+
+osgi> install file:./target/sample-dosgi-dynamic-calculator.jar
+
+
+ +

You should see the calculator service start.

+ + +

implementation-bpel

+ +

BPEL component implementations will be useful to those who wish to describe a sequence of calls that must be made to other component services.

+ +

contribution-helloworld-bpel

+ +
+

The contribution Jar can be built using Ant as follows:

+ +
+
+cd learning-more/implementation-bpel/helloworld-bpel-contribution
+ant
+
+
+ +

The contribution can be installed and the composite it contains run using Ant as follows:

+ +
+
+????
+
+
+
+ +
+

The contribution Jar can be built using Maven as follows:

+ +
+
+cd learning-more/implementation-bpel/helloworld-bpel-contribution
+mvn
+
+
+ +

The contribution can be installed and the composite it contains run using Maven as follows

+ +
+
+????
+
+
+
+ +

helloworld-bpel-webapp

+ +

implementation-composite

+
TODO
Understand and Document
+ +

helloworld-recursive

+ +
TODO
Understand and Document
+ +

helloworld-recursive-ws

+ +
TODO
Understand and Document
+ +

implementation-java

+

The sample provides a single calculator service with a default SCA binding. The CalculatorClient exercises this interface by calling add, subtract, multiply and divide operations. This results in messages passing to the appropriate components in the composite across the local wires.

+ +

contribution-calculator

+
+

The contribution Jar can be built using Ant as follows:

+ +
+
+cd learning-more/implementation-java/calculator-contribution
+ant
+
+
+ +

The contribution can be installed and the composite it contains run using Ant as follows:

+ +
+
+cd running-tuscany/embedded-jse
+ant sample-implementation-java-calculator-contribution
+
+
+
+ +
+

The contribution Jar can be built using Maven as follows:

+ +
+
+cd learning-more/implementation-java/calculator-contribution
+mvn
+
+
+ +

The contribution can be installed and the composite it contains run using Maven as follows

+ +
+
+cd running-tuscany/embedded-jse
+mvn
+
+
+ +

This will run several contributions including the sample-implementation-java-calculator-contribution.

+
+ + +

implementation.osgi

+ +

dosgi-calculator

+ +
+

The bundle Jar can be built using Maven as follows:

+ +
+
+cd learning-more/implementation-osgi/dosgi-calculator
+mvn
+
+
+
+ +
TODO
projects should be called dosgi-calculator-bundle
+ +

To run the bundle see "osgi" under running-tuscany. In short do the following:

+ +

On Windows, run

+ +
+
+java -jar ..\..\..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\..\..\features\configuration -clean -console
+
+
+ +

You should see the osgi console. You can run "ss" command under the osgi> to see the status of the bundles.

+ +
+
+osgi> ss
+
+
+ +

Then you can install and start the bundle that's just been built:

+ +
+
+osgi> install file:./target/sample-dosgi-calculator.jar
+
+
+ +

You should see the calculator service start.

+ + + +

dosgi-calculator-operations

+

This bundle provides the calculator add, subtract, multiple, divide operations services.

+ +
+

The bundle Jar can be built using Maven as follows:

+ +
+
+cd learning-more/distributed-osgi/dosgi-calculator-operations
+mvn
+
+
+
+ +
TODO
projects should be called dosgi-calculator-operations-bundle
+ +

To run the bundle see "osgi" under running-tuscany. In short do the following:

+ +

On Windows, run

+ +
+
+java -jar ..\..\..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\..\..\features\configuration -clean -console
+
+
+ +

You should see the osgi console. You can run "ss" command under the osgi> to see the status of the bundles.

+ +
+
+osgi> ss
+
+
+ +

Then you can install and start the bundle that's just been built:

+ +
+
+osgi> install file:./target/sample-dosgi-calculator-operations.jar
+
+
+ +

implementation-script

+ +

This sample provides a simple calculator service whose operations are implemented using four different script languages.

+ +

contribution-calculator

+ +
+

The bundle Jar can be built using Maven as follows:

+ +
+
+cd learning-more/implementation-script/calculator-contribution
+mvn
+
+
+
+ +
+

The contribution Jar can be built using Ant as follows:

+ +
+
+cd learning-more/implementation-script/calculator-contribution
+ant
+
+
+ +

The contribution can be installed and the composite it contains run using Ant as follows:

+ +
+
+????
+
+
+
+ +

implementation-spring

+ +

The Spring implementation sample contains a simple Hello World service and client using implementation.spring.

+ +

contribution-helloworld-spring

+ +
+

The bundle Jar can be built using Maven as follows:

+ +
+
+cd learning-more/implementation-spring/helloworld-spring-contribution
+mvn
+
+
+
+ + +

helloworld-spring-webapp

+ +

The HelloWorld Spring WebApp sample contains a simple Hello World service implemented using Spring and wrapped in a webApp.

+ +
+

The bundle Jar can be built using Maven as follows:

+ +
+
+cd learning-more/implementation-spring/helloworld-spring-webapp
+mvn
+
+
+
+ +

implementation-web

+ +

The Web implementation samples contain examples of a HelloWorld service implemented using implementation.web and accessed with various different technologies.

+ +

helloworld-jaxrs-webapp

+ +

The HelloWorld JAX-RS WebApp sample uses implementation.web with JAX-RS to display a simple "Hello World" message from a webapp.

+ +

helloworld-js-client-webapp

+ +

The HelloWorld JavaScript client Webapp sample uses implementation.web and a javascript client to call a simple "Hello World" service and display the results.

+ +

helloworld-jsf-webapp

+

The HelloWorld JSF WebApp sample shows a simple "Hello World" service implemented in a webapp and accessed using Java Server Faces.

+ +

helloworld-jsp-webapp

+

The HelloWorld JSP WebApp sample uses implementation.web and a JSP client to invoke a simple "Hello World" service and display the results.

+ +

helloworld-servlet-webapp

+ +

The HelloWorld Servlet WebApp sample uses implementation.web with a servlet to return a simple "Hello World" message in response to a request.

+ +

helloworld-stripes-webapp

+

The HelloWorld Stripes WebApp sample uses implementation.web with Stripes to display a simple "Hello World" message from a webapp.

+ +

logging-scribe

+ +

This Tuscany sample shows how to implement and use a simple Logger component that logs string messages to a Scribe logging server.

+ +

Scribe is an open source server for aggregating streaming log data. It is designed to scale to a very large number of nodes and be robust to network and node failures.

+ +

See the Scribe Wiki 1 for more information on Scribe.

+ +

Getting the requires Apache Thrift library

+ +

This sample uses Apache Thrift's libthrift.jar to communicate with Scribe servers. Libthrift is not yet available in a Maven repository, so before building the sample with maven you need to download libthrift 2 and install it in your local maven repository like this:

+ +
+
+mvn install:install-file -DgroupId=org.apache.thrift -DartifactId=libthrift -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=libthrift-r917130.jar
+
+
+ +

Starting a Scribe server

+

Before running the LoggingTest sample test program, you need to start a Scribe server for the sample program to connect to.

+ +

Steps to start a Scribe server are described in the Scribe examples README 3. A simple scribe server configuration can be found in the Scribe examples 4.

+ +

LoggingTest will try to connect to a Scribe server at localhost:1463. To use a Scribe server at a different host or port, configure the host and port properties in scribe.composite to match your server.

+ +

Running the LoggingTest sample test program

+ +

To run the LoggingTest sample test program, do this:

+
+
+mvn -Dtest=LoggingTest test
+
+
+ +

Checking the Scribe log output

+

After running LoggingTest, you should find the logged string "Hello There" in file sample/sample_current under your Scribe log store directory.

+ +

If you've used the example1.conf Scribe configuration from the Scribe examples 4, you should find your log message in /tmp/scribetest/sample/sample_current.

+ +

1 http://wiki.github.com/facebook/scribe/
+2 http://svn.apache.org/repos/asf/cassandra/trunk/lib/libthrift-r917130.jar
+3 http://github.com/facebook/scribe/blob/master/examples/README
+4 http://github.com/facebook/scribe/blob/master/examples/example1.conf

+ + +

maven-osgi-junit

+
TODO
Understand and Document
+ +

calculator-osgi

+
TODO
Understand and Document
+ +

calculator-rest-osgi

+
TODO
Understand and Document
+ +

sca-client

+ +

Samples that demonstrate the OASIS defined SCA Client API being used in simple Java applications to access SCA components running in the domain.

+ +

calculator-scaclient

+ +

Disabled in this Beta1 release pending some up-coming changes in
+the way that domains are addressed and accessed.

+ +

helloworld-scaclient

+ +

Disabled in this Beta1 release pending some up-coming changes in
+the way that domains are addressed and accessed.

+ +

running-tuscany

+ +

Running something in Tuscany requires one or more contributions, and a method of launching the contributions to make the services they provide available. The sections below describes various means of launching contributions with the Tuscany SCA Java runtime. It's not important that you try all of these but they show you what's possible and hopefully show you how to use Tuscany in an environment that makes sense to you.

+ +

Some of the running-tuscany sub-directories just contain a README that gives you instructions. For example, maven just tells you how to configure and run contributions using the maven-tuscany-plugin. Others contain code. For example, embedded-jse contains simple Java launchers that show you how to start some of the sample contributions from a Java program.

+ +

The sample contributions in getting-started and learning-more should work regardless of which approach you adopt. However some approaches, like embedded-jse, don't have launchers for every single sample contribution.

+ +

command-line

+ +

You can execute a sample contribution from the command line on Windows or Linux.

+ +
TODO
Waiting for tuscany.bat to be reworked before correcting
+ +

To execute a sample contribution from the command line

+ +

on Windows, from a command prompt in the samples directory, run the command ...

+ +
+
+<tuscany_din_distro>\bin\tuscany.bat "contribution-name"
+
+
+ +

for example

+ +
+
+cd <tuscany_din_distro>\samples\learning-more\binding-sca\calculator-contribution
+<tuscany_din_distro>\bin\tuscany.bat sample-binding-sca-calculator-contribution.jar
+
+
+ +

or on *nix platforms, from a shell prompt in the samples directory, run the command ...

+ +
+
+cd <tuscany_din_distro>/samples/learning-more/binding-sca/calculator-contribution
+<tuscany_din_distro>/bin/tuscany.sh sample-binding-sca-calculator-contribution.jar
+
+
+ +

eclipse

+ +

To import sample contributions into Eclipse you first need to import the Tuscany runtime. You then need to import the sample contribution into Eclipse as a project. Instructions for doing both of these things can be found here

+ +

http://tuscany.apache.org/import-existing-tuscany-sca-projects-into-eclipse.html

+ + + +

Note. these instructions refer to our 1.x code base but it holds true for our 2.x code base.

+ +

Once you have a contribution imported into Eclipse and cleanly compiling against the Tuscany runtime jars you probably want to be able to run and debug it. The easiest way to do this is with a simple Java launcher. If you import the running-tuscany/embedded-jse project into Eclipse you'll see a number of such launcher programs which you can copy to launch the contribution(s) of your choice. Alternatively you can add a JUnit test case to the contribution that starts Tuscany and launches the contribution. See maven-junit as an example of how to do this.

+ +

embedded-jse

+ +

This directory contains sample java launchers for the some of the Tuscany sample contributions from the learning-more directory. It shows you how to embed the Tuscany runtime in a Java program. To make you're own launchers simply copy and existing one and change the details of the contribution being loaded. You'll note that the same launcher code is used inside the contribution unit test demonstrated by maven-junit.

+ +
+

To use the sample JSE launchers with ant execute the command

+
+
+ant <contributionname>
+
+
+ +

where <contributionname> is one of the targets in the provided build.xml file

+
+ +
+

To use the sample JSE launchers from Maven do the following:

+ +
+
+cd embedded-jse
+mvn
+
+
+

This runs a JUnit test case that runs all the launchers in turn.

+
+ +

embedded-osgi

+ +

The Tuscany runtime jars will also work within an OSGi enviroment. If you want to load them into a vanilla OSGi environment see the osgi directory. If you want Tuscany to create an OSGi environment for you this directory contains launchers that do just that.

+ +
+

To use the sample OSGI launchers with ant do the following:

+ +
+
+cd embedded-osgi
+ant <contributionname>
+
+
+ +

where <contributionname> is one of the targets in the build.xml file

+
+ +
+

To use the sample JSE launchers from Maven do the following:

+ +
+
+cd embedded-osgi
+mvn
+
+
+

This runs a JUnit test case that runs all the launchers in turn.

+
+ +

maven

+ +

Maven can be used to install contributions. Tuscany has a special plugin (maven-tuscany-plugin) that makes this happen. Look for contributions that have the following configuration in their pom.xml file:

+ +
+
+<plugin>
+<groupId>org.apache.tuscany.maven.plugins</groupId>
+<artifactId>maven-tuscany-plugin</artifactId>
+<version>2.0-SNAPSHOT</version>
+</plugin>
+
+
+ +

For contributions that have this, for example, learning-more/binding-sca/contribution-calculator, do the following

+ +

cd samples/learning-more/binding-sca/contribution-calculator
+mvn tuscany:run

+ +

This will install the contribution in the Tuscany runtime, start the composite it contains, and then wait. At this point you can use
+other clients to send messages to services that the running SCA applcation exposes, for example, try learning-more/sca-client/calculator-scaclient.

+ +

maven-junit

+ +

Maven will run JUnit tests found in a module's src/test/java directory automatically. If you use embedded-jse style code in the JUnit test to install a contribution and start any composites it contains they you can unit test your contributions. This directory contains a contribution and a unit test which installs the contribution using very similar code to that found in embedded-jse.

+ +

To run the contributions unit test do the following:

+ +
+
+cd maven-junit/calculator-contribution
+mvn
+
+
+ +

maven-junit-osgi

+ +

You can use a special Tuscany Maven plugin (maven-osgi-junit-plugin) to unit test contributions in a JUnit environment. This relies on adding some configuration to the Maven pom.xml. For example, if you look in maven-junit-osgi/calculator-osgi you'll see:

+ +
+
+            <plugin>
+                <groupId>org.apache.tuscany.maven.plugins</groupId>
+                <artifactId>maven-osgi-junit-plugin</artifactId>
+                <version>1.0</version>
+                <dependencies>
+                   <dependency>
+                      <groupId>org.apache.tuscany.sca</groupId>
+                      <artifactId>tuscany-node-launcher-equinox</artifactId>
+                      <version>${pom.version}</version>
+                   </dependency>
+                </dependencies>
+                <executions>
+                    <execution>
+                        <id>osgi-test</id>
+                        <phase>test</phase>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                        <configuration>
+                            <systemProperties>
+                                <property>
+                                    <name>osgi.configuration.area</name>
+                                    <value>${project.build.directory}/equinox</value>
+                                </property>
+                            </systemProperties>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+
+ +

This configures the maven-osgi-junit-plugin to use the tuscany-node-launcher-equinox to install the contribution represented by the calculator-osgi directory. As an alternative to this configuration you could use the contents of tuscany-node-launcher-equinox directly in your JUnit test to launch the Tuscany runtime using OSGi.

+ +

To run the contributions unit test do the following:

+ +
+
+cd maven-junit/calculator-contribution
+mvn
+
+
+ +

osgi

+ +

The Tuscany runtime can be run in a vanilla OSGi container such as Equinox. To do this you have to:

+ +
    +
  • launch the OSGi container itself
  • +
  • load the Tuscany runtime bundles (all our jars are bundles) into the container
  • +
  • install a contribution packaged as an OSGi bundle
  • +
+ + +

For example, to install a contribution in Equinox do the following

+ +

On Windows, run

+ +
+
+java -jar ..\..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\..\features\configuration -clean -console
+
+
+ +

On *Unix, run

+ +
+
+java -jar ../../../modules/osgi-3.5.0-v20090520.jar -configuration ../../../features/configuration -clean -console
+
+
+ +

You should see the osgi console:

+ +
+
+osgi>
+
+osgi> Jun 22, 2009 1:32:27 PM org.apache.tuscany.sca.extensibility.equinox.EquinoxServiceDiscoveryActivator start
+
+INFO: Equinox-based service discoverer is now configured.
+
+
+
+ +

You can run "ss" command under the osgi> to see the status of the bundles.

+ +
+
+osgi> ss
+
+
+ +

Then you can install and start contributions as bundles by doing the following:

+ +
+
+osgi> install file:./path/to/<contribution_bundle.jar>
+
+
+ +

Note that <contribution_bundle.jar> will need an activator in order to register the bundle as a SCA contribution

+ +

Running on Felix

+ +

See http://tuscany.apache.org/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html

+ + +

shell

+ +

This directory contains a sample shell program supporting simple commands to start and stop SCA composites.

+ +
TODO
We currently have two similar approaches available (see command-line). We need to merge the two together.
+ +

To build the sample shell do this:

+
+
+mvn install
+
+
+

To run it:

+
+
+./sca
+
+
+ +

at the prompt:

+
+
+start myNode ../../applications/store/target/sample-store.jar
+
+
+

or:

+
+
+start myNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar
+
+
+

also try:

+
+
+status
+stop myNode
+bye
+
+
+

Starting and stopping composites is pretty fast. To see that, try the following
+two scripts, which start/stop the sample store composite 10 times.

+
+
+./sca <scripts/test.txt
+
+
+

or

+
+
+./sca <scripts/test-remote.txt
+
+
+ +

The shell can also run as a Webapp. To try it install target/scashell.war in
+a Web container, point your Web browser to http://localhost:8080/scashell
+and try the links on that page.

+ +

webapp

+ +

Tuscany can be embedded inside a webapp alongside one or more SCA contributions. To execute sample webapp based contributions (contributions that have webapp at the end of their name) you can build the contribution using maven and then copy the resulting war file to your container of choice

+ +

For example, for binding-jsonrpc/contribution-calculator-webapp, do the following:

+ +
+
+cd samples/binding-jsonrpc/contribution-calculator-webapp
+mvn
+cp target/sample-contribution-binding-jsonrpc-calculator-webapp.war <your_container_deployment-dir>
+
+
+ +

As an alternative, sample webapp based contributions can be run within Jetty directly from Maven, look for webapp contributions that have the following configuration in their pom.xml file:

+ +
+
+<plugin>
+    <groupId>org.mortbay.jetty</groupId>
+    <artifactId>maven-jetty-plugin</artifactId>
+    <version>6.1.18</version>
+</plugin>
+
+
+ +

For contributions that have this, for example, binding-jsonrpc/contribution-calculator-webapp, do the following

+ +
+
+cd samples/binding-sca/contribution-calculator
+mvn jetty:run
+
+
+ +

This will launch the contribution in the Jetty runtime and then wait. At this point you can use HTTP clients to send messages to services that the running SCA applcation exposes. For this example try pointing your browser at:

+ +
+
+http://localhost:8080/sample-binding-jsonrpc-calculator-webapp/
+
+
+ +

extending-tuscany

+ +

binding-extension

+
TODO
Understand and Document
+ +

implementation-extension

+
TODO
Understand and Document
+ +

applications

+
TODO
Understand and Document
+ +

store

+
TODO
Understand and Document
+ +

store-webapp

+
TODO
Understand and Document
+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/20-release-notes.html b/site/trunk/site-publish/documentation-2x/20-release-notes.html new file mode 100644 index 0000000000..fa3d9b1da2 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/20-release-notes.html @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2.0 Release Notes : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany Docs 2.x > 2.0 Release Notes + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ +

2.0 Release Notes

+ +

The OASIS SCA specification are going to be released around June/July 2009 so we're planning on having a 2.0 release ready at the same time. To help work out what we need to do this is a draft of the release notes:

+ +

Apache Tuscany SCA 2.0 June 2009 Release Notes
+==============================================

+ +

Apache Tuscany provides a runtime based on the Service Component
+Architecture. SCA is a set of specifications aimed at simplifying SOA
+Application Development which are being standardized at OASIS as part
+of Open Composite Services Architecture (Open CSA) - http://www.oasis-opencsa.org/.

+ +

Overview
+--------

+ +

The Apache Tuscany SCA 2.0 release includes implementations of the
+ main SCA specifications including:

+ +

SCA Assembly Model V1.1
+ SCA Policy Framework V1.1
+ SCA Java Common Annotations and APIs V1.1
+ SCA Java Component Implementation V1.1
+ SCA Spring Component Implementation V1.1
+ SCA BPEL Client and Implementation V1.1
+ SCA JMS Binding Specification V1.1
+ SCA Web Services Binding V1.1
+ SCA EJB Session Bean Binding V1.1
+ SCA Java EE Integration Specification V1.1

+ +

It also includes implementations of many features not yet defined
+ by SCA specifications, including:

+ +
    +
  • SCA bindings for CORBA, Direct Web Remoting, RSS and ATOM Feeds,
    + HTTP resources, JSONP, JSON-RPC, Hessian, and RMI.
  • +
  • SCA implementation types for OSGI, XQuery, and various dynamic
    + languages including Groovy, Javascript, Python and Ruby
  • +
  • Databindings for Service Data Objects (SDO), JAXB, XmlBeans,
    + Axis2's AXIOM, JSON, SAXON, XStream, DOM, SAX and StAX
  • +
+ + +

The Tuscany SCA Runtime can be configured as a single node SCA domain or
+ as an SCA domain distributed across multiple nodes.
+ In addition Tuscany SCA supports the following host-deployment options: -

+
    +
  • running standalone in JSE or OSGi
  • +
  • running with distributed nodes across multiple JVMs
  • +
  • running with embedded Jetty or Tomcat
  • +
  • running as a standard web application
  • +
  • running as a module in Geronimo
  • +
+ + +

See the CHANGES file for a detailed list of the features in this release.

+ +

Support
+-------

+ +

For more information on Apache Tuscany visit the website at:

+ +

http://tuscany.apache.org/

+ +

Any issues with this release can be reported to Apache Tuscany
+using the mailing lists or in the JIRA issue tracker.

+ +

Mailing list archives:

+ +

http://mail-archives.apache.org/mod_mbox/ws-tuscany-user/
+ http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev/

+ +

Jira:

+ +

http://issues.apache.org/jira/browse/TUSCANY

+ +

To join the project's mailing lists follow the instructions at:

+ +

http://tuscany.apache.org/mailing-lists.html

+ +

To find out more about OASIS Open CSA go to:

+ +

http://www.oasis-opencsa.org.

+ +

Apache Tuscany welcomes your help. Any contribution, including code,
+testing, improving the documentation, or bug reporting is always
+appreciated.

+ +

Thank you for using Apache Tuscany!

+ +
    +
  • The Tuscany Team.
  • +
+ + +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + diff --git a/site/trunk/site-publish/documentation-2x/classloading.html b/site/trunk/site-publish/documentation-2x/classloading.html new file mode 100644 index 0000000000..aa51c96265 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/classloading.html @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + + Classloading : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > SCA Java Runtime Overview > Classloading + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > SCA Java Runtime Overview > Classloading + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Need to detail the various ways the Tuscany runtime loads classes and the issues involved. Here are some notes to kick of this document

+ +

Classloading Objectives

+ +

The runtime must work in both OSGi and non-OSGI environments. I.e. we can't rely on the OSGi service registry for extensibility
+The runtime must not be generally environment specific. I.e. no buddy classloading
+...

+ +

General Patterns

+ +

Extension loading - JSE

+ +

tuscany-extensibility
+Tuscany finds extensions by looking for META-INF/services files on the classpath.

+ +

Extension loading - OSGi

+ +

tuscany-extensibility-equinox
+It's a bit more complicated here. The extensibility-equinox bundle is given the entire OSGi context at start up and from there is looks in all of the loaded bundles looking for META-INF/services files. It caches them against the bundle in which they are found.

+ +

The tuscany-extensibility-equinox bundle also has a dynamic import

+ +
+
+DynamicImport-Package: org.apache.tuscany.sca.extensibility.equinox,
+ javax.transaction;version="1.1",
+ javax.transaction.xa;version="1.1",
+
+
+ +

Which allows it to generally load any classes in the runtime

+ +

Split Packages - JSE

+ +

We don't take any special account of this in JSE
+We avoid split packages across the JARs we create as it messes OSGi up.

+ +

Split Packages - OSGI

+ +

We avoid split packages across the bundles we create
+They may exist in third party bundles (or jars that we turn into bundles) so we need a way round it

+ +

The Tuscany eclipse plugin is used to generate bundles manifest for jars which don't have them. This is done automatically with all packages exported and the resulting bundle it in the distribution modules directory in the following form

+ +
+
+bundle-name
+  META-INF
+     MANIFEST.MF
+  bundle-name.jar
+
+
+ +

The MANIFEST.MF is generated and will have a bundle classpath pointing to the jar (which doesn't itself have a manifest

+ +

The runtime (node-launcher-equinox) has code to load these directories as bundles.

+ +

There is a way of overriding these automatically generated bundles so that split packages (or any other manifest problems) can be worked round. Generate the manifest manually and put it in

+ +
+
+distribution/all/manifests
+
+
+ +

Update distribution/pom.xml to configure the Tuscany version of the maven bundle plugin to apply this manifest

+ +
+
            <plugin>
+                <groupId>org.apache.tuscany.maven.plugins</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>1.0.6</version>
+                <executions>
+                    <execution>
+                        <id>distribution-modules</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                             <goal>generate-modules</goal>
+                        </goals>
+                        <configuration>
+                             <targetDirectory>target/modules</targetDirectory>
+                             <useDistributionName>${useDistributionName}</useDistributionName>
+                             <generateAggregatedBundle>${generateAggregatedBundle}</generateAggregatedBundle>
+                             <generateManifestJar>true</generateManifestJar>
+                             <artifactManifests>
+                                 <artifactManifest>
+                                     <groupId>org.apache.ws.commons.axiom</groupId>
+                                     <artifactId>axiom-api</artifactId>
+                                     <version>1.2.8</version>
+                                     <manifestFile>${basedir}/manifests/axiom-api-1.2.8.MF</manifestFile>
+                                 </artifactManifest>
+                                 <artifactManifest>
+                                     <groupId>org.apache.woden</groupId>
+                                     <artifactId>woden-impl-dom</artifactId>
+                                     <version>1.0M8</version>
+                                     <manifestFile>${basedir}/manifests/woden-impl-dom-1.0M8.MF</manifestFile>
+                                 </artifactManifest>
+                                 <!--artifactManifest>
+                                     <groupId>org.apache.tuscany.sdo</groupId>
+                                     <artifactId>tuscany-sdo-api-r2.1</artifactId>
+                                     <version>1.1.1</version>
+                                     <manifestFile>${basedir}/manifests/tuscany-sdo-api-r2.1-1.1.1.MF</manifestFile>
+                                 </artifactManifest-->
+                                 <!-- artifactAggregations (below) is the right approach to solving the split
+                                      package between axis-kernel and axis2-transport-http however the Tuscany
+                                      runtime doesn't take any notice of it so using a fragment at the moment -->
+                                 <artifactManifest>
+                                     <groupId>org.apache.axis2</groupId>
+                                     <artifactId>axis2-kernel</artifactId>
+                                     <version>1.5.1</version>
+                                     <manifestFile>${basedir}/manifests/axis2-kernel-1.5.1.MF</manifestFile>
+                                 </artifactManifest>
+                                 <artifactManifest>
+                                     <groupId>org.apache.axis2</groupId>
+                                     <artifactId>axis2-transport-http</artifactId>
+                                     <version>1.5.1</version>
+                                     <manifestFile>${basedir}/manifests/axis2-transport-http-1.5.1.MF</manifestFile>
+                                 </artifactManifest>
+                                 <artifactManifest>
+                                     <groupId>org.apache.axis2</groupId>
+                                     <artifactId>*</artifactId>
+                                     <version>*</version>
+                                 </artifactManifest>
+                             </artifactManifests>
+                             <!--artifactAggregations>
+                                  <artifactAggregation>
+                                      <symbolicName>org.apache.tuscany.sca.axis2-kernel</symbolicName>
+                                      <version>1.5.1</version>
+                                      <artifactMembers>
+                                          <artifactMember>
+                                              <groupId>org.apache.axis2</groupId>
+                                              <artifactId>axis2-kernel</artifactId>
+                                              <version>1.5.1</version>
+                                          </artifactMember>
+                                          <artifactMember>
+                                              <groupId>org.apache.axis2</groupId>
+                                              <artifactId>axis2-transport-http</artifactId>
+                                              <version>1.5.1</version>
+                                          </artifactMember>
+                                      </artifactMembers>
+                                  </artifactAggregation>
+                              </artifactAggregations-->
+                        </configuration>
+                    </execution>
+                </executions>
+                <dependencies>
+                   <dependency>
+                      <groupId>org.eclipse</groupId>
+                      <artifactId>osgi</artifactId>
+                      <version>3.3.0-v20070530</version>
+                   </dependency>
+                </dependencies>
+            </plugin>
+
+
+ +

You'll note that there is an artifact aggregation element that doesn't work at the moment. This should aggregate the two bundles together so that a split package isn't an issue. As this doesn't work at the moment another way to achieve the same result is to make one package a fragement of the other by configuring separate manifests manually.

+ +

NOTE!!!!! you also need to put the manually generated manifest in node-launcher-equinox\src\main\resources\org\apache\tuscany\sca\node\equinox\launcher otherwise you'll spend a lot of time trying to get this to work. (we need to fix this!)

+ +

Third-party libraries - JSE

+ +

TBD

+ +

Third-party libraries - OSGI

+ +

Third-party libraries often rely on TCCL to load implementation classes in an extensible way. For example, the SDO API loads the HelperContext implementation in this way. In an OSGi environment there will not be a static dependency between the api bundle and the impl bundle so we need to fake it. Typically we do this by setting up the TCCL appropriately before the library us called.

+ +

See ClassLoaderContext which help us to set up a multi-classloader configurations.

+ +

Typically in OSGi one of the classloaders we pass in here will be the extensibiliy-equinox bundle classloader (the ServiceDiscoverer) as this bundles has a dynamic import which allows it to load any class in the runtime.

+ + +

Tuscany Node API - JSE

+ +

TBD

+ +

Tuscany Node API - OSGi

+ +

There are a small number of Tuscany Jars you need to use in the app launcher in the OSGi environment

+ +

tuscany-sca-api
+tuscany-node-api
+tuscany-node-launcher-equinox

+ +

The node API has to load the node implementation and has a dynamic import in its manifest

+ +

DynamicImport-Package: org.apache.tuscany.sca.node.impl,org.apache.tuscany.sca.extensibility

+ + + +

SCA Client API - JSE

+ +

Factory finder impl is injected into the API class by the implementation

+ +

SCA Client API - OSGi

+ +

NodeFactory maintains a NodeProxy inner class that supports cross-classloader calls. The calling client api will have been loaded by the app classloader but the underlying node will have been loaded by a bundle classloader. We need to bridge that gap.

+ +

Contribution Class Loading

+ +

When a contribution is read, containing an implementation.java element, a ClassReference is instantiated, which contains the name of the class. ClassReference instances are resolved by a ClassLoaderModelResolver, by virtue of the entry in [2]

+ +

The ClassLoaderModelResolver (CLMR) specializes java.net.URL.URLClassLoader and implements o.a.t.s....ModelResolver. Each contribution is associated with a single CLMR . On construction the CLMR is endowed with a set of URLs that allow it to find all classes in its contribution via the URLClassLoader behaviour.

+ +

The itest project import-export-tests has a class TestTestCase with method testOneNode which demonstrates a more complex scenario where a cross contribution import/export of a java package exists between the contributions.  In this example a node is created using 2 composite URIs for contributions ... "../exports/target/classes", "../imports/target/classes". An imported class is resolved using the CLMR of the exporting contribution.  The exporter's CLMR is made available to the importing CLMR by deployment [1] code which traverses all contributions, identifying cross contribution dependencies (see buildDependencies at [1])  and using the set of remaining contributions to resolve the import, potentially more than once.

+ +

[1http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java?view=markup&pathrev=948564|http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java?view=markup&pathrev=948564]

+ +

[2] http://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/contribution/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver

+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-applications.html b/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-applications.html new file mode 100644 index 0000000000..2540d77245 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-applications.html @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + Converting Tuscany 1.x Applications : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > Converting Tuscany 1.x Applications + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > Converting Tuscany 1.x Applications + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

under construction

+

Overview

+

There are not huge differences in the SCA that Tuscany 1.x implements (OSOA v1.0) and the SCA that Tuscany 2.x implements (OASIS v1.1). However there are detailed differences that you need to be aware of in SCA and in the Tuscany runtime in order to get your 1.x application to work in 2.x.

+ +

Converting composites and other SCA XML artifacts

+

Namespaces

+

The SCA and Tuscany namespaces may be used in the following files

+ +
    +
  • *.composite
  • +
  • sca-contribution.xml
  • +
  • defintions.xml
  • +
+ + +

Each occurrence needs changing for 2.x

+ + + + +

Features

+

Features that are in 1.x but not in 2.x

+ +
    +
  • Support for conversational interfaces
    +-
  • +
+ + +

Features that are in 2.x but not in 1.x

+ +
    +
  • Asynchronous reference and service APIs
  • +
  • +
+ + +

Building and launching contributions

+

Converting dependencies

+ +

You need to re-configure the project pom.xml

+ +
+ + + + + + + + + + + +
1.x Dependencies   2.x Dependencies
<dependency>
+<groupId>org.apache.tuscany.sca</groupId>
+<artifactId>tuscany-assembly</artifactId>
+<version>1.6-SNAPSHOT</version>
+</dependency>
===> <dependency>
+<groupId>org.apache.tuscany.sca</groupId>
+<artifactId>tuscany-assembly</artifactId>
+<version>2.0-SNAPSHOT</version>
+</dependency>
+
+ + +

TODO - need to note what the final Tuscany feature grouping solution is for 2.x

+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html b/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html new file mode 100644 index 0000000000..152bf98fdc --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html @@ -0,0 +1,486 @@ + + + + + + + + + + + + + + + Converting Tuscany 1.x Extensions : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > Converting Tuscany 1.x Extensions + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > Converting Tuscany 1.x Extensions + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Converting 1.x dependencies

+ +

You should configure the project pom.xml and

+ +
+ + + + + + + + + + + +
1.x Dependencies   2.x Dependencies
<dependency>
+<groupId>org.apache.tuscany.sca</groupId>
+<artifactId>tuscany-assembly</artifactId>
+<version>1.6-SNAPSHOT</version>
+</dependency>
===> <dependency>
+<groupId>org.apache.tuscany.sca</groupId>
+<artifactId>tuscany-assembly</artifactId>
+<version>2.0-SNAPSHOT</version>
+</dependency>
+
+ + +

The following core modules are not ported yet :

+ +
    +
  • some policies
  • +
+ + +

The following modules are deprecated :

+ +
    +
  • host-embedded +
      +
    • use the new Node APIs
    • +
    +
  • +
+ + +

Converting Composites and other SCA XML Artifacts

+ + + + +

Generating OSGi Manifest

+ +

Configure pom to use Apache Felix maven-bundle-plugin

+ +
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+
+                <configuration>
+                    <instructions>
+                        <Bundle-Version>${tuscany.version}</Bundle-Version>
+                        <Bundle-SymbolicName>org.apache.tuscany.sca.binding.atom</Bundle-SymbolicName>
+                        <Bundle-Description>${pom.name}</Bundle-Description>
+                        <Export-Package>org.apache.tuscany.sca.binding.atom*</Export-Package>
+                        <Import-Package>org.apache.tuscany.sca.assembly.xml;version="2.0.0", *</Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+
+
+ +

Generate the manifest

+ +
+
+mvn org.apache.felix:maven-bundle-plugin:manifest
+
+
+ +

Copy the generated manifest from target folder to

+ +
+
+<module-root>/META_INF/manifest.mf
+
+
+ +

Add manifest to source control

+ +
+
+git add META-INF
+or
+svn add META-INF
+
+
+ +

Make any manual modifications as necessary

+ +

Converting your extension model

+ +

Your extension model needs to provide a new getType method

+ +
+
+public interface AtomCBinding extends Binding {
+   QName TYPE = new QName(SCA11_TUSCANY_NS, "binding.atom");
+   ...
+}
+
+public class AtomBindingImpl implements AtomBinding {
+   private String name;
+   private String uri;
+
+   public QName getType() {
+	return TYPE;
+   }
+
+    ...
+}
+
+
+ +

Converting Artifact Processors

+ +

Make sure you update your META-INF\services\org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor with new namespace and any other necessary changes to reflect the current 2.x structure.

+ +

Converting you Binding runtime artifacts

+ +

Provider Factory

+ +
    +
  • The provider factory interface has changed to accommodate the new Endpoint/EndPointReference support +
      +
    • Although the interface has changed, all the previous available information are encapsulated and available from the Endpoint and EndpointReference object
    • +
    +
  • +
+ + + +
+
+public interface BindingProviderFactory<M extends Binding> extends ProviderFactory<M> {
+
+    /**
+     * Creates a new reference binding provider for the given endpoint reference
+     *
+     * @param endpointReference defines the component/reference/binding against which to create the provider
+     * @return The binding provider
+     */
+    ReferenceBindingProvider createReferenceBindingProvider(EndpointReference endpointReference);
+
+    /**
+     * Creates a new service binding provider for the given component and
+     * service.
+     *
+     * @param endpoint defines the component/service/binding against which to create the provider
+     * @return The binding provider
+     */
+    ServiceBindingProvider createServiceBindingProvider(Endpoint endpoint);
+
+}
+
+
+ +
    +
  • If you are using ModelFactoryExtensionPoint, it was renamed to FactoryExtensionPoint
  • +
+ + + +
+
+FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+
+
+ + +

ReferenceBindingProvider and ServiceBindingProvider

+ +

The previous SCA Models that were previously passed directly to these SPIs, is now available via Endpoint and EndpointReference as described in the code below:

+ +
+
+public class AtomReferenceBindingProvider implements ReferenceBindingProvider {
+
+    private RuntimeComponentReference reference;
+    private AtomBinding binding;
+
+    public AtomReferenceBindingProvider(EndpointReference endpointReference,
+                                        AtomBinding binding) {
+
+    	this.reference = (RuntimeComponentReference) endpointReference.getReference();
+        this.binding = (AtomBinding) endpointReference.getBinding();
+    }
+
+    ...
+}
+
+public class AtomServiceBindingProvider implements ServiceBindingProvider {
+
+
+    private MessageFactory messageFactory;
+
+    private Endpoint endpoint;
+    private RuntimeComponent component;
+    private RuntimeComponentService service;
+    private InterfaceContract serviceContract;
+    private AtomBinding binding;
+    private ServletHost servletHost;
+
+    ...
+
+    public AtomServiceBindingProvider(Endpoint endpoint,
+                                         MessageFactory messageFactory,
+                                         ServletHost servletHost) {
+        this.endpoint = endpoint;
+        this.component = (RuntimeComponent)endpoint.getComponent();
+        this.service = (RuntimeComponentService)endpoint.getService();
+        this.binding = (AtomBinding) endpoint.getBinding();
+        this.messageFactory = messageFactory;
+        this.servletHost = servletHost;
+
+    }
+
+    ....
+
+
+
+ +

Converting you Implementation runtime artifacts

+ +
+
+...
+
+
+ +

Converting test cases

+ +

In 2.x we removed the Host-Embedded module and the SCADomain, and the recommended way is to use the Node SPI to build your test cases. We also are recommending using JUnit 4.5 test styles. See below a quick

+ +

1.x Style

+
+
+public class AtomTestCase {
+
+	private SCADomain domain;
+
+	@Before
+	public void setUp() throws Exception {
+		domain = SCADomain.newInstance("AtomBinding.composite");
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		domain.close();
+	}
+
+        ....
+}
+
+
+ +

2.x Style

+
+
+public class AtomTestCase {
+
+	private static Node node;
+
+	@BeforeClass
+	public static void setUp() throws Exception {
+	    try {
+                // use the contribution helper to find the location of the contribution directory
+                // based on a class that is know to be in the contribution
+    		String contribution = ContributionLocationHelper.getContributionLocation(AtomTestCase.class);
+
+                // create a note to load the contribution and run the named composite
+    		node = NodeFactory.newInstance().createNode("AtomBinding.composite", new Contribution("test", contribution));
+
+                // as an alternative to using the helper you can of course specify the location of the
+                // contribution directly, for example,
+                //
+                // node = NodeFactory.newInstance().createNode(new Contribution("test",
+                //                                             "my/directory/structure/atom-contribution.zip"));
+                //
+                // Note also that no composite is named here. It is assumed that the contribution
+                // specifies a deployable composite in the sca-contribution.xml file
+
+                // start the node to make SCA services available
+    		node.start();
+    	    } catch (Exception e) {
+    		e.printStackTrace();
+    	    }
+	}
+
+	@AfterClass
+	public static void tearDown() throws Exception {
+	    node.stop();
+    	    node.destroy();
+	}
+
+        ...
+}
+
+
+ +

NOTE You will need to add the node-impl as test dependency to your modules

+
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-node-impl</artifactId>
+            <version>2.0-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+
+
+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/create-signing-key.html b/site/trunk/site-publish/documentation-2x/create-signing-key.html new file mode 100644 index 0000000000..bdbbb23108 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/create-signing-key.html @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + Create Signing Key : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Making Releases > Create Signing Key + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Making Releases > Create Signing Key + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

+
Unable to render {include} Couldn't find a page to include called: Menus
+ +

Create a code signing key

+ +

Install GNU GPG

+ +

Create a gpg config file eg c:\gpg\conf\gpg.conf with the following contents:

+
+
+utf8-strings
+keyserver x-hkp://pgp.surfnet.nl/
+default-cert-check-level 3
+keyserver-options auto-key-retrieve include-subkeys
+no-mangle-dos-filenames
+no-secmem-warning
+
+
+ +

Set the GNUPGHOME environment var to point to that: set GNUPGHOME=\gpg\conf

+ +

gpg --gen-key

+ +

accept all defaults, use your apache email and a comment like "Code Signing Key", eg:

+ +

Real name: Ant Elder
+Email address: antelder@apache.org
+Comment: Code Signing Key

+ +

Use long hard to guess passphrase with numbers and miss spellings etc

+ +

now should be able to show that key with: gpg --list-keys

+ +

C:\>gpg --list-keys
+/gpgtest/conf\pubring.gpg
+-------------------------
+pub 1024D/481240F5 2007-06-28
+uid Ant Elder (Code Signing Key) <antelder@apache.org>
+sub 2048g/F6F122B8 2007-06-28

+ +

Upload that to a key server using the keyid, eg gpg --send-key 481240F5

+ +

Now if you go to http://pgp.surfnet.nl/ you should be able to search for you name and find the uploaded key

+ + +

Add this key to the KEYS file in the Tuscany SVN: https://svn.apache.org/repos/asf/incubator/tuscany/KEYS
+eg, check out the KEYS file then update with:

+ +

(gpg --list-sigs antelder@apache.org && gpg --armor --export antelder@apache.org) >> KEYS

+ + + + + + +
+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Enablement for Tuscany.ppt b/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Enablement for Tuscany.ppt new file mode 100644 index 0000000000..6a5f78362a Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Enablement for Tuscany.ppt differ diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Remote Services with Tuscany SCA.ppt b/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Remote Services with Tuscany SCA.ppt new file mode 100644 index 0000000000..5714aaa4a3 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Remote Services with Tuscany SCA.ppt differ diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany 2.x Extensibility and SPIs.ppt b/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany 2.x Extensibility and SPIs.ppt new file mode 100644 index 0000000000..1a162041bf Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany 2.x Extensibility and SPIs.ppt differ diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany SCA Domain Node.odp b/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany SCA Domain Node.odp new file mode 100644 index 0000000000..60ab97bd3f Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany SCA Domain Node.odp differ diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg new file mode 100644 index 0000000000..a0b9c3c248 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg.jpeg new file mode 100644 index 0000000000..899edcb286 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/development-guides.html b/site/trunk/site-publish/documentation-2x/development-guides.html new file mode 100644 index 0000000000..0a4efceaa7 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/development-guides.html @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + Development Guides : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+
SCA Java Runtime Overview
+

Runtime Overview This guide explains various pieces of the Java SCA Runtime, the module structure, and the internals of the runtime.

+
+ +
SCA Java Development Guide
+

Development Guide This guide explains how to checkout the Java SCA 2.x source code, build it and how to contribute code back to the project.

+
+ + +
OSGi Aware Programming in Tuscany
+

OSGi Aware Programming in Tuscany This guide shows the Tuscany developer how to write code and extension code that would comply to some of the OSGi modularity concepts

+ +

OSGi Enablement for Tuscany Runtime This guide shows the Tuscany developer how to OSGi enable the Tuscany runtime.

+
+ +
Other...
+

Running Tuscany SCA 2.x with Equinox and Felix This guide shows the Tuscany developer how to start a Tuscany application on the Equinox or Felix OSGi runtime.

+ +

Converting Tuscany 1.x Extensions This guide shows the Tuscany developer how to convert 1.x extensions to 2.x

+ +

Converting Tuscany 1.x Applications This guide shows the Tuscany application developer how to convert 1.x applications to 2.x

+ +

Logging, Tracing and Timing in Tuscany 2.X

+
+ + +
+ +
+ Children + + Show Children + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/extension-reference.html b/site/trunk/site-publish/documentation-2x/extension-reference.html new file mode 100644 index 0000000000..8912704558 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/extension-reference.html @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + Extension Reference : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Extension Reference + + Tuscany Home|User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Tuscany Extensions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Release Introduced OASIS Spec Status Description
implementation.java 2.0-M1 Pass Stable Support for SCA components implemented with Java classes
implementation.spring 2.0-M3   ? Support for Spring Framework
implementation.bpel 2.0-M1   Stable Support for components implemented in BPEL
implementation.osgi   N/A Stable Support for osgi
implementation.widget   N/A Work in progress  
implementation.web 2.0-M4
  ? Support JEE web apps as implementation types
binding.ws 2.0-M1   Stable SOAP/HTTP web services
binding.rmi 2.0-M1   Stable The Java RMI protocol
binding.jms 2.0-M4
  ? Asynchronous JMS messaging
binding.ejb 2.0-M4
  ? EJB Binding
binding.http 2.0-M4   ? Supports binding of methods over standard Hyper Text Transfer Protocol (HTTP), allowing you to create, retrieve, update, delete items. Also supports conditional creates, retrieves, updates, and deletes using the ETag and LastModified caching protocol described in HTTP.
binding.jsonp ? N/A ? The JSON protocol over HTTP
binding.jsonrpc 2.0-M4 N/A Stable The JSON-RPC protocol
binding.atom 2.0-M4 N/A Stable supports Atom-publishing protocol, allowing you to create, retrieve, update, delete Atom entries
databinding-axiom ? N/A Stable Support for AXIOM data binding
databinding-jaxb ? N/A Stable Support for JAXB data binding
databinding-json 2.0-M4
N/A Stable Support for JSON data binding
interface-java 2.0-M1   Stable Interfaces described with java interfaces
interface.wsdl 2.0-M1   Stable Interfaces described with WSDL definitions
http-jetty 2.0-M2
N/A Stable The integration between Tuscany and the Jetty web container
definitions.xml 2.0-M4
  Work in Progress Defined intents, policy sets and binding defaults
+
+
+
+
+ + + + + website stats + + + + diff --git a/site/trunk/site-publish/documentation-2x/get-hold-of-rat.html b/site/trunk/site-publish/documentation-2x/get-hold-of-rat.html new file mode 100644 index 0000000000..9901ba89f1 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/get-hold-of-rat.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + Get hold of RAT : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Making Releases > Get hold of RAT + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Making Releases > Get hold of RAT + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Download the latest release from http://incubator.apache.org/rat/ (It's moved back to Apache incubation now).

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/getting-started.html b/site/trunk/site-publish/documentation-2x/getting-started.html new file mode 100644 index 0000000000..8c91fb666b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/getting-started.html @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + Getting Started : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Getting Started + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Getting Started + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+
In Progress
+ +

(start with notes and then turn it into more eloquent text)

+ +

Tuscany runs SCA contributions.
+An SCA contribution is something like a zip, jar, or folder.
+To run SCA contributions you start a Tuscany runtime and tell it about the contributions.
+(need something about domains)

+ +

As a very quick example, go to samples/helloworld and do mvn tuscany:run will to the helloworld contribution in a Tuscany runtime

+ +

Ways to create a Tuscany runtime:
+-mvn tuscany:run
+-ant run
+-tuscany.bat/tuscany.sh
+-Nodefactory.newInstance
+-webapp embedded
+-webapp shallow integration
+-tomcat deep integration

+ +

A Tuscany runtime may be standalone or distributed. A standalone runtime knows only about the contributions in that one runtime instance, a distributed runtime also knows about contributions in runtimes which may be in other JVMs and/or machines. By default the runtime created using NodeFactory.newInstance or webapp embedded will run in standalone mode, all the others by default start in distributed mode.

+ +

You can configure the Tuscany runtime by passing in configuration properties when creating the runtime. When creating the runtime programatically you can use a Java Properties object, otherwise you can use a config uri string. The uri string has the following formats:
+properties:<url to a properties file>
+uri:<defaultDomainName>?propertyName=value&propertyName=value&...

+ + + + + +
+ +
+ Children + + Show Children + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/glossary.html b/site/trunk/site-publish/documentation-2x/glossary.html new file mode 100644 index 0000000000..20f19001c8 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/glossary.html @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + Glossary : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Glossary + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Glossary + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Term description
contribution an SCA term for a deployable package of artifacts that contribute to an application (see also SCA Introduction)
launcher A tuscany term for a program used to start Tuscany in situations where the environment doesn't provide a main() program. For example, a launcher is not required for a webapp, since the container provides the main()
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
+
+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/index.html b/site/trunk/site-publish/documentation-2x/index.html new file mode 100644 index 0000000000..a0cd7f2a15 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/index.html @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + Index : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+
Getting Started with Tuscany
+

Getting Started These guides help you to get setup in Tuscany, develop and run a simple application using comand line or Eclipse.

+
+ +
SCA Introduction
+

SCA Introduction Provides a quick introduction to SCA and links to the SCA Specifications.

+
+ +
Tuscany Samples
+

SCA Samples A description of the Tuscany SCA sample contributions

+
+ +
SCA Java Extensions Guide
+

SCA Java Extensions Guide Provides a guide for all the SCA Java and Tuscany extensions.

+
+ +
Development Guides
+

Development Guides These guides help you learn more about Tuscany architecture and how to get involved in the development of Tuscany. We look forward to your help.

+
+
+ +
+ Children + + Show Children + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/logging-tracing-and-timing.html b/site/trunk/site-publish/documentation-2x/logging-tracing-and-timing.html new file mode 100644 index 0000000000..2f555cf79e --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/logging-tracing-and-timing.html @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + Logging, Tracing and Timing : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > Logging, Tracing and Timing + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > Logging, Tracing and Timing + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Tuscany Logging, Tracing, Timing Information in Tuscany 2.X

+ +

This page describes the logging, tracing, and timing features of Tuscany. These features can be used to debug problems with the Tuscany runtime, understand code flow, and provide timing metrics for competitive analysis or performance claims.

+ +

Java Logging versus Aspect Oriented Programming (AOP) Approach

+ +

There are two types of logging embeded in the Tuscany runtime: explicit and implicit. The explicit logging is implemented by the Java 2 SE core logging facilities such as java.util.logging.Logger. This is the logging that many Java programmers are familiar with, and the logging requires calls to the Logger programming interface. Throughout the Tuscany code base you see calls to this facility such as this call in Tuscany org.apache.tuscany.sca.node.launcher.NodeLauncher.

+
Java Logging in Tuscany
+
        logger.info("Apache Tuscany SCA Node is starting...");
+
+
+

Calls to this facility by default go to the standard output of the program. This is the typical result that one sees in the console:

+
Java Logging Output
+
INFO: Apache Tuscany SCA Node is starting...
+
+
+

The Java SE core logging works well as a general purpose logger and gives a general idea of the important phases in the Tuscany runtime. However, one drawback is that this logging system only publishes predetermined messages created by the developers. If you wish to change the logging points, you must change the Tuscany source code, build, and run again with your private code base.

+ +

Another logging and tracing facility is available in Tuscany that gives the user a bit of flexibility in what gets logged and requires no source code modifications to run. This is an Aspect Oriented Programming (AOP) approach that runs via a Java agent at runtime. Just like a debugger can start and stop and inspect a Tuscany Java program, so too can an AOP agent inspect and report on a Tuscany Java program. Tuscany employs the AspectJ implementation, and its runtime agent is contained in the aspectjweaver.jar file. The AOP agent is specified from a command line option or runtime options:

+
Java AOP Agent
+
java -javaagent:"<path to aspectjweaver.jar>" calculator.CalculatorClient
+
+
+

The AOP logging and tracing agent can be run with any Tuscany program. No additional calls or log statements need be added to the Tuscany code. The results of running a timing for example, look like this:

+
Tuscany AOP Output
+
Running org.apache.tuscany.sca.aspectj.TracingTestCase
+Timing Around timedSection jp=call(void java.util.logging.Logger.info(String))
+Oct 21, 2008 9:26:36 AM org.apache.tuscany.sca.aspectj.TracingTestCase info_aroundBody0
+Timing Around timedSection Roundtrip is 32ms for jp.getSignature=void java.util.logging.Logger.info(String)
+
+
+

Full documentation on AspectJ is available at the AspectJ web site. Tuscany provides example usage in the module tracing-aspectj in the build tree and the released code.

+ +

Brief Apect Oriented Programming Introduction

+ +

In order to understand the aspect oriented approach to logging in Tuscany, one must understand a few basic concepts.

+ +

A join point is well defined point in the program flow. An example join point is the entry to a Java method. Another is after an exception is thrown. These join points contain useful information when running a program such as the argument list, the call stack, and the signature of the point that is executing.

+ +

A point cut is a subset of all the program join points. For instance, a point cut might be only the join points from exceptions thrown by the Tuscany runtime. Or only the set of calls to a Tuscany API org.apache.tuscany.sca.node.launcher.NodeLauncher.

+ +

Advice is the code that is run when a point cut is reached. For instance, your advice might want to print out all the arguments when entering a given method. Or your advice might show the call stack of an exception and print the original cause of the exception.

+ +

Finally, an aspect is a module that bundles up a particular set of point cuts and advice. Here is an example aspect that is marked with Java 5 annotations. The name of the aspect is LoggingAspect, there is a point cut defined at Tuscany calls to org.apache.tuscany.sca.* classes (but not inside of Aspect classes), and when the point cut is run, the advice for this point cut prints out the join point signature.

+
Example Aspect
+
@Aspect
+public class LoggingAspect {
+    @Pointcut("call(* org.apache.tuscany.sca..*(..)) && (!within(org.apache.tuscany.sca.aspectj.*Aspect))")
+    public void anyMethodCall() {
+    }
+
+    @Before("anyMethodCall()")
+    public void before(JoinPoint jp) {
+        System.out.println("Logging Before anyMethodCall jp.getSignature=" + jp.getSignature());
+    }
+}
+
+
+

Full explanation of these concepts are in the AspectJ documents. The purpose here is to provide enough information to allow a user to run or modify the Tuscany aspects to one's liking.

+ +

Logging and Tracing in Tuscany

+ +

Following the approach of AspectJ, Tuscany provides two concrete aspects for logging and tracing. org.apache.tuscany.sca.aspectj.LoggingAspect provides logging for methods, constructors, and static initializers in Tuscany. org.apache.tuscany.sca.aspectj.SimpleTracingAspect provide tracing into user methods, constructors, and static initializers. Both provide detailed information when an Exception or Throwable is thrown by the Tuscany runtime or user SCA program.

+ +

Both LoggingAspect and SimpleTracingAspect are run by naming the AspectJ runtime agent aspectjweaver.jar at launch. This is shown in the command line example above, and an example is provided in launcher.bat in the tracing-aspectj module, and a further example is provded by running the command "ant runtraced" on the calculator sample in a binary distribution.

+ +

The runtime configuration file aop.xml has references to these aspects. Uncomment one or both of these in aop.xml to run with this logging enabled. Following is an example logging run with the verbose weaver option specified. Note the verbose output of class names, build times, etc. The logging statements too are quite verbose stating the name of the join point, the point cut, and various signatures and arguments.

+
Example Logging in Tuscany
+
[INFO] Configured Artifact: org.aspectj:aspectjweaver:1.6.1:jar
+[INFO] Copying aspectjweaver-1.6.1.jar to E:\t\java\sca\modules\tracing-aspectj\target\dependency\aspectjweaver-1.6.1.jar
+[AppClassLoader@92e78c] info AspectJ Weaver Version 1.6.1 built on Thursday Jul 3, 2008 at 18:35:41 GMT
+[AppClassLoader@92e78c] info register classloader sun.misc.Launcher$AppClassLoader@92e78c
+[AppClassLoader@92e78c] info using configuration /E:/t/java/sca/modules/tracing-aspectj/target/classes/META-INF/aop.xml
+[AppClassLoader@92e78c] info register aspect org.apache.tuscany.sca.aspectj.LoggingAspect
+[AppClassLoader@92e78c] info define aspect org.apache.tuscany.sca.aspectj.UserTimingAspect
+
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Logging Before anyMethodCall jp.getSignature=SCANodeFactory org.apache.tuscany.sca.node.SCANodeFactory.newInstance()
+Logging Before anyConstructor jp.getSignature=org.apache.tuscany.sca.extensibility.ServiceDiscovery()
+Logging Before anyConstructor jp.getSignature=org.apache.tuscany.sca.extensibility.ServiceDiscovery.1(ServiceDiscovery, Class)
+Logging Before anyConstructor jp.getArgs=[org.apache.tuscany.sca.extensibility.ServiceDiscovery@ceb6dd,
+   class org.apache.tuscany.sca.node.SCANodeFactory]
+Logging Before anyMethodCall jp.getSignature=ServiceDiscoverer org.apache.tuscany.sca.extensibility.ServiceDiscovery.getServiceDiscoverer()
+Logging Before anyConstructor jp.getSignature=org.apache.tuscany.sca.extensibility.ContextClassLoaderServiceDiscoverer()
+Logging AfterReturning anyMethodCall jp=call(ServiceDiscoverer org.apache.tuscany.sca.extensibility.ServiceDiscovery.getServiceDiscoverer()),
+   result=org.apache.tuscany.sca.extensibility.ContextClassLoaderServiceDiscoverer@17574b9
+Logging Before anyMethodCall jp.getSignature=Set org.apache.tuscany.sca.extensibility.ServiceDiscoverer.discover(String, boolean)
+Logging Before anyMethodCall jp.getArgs=[org.apache.tuscany.sca.node.SCANodeFactory, true]
+
+
+

These aspects provide static point cuts and advice. That is, the various methods, constructors, and exception points are constrained by the source code of the aspects. You can change these items via editing LoggingAspect or SimpleTracingAspect and rerunning the application.

+ +

Timing

+ +

Timing of various calls is also available via the AOP logging and tracing facility in Tuscany. The apsect UserTimingAspect is provided to time certain point cuts. As shown above, this AOP timing feature can be used for timing metrics for competitive analysis of performance gauges. The output of the timing is shown here, as a Logger.info method is called and timed.

+
Tuscany AOP Timing Output
+
Running org.apache.tuscany.sca.aspectj.TracingTestCase
+Timing Around timedSection jp=call(void java.util.logging.Logger.info(String))
+Oct 21, 2008 9:26:36 AM org.apache.tuscany.sca.aspectj.TracingTestCase info_aroundBody0
+Timing Around timedSection Roundtrip is 32ms for jp.getSignature=void java.util.logging.Logger.info(String)
+
+
+

Unlike LoggingAspect and SimpleTracingAspect, the pointcut for UserTimingAspect is settable at runtime via the aop.xml runtime configuration file. Look for the UserTimingAspect name, and note the expression in the pointcut element. You may change the name of expression to any valid AspectJ pointcut expression. Here calls to any Logger.info methods, regardless of arguments or return types are logged. For instance you may change this to "call( * calculator.CalculatorServiceImpl.multiply(..))" to time calls in your SCA application.

+
Dynamic PointCut for UserTimingAspect
+
        <concrete-aspect name="org.apache.tuscany.sca.aspectj.UserTimingAspect"
+           extends="org.apache.tuscany.sca.aspectj.TimingAspect"
+           precedence="org.apache.tuscany.sca.aspectj.UserTimingAspect, *">
+           <pointcut name="timedCall"
+              expression="call(* java.util.logging.Logger.info(..))"/>
+        </concrete-aspect>
+
+
+ +

Logging and Tracing in Alternate Containers

+ +

So far this article discussed logging and tracing for Tuscany applications. Often Tuscany applications are run standalone in a Java 2 SE environment. You can also turn on logging and tracing in various application servers that support Tuscany SCA applications.

+ +

Apache Tomcat Example

+ +

Show Apache Tomcat J2EE application server plus Tuscany bundled SCA application.

+ +

WebSphere Example

+ +

Show WebSphere 7.0.0.1 plus SOA Feature Pack based on Tuscany output.

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/making-releases.html b/site/trunk/site-publish/documentation-2x/making-releases.html new file mode 100644 index 0000000000..7afa58581f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/making-releases.html @@ -0,0 +1,718 @@ + + + + + + + + + + + + + + + Making Releases : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Making Releases + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Making Releases + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ + +
+
Unable to render {include} Couldn't find a page to include called: Menus
+ +

Getting Ready

+ +

Setting up ssh

+ +

Create Signing Key

+ +

Get hold of RAT

+ +

Useful Resources

+ +

Incubator release best practice
+Incubator Policy
+ASF Developer Guide
+ASF Release FAQ
+ASF Release Licensing FAQ
+ASF Release Signing
+ASF Comitters Guide
+Henk's ASF Key Guide
+Surfnet Key Server
+MIT Key Server
+Raymond's release script

+ +

Release Reviewer Check List

+ +

Check that all RELEASE-NOTES and READMEs etc have the right release number and date
+ Check that the RAT output doesn't report missing or non-ASF licenses other than for files that can't have ASF licenses.
+ Check that all files (that need it) have the ASF copyright and it's the right date
+ Check that the LICENSE and NOTICE files appear at the top level of source distro
+ Check that the LICENSE and NOTICE files appear at the top level of binary distro
+ Check that the LICENSE and NOTICE files appear at the top level of all maven modules that will be distributed (these are the tricky ones as they get copied when people add new modules)
+ Check that LICENSE files have a copy of all third party licenses for the files in directories below them (jar name and version to which license relates must be clearly marked. Use the list from the distribution lib dir)
+ Check that NOTICE files have a copy of all of the copyright statements for the files in directories below them. You have to go through all dependency jars/files that have been copied in and check
+ Check that the signatures are in the right format
+ Check that the signing key is in the KEYS file and in an external repo
+ Check that there are no SNAPSHOT dependencies still in the distribution
+ Check that there is no junk left in the distributions (.log, .tmp, .bak etc)
+ Check that the distribution match the tag as far as possible. (Our NOTICE files have the module name dropped in automatically so don't match and we don't ship svg files)
+ Check that the manifests in the jars that we produce have enough information (name of product and version. Scripts below should do this).
+ Check that the project depends on the smallest number of versions of each third party jar
+ Check that all samples compile and run from the command line and where appropriate operate correctly in Tomcat/WebSphere/Jetty/Geronimo
+ Check that all demos compile and run from the command line and where appropriate operate correctly in Tomcat/WebSphere/Jetty/Geronimo
+ Check to make sure Javadocs are generated for APIs and SPIs.

+ +

Release Manager Release Process

+ +

This page borrows many of the commands from Raymond's release script but with a bit more explanation and a few extra useful commands. The commands here were taken from when release 1.1 RC3a was under preparation. Note that this document has been updated from experience gained with the SDO 1.1.1 release, which was the first release made after exiting incubation; as such, whilst the release names used in this document refer to an "incubating" version, the svn repository and the maven repository have been updated to the non incubating versions. It's also fair to say that it's unlikely that you will want to run all of these commands in sequence as you generally end up repeating sections as release preparation progresses.

+ +

Call for releases

+ +

(Note that the maven tuscany plugin will most likely need to be released in parallel with the Tuscany release)

+ +

At some point someone in the community will call for a release based on the features and fixes that have been under development in the trunk. Typically the first stage in the release process is to decide on who is going to be the release manager, i.e. who is going to ensure that all the steps are taken to ensure a good release. This will typical involve someone volunteering and a vote on the dev list. The next thing is the create a branch where the code can be stabilized and testing can start on the release artifacts. It's useful to try and ensure that the code is complete as possible and that all the samples run before the branch is created. This removes the need for a lot of double fixing between the branch and the trunk.

+ +

The commands in this document make use of the following environment variables, and are written in a form suitable for execution in linux or a cygwin shell on windows. If you set up these variables you should be able to just cut and paste the commands as given throughout this document.

+ +
+
+export RELEASE=2.0-M5
+export RC=RC3
+
+export CURRENT_TRUNK_LEVEL=2.0-SNAPSHOT
+export NEXT_TRUNK_LEVEL=2.0-SNAPSHOT
+
+export RATJAR=~/apache-rat-0.7-SNAPSHOT.jar
+export SCPCOMMAND=scp
+export PAOUSER=kelvingoodson
+export PASSPHRASE=your_pao_authentication_pass_phrase
+
+
+ +

Create the branch

+ +
+
+svn copy https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/ https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-$RELEASE  -m "Branch for $RELEASE"
+
+
+ +

Once the branch is created, if the current and next trunk version differ,  the version number in trunk can be updated. If the release is a milestone release the trunk version will not change.

+ +

Fix up the branch work

+ +

First checkout the branch so that you can work on it. These commands assume that a local directory called "branches" is present.

+ +
+
+cd branches
+svn co https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-$RELEASE ./$RELEASE
+
+
+

Remove all the files that are not going to be part of the release, test all the samples and check all of the LICENSE and NOTICE files.

+ +

Check dependencies are as you would expect them to be. In particular check that we aren't depending on many different versions of third part jars. If we are this has the side effect of messing up the generated build files. If module A depends on x.jar v1.2 and module B depends on x.jar v1.3 then when a build file that is generated for a sample that only depends on module A the stated x.jar dependency will be v1.2. Of course the distribution build will make sure that only v1.3 is actually shipped and so the ant build will fail. (TODO - need better automation)

+ +
+
+cd sca
+mvn \-o \-Pdependencies \-Dmaven.test.skip=true
+find . \-name dependency.txt \-exec cat '{}' >> deptotal.txt \;
+
+
+

or

+ +
+
+cd sca
+mvn dependency:tree
+
+
+

Use you favorite spreadsheet tool to open deptotal.txt and order on the first column to see across the project what dependencies we have on what libraries/versions.

+ +

Once the branch is at the stage where a release candidate can be created for testing prepare to make a tag.

+ +
"Tip"
When making changes to a branch or tag that are also relevant to the trunk, it's much easier to apply the changes to the trunk at the time, rather than wait and risk losing the changes. Svn provides a simple one line way to do this with the "svn merge" command. In the root directory of a checked out version of the trunk, if you run a command like the following ... + + +
+
+svn merge \-r 674473:674474 https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-2.0-M5 2.0-M5-RC2
+
+
+

Note how the version numbers in the n:m differ by one, so that you get just the difference in repository state from immediately before the change in question, to the state in question, merged into the file system in the target location (final argument)

+ + +

then that will apply the same edits as were made in the 674474 commit in the tag; merging them into your checked out version of the current trunk. The earlier you do this, the less likely that svn will present you with conflicts to resolve.

+ +

Create Tag $RELEASE-$RC

+ +

These commands assume that a local directory called "tags" is present.

+ +
+
+cd tags
+svn co https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-$RELEASE $RELEASE-$RC
+
+
+

Notice that all we are doing here is just checking out the branch again. This allows any last minute fixes to be taken from the branch in subversion and allows the version numbers in the tag to be corrected without affecting the branch, assuming that more than one tag will be required to complete the release process.

+ +

Fix the release dates

+ +

In various files under distribution/src/main/release the month of release is quoted. Fix this to be the expected release month.

+ +

Check the notice dates

+ +

It's not clear what the policy for dates in notice files is currently. We have gone for the following...

+ +

Copyright (c) 2005 - 2010 The Apache Software Foundation

+ +

As the project moves forward we need to check that the last date matches the current year. If you need to change all the notice files here's a script

+ +
+
+for i in `/usr/bin/find . \-name "NOTICE"`; do sed "s/Copyright (c) 2005 - 2008/Copyright (c) 2005 - 2009/g" $i >/tmp/tmp.notice; cp /tmp/tmp.notice $i; done
+
+
+ +

Change the version ID

+ +

The "-SNAPSHOT" is removed from the end of the version string. This ensures that the only thing building with the release version number on your PC is the tag being tested.

+
+
+cd tags/2.0-M5-RC2
+for i in `/usr/bin/find . \-name "*.xml" \-o \-name "*.java"`; do if grep $RELEASE-SNAPSHOT $i>/dev/null; then sed "s/$RELEASE-SNAPSHOT/$RELEASE/g" $i >/tmp/tmp.txt; cp /tmp/tmp.txt $i; echo $i; fi; done
+
+
+ + + +

Build from top level

+ +
+
+cd tags/$RELEASE-$RC
+mvn -o clean install
+
+
+ +

Build distribution

+ +
+
+cd tags/$RELEASE-$RC/distribution/all
+mvn -Psource
+mvn
+
+
+ +

Copy the distribution to somewhere and try it

+
+
+cd tags/$RELEASE-$RC/distribution/all/target
+cp apache-tuscany-sca-all-$RELEASE.zip <someplace>
+cp apache-tuscany-sca-all-$RELEASE-src.zip <someotherplace>
+
+
+

Try all the samples/demos

+ +

The war samples are currently to be tested with

+ +
    +
  • Tomcat 5.5.20 and Tomcat 6.0.14
  • +
  • Jetty 6.1.3
  • +
  • Geronimo 2.0.2 Tomcat6 jee5
  • +
  • WebSphere 6.1 fix pack 9+
  • +
+ + +

Clean you local repo of SCA modules and compile the source distro and run some samples. As you will have deleted the maven-tuscany-plugin artifact, you'll need to do a 3 part manual maven build, building in the modules directory, then the maven directory, and finally the samples directory.

+ +

Check for copyrights in the code to ensure that are what you are expecting

+ +
+
+grep \-iR \--exclude=LICENSE \--exclude=NOTICE Copyright * \| awk '{if (\!match($0, ".+ASF.+")) {print $0}}'
+
+
+

check all the NOTICE files

+ +
+
+for i in `find . \-name NOTICE`; do echo XXXXXXXXXXXXXXXXXXXXXXXXXXXX; echo $i; cat $i; done > ../tmp
+
+
+

Check for any SNAPSHOTS left in by mistake

+ +
+
+grep \-r \--include=*.xml SNAPSHOT *
+
+
+

Check the LICENSE file against what is provided in the distributions. There is no automation for this bit.

+ + +

Check that all jars in the distribution\lib is mentioned on the binary LICENSE

+ + +
+
+for fn in `find . -name "*.jar" \-printf "%f\n"`; do if grep \-q $fn ../LICENSE; then "-"; else "$fn NOT present"; fi; done;
+
+
+

And check that all jars that are mentioned are present

+ +
+
+for fn in `awk '/.jar/ {if (match($0,"[a-zA-Z0-9._\-|a-zA-Z0-9._-]+[.]jar")) {print substr($0, RSTART,RLENGTH) } }' ../LICENSE`; do if ls * \| grep -q $fn; then echo "-";else echo ">>> $fn NOT present"; fi; done
+
+
+

Check for junk included by accident

+ +
+
+find . \-name log \-print
+find . \-name work \-print
+find . \-name lck \-print
+find . \-name activemq-data \-print
+find . \-name temp \-print
+find . \-name tmp \-print
+
+
+ +

Generate the RAT reports

+ +

Unpack a binary and source distribution archive and create rat reports for each.

+ +
+
+java \-jar $RATJAR srcExtractionDir > rat-$RELEASE-$RC-src.txt
+java \-jar $RATJAR binExtractionDir > rat-$RELEASE-$RC-bin.txt
+
+
+

Copy the reports up onto the staging repo. You should of course check the report at this stage.

+ +
+
+$SCPCOMMAND rat-$RELEASE-$RC.txt $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/
+
+
+
"Tip"
If you need to regenerate the RAT report after you have started on the steps that follow run "mvn clean" first to avoid complains about the files under target folders
+ +

Once you are happy with the release artifacts you can sign them and make them available from review.

+ +

Sign the artifacts

+ +

Linux

+
+
+cd tags/$RELEASE-$RC/distribution/target
+for i in *.zip *.gz; do gpg --output $i.asc --detach-sig --armor $i; done
+for i in *.zip *.gz; do openssl md5 -hex $i \| sed 's/MD5((**[\^)|]*))= ([0-9a-f|0-9a-f]\*)/\2 \*\1/' > $i.md5; done
+
+
+ +

Windows:

+
+
+for %A in (*.zip) do gpg \--output %A.asc \--detach-sig \--armor %A
+for %A in (*.gz) do gpg \--output %A.asc \--detach-sig \--armor %A
+for %A in (*.zip) do gpg \--print-md md5 %A > %A.md5
+for %A in (*.gz) do gpg \--print-md md5 %A > %A.md5
+
+
+

The commands above should produce artifacts of an appropriate format, as follows.

+ +

md5 should look like

+
+
+8fb7cb398063ed0dffa414168468fffc \*apache-tuscany-sca-1.1-incubating.zip
+
+
+

asc should look like

+
+
+\---\--BEGIN PGP SIGNATURE-\---\-
+Version: GnuPG v1.4.5 (Cygwin)
+
+iD8DBQBHnLGGE8fTrnkHPxIRAqPmAJ4tOR6W663FKCXHPi1GlLBWDyZwJgCeMqbb
+68DOq0YsU/O7kJsBHuZXhJw=
+=elh0
+\---\--END PGP SIGNATURE-\---\-
+
+
+ +

Put the artifacts up in your home directory on people.apache.org

+ +
+
+cd tags/$RELEASE-$RC/distribution/target
+$SCPCOMMAND *.asc $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/
+$SCPCOMMAND *.md5 $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/
+$SCPCOMMAND *.zip $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/
+$SCPCOMMAND *.gz $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/
+
+
+
+
+cd tags/$RELEASE-$RC/distribution/src/main/release
+pscp RELEASE_NOTES $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/
+pscp CHANGES $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/
+
+
+ +

Check permissions on the files

+ +
+
+chmod 644 \*.zip
+chmod 644 \*.gz
+chmod 644 \*.txt
+
+
+ +

Deploy the maven artifacts locally

+ +

As a potentially simpler alternative to deploying directly to p.a.o you can do the following (I have to use this approach as I
+can't get mvn to authenticate with p.a.o properly during deployment)

+ +

Build the maven release artifact to a local directory (in this case target/deploy at the top level):

+ +
+
+cd tags/$RELEASE-$RC
+mvn -Prelease -DaltDeploymentRepository=id::default::file:target/deploy
+
+
+ +

Copy the artifacts up to p.a.o:

+ +
+
+cd cd tags/$RELEASE-$RC/target/deploy
+scp -r org slaws@people.apache.org:./public_html/tuscany/2.0-beta1-RC2/maven
+
+
+ +

Deploy the maven artifacts directly to p.a.o

+ +

Note below that the reference to "me.people" in the "id" part of the -DaltDeploymentRepository argument to the maven deploy plugin is simply an identifier relating to a stanza in your local maven repo's settings.xml file. Note that also if you use ssh authentication by referencing a file containing your private key from the settings.xml file, then be sure to use a file in open ssh format.  People who have followed the apache instructions for creating ssh keys on Windows with putty will probably not have created open ssh format files. You can however convert your .ppk file to the open ssh format by loading it into puttygen and using the conversion menu.

+ +

Create a maven directory in your target directory on people.apache.org

+ +
+
+cd tags/$RELEASE-$RC
+mvn -N -DaltDeploymentRepository=me.people::default::scp://people.apache.org/home/$PAOUSER/public_html/sca-java/$RELEASE/$RC/maven verify gpg:sign install:install deploy:deploy -Dgpg.passphrase=$PASSPHRASE
+
+
+cd modules
+
+mvn clean
+mvn \-DaltDeploymentRepository=me.people::default::scp://people.apache.org/home/$PAOUSER/public_html/sca-java/$RELEASE/$RC/maven verify gpg:sign install:install deploy:deploy -Dgpg.passphrase=$PASSPHRASE
+
+cd shades (note, I thought it was only shades/base that needed doing, but the maven plugin failed on shades artifacts, so I deployed from shades)
+mvn clean
+mvn \-DaltDeploymentRepository=me.people::default::scp://people.apache.org/home/$PAOUSER/public_html/sca-java/$RELEASE/$RC/maven verify gpg:sign install:install deploy:deploy -Dgpg.passphrase=$PASSPHRASE
+
+
+cd maven/maven-tuscany-plugin
+
+mvn clean
+mvn \-DaltDeploymentRepository=me.people::default::scp://people.apache.org/home/$PAOUSER/public_html/sca-java/$RELEASE/$RC/maven verify gpg:sign install:install deploy:deploy -Dgpg.passphrase=$PASSPHRASE
+
+cd features
+
+mvn clean
+mvn \-DaltDeploymentRepository=me.people::default::scp://people.apache.org/home/$PAOUSER/sca-java/$RELEASE/$RC/maven verify gpg:sign install:install deploy:deploy -Dgpg.passphrase=$PASSPHRASE
+
+
+
+ +

Deploy source jars

+
+
+cd modules 
+mvn -Psource -DaltDeploymentRepository=me.people::default::scp://people.apache.org/home/kelvingoodson/public_html/sca-java/2.0-M5/RC3/maven -Dgpg.passphrase=$PASSPHRASE deploy
+
+
+
+ +

Check permissions of maven artifacts

+ +

If you've copied the maven artifacts up to p.a.o manually you may need to fix the permissions of the directories

+ +
+
+find . -type d -exec chmod 755 {} \;
+
+
+ +

and files

+ +
+
+find . -type f -exec chmod 644 {} \;
+
+
+ +

Check that the Maven artifacts work

+ +

Point you maven build at your p.a.o dir as a temporary mirror, for example, add mirror element to the settings.xml file (usually found at .m2/settings)

+ +
+
+<mirrors>
+<mirror>
+<id>ant.staging</id>
+<url>http://people.apache.org/~<PAOUSER>/sca-java/<release>/<RC>/maven</url>
+<mirrorOf>*</mirrorOf>
+</mirror>
+</mirrors>
+
+
+

Clean you local SCA artifacts and use maven to compile samples and see if they run.

+ +

Check in the tag

+ +
+
+cd tags
+svn copy $RELEASE-$RC https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/tags/$RELEASE-$RC -m "Tag for $RELEASE $RC"
+
+
+ +

Start voting

+ +

The PPMC will vote first. This may give rise to a new release candidate being required. If so you need to go back and start at the "Create Tag" step but using the next RC number.

+ +

Once the PPMC vote is complete the vote is moved across to the IPMC. Once all the votes are complete the artifacts that have been voted on can be release.

+ + +

Once all the voting is complete

+ +

Copy the artifacts from you directory on people.apache.org to;

+ +
+
+/www/www.apache.org/dist/tuscany/java/sca/$RELEASE
+
+
+ +

Also check that the KEYS file is up to date.

+ +
+
+/www/www.apache.org/dist/tuscany
+
+
+ +

Copy the staging repo to the live repo

+ +

Option 1 (untested for 2.0-M5)

+
+
+mvn stage:copy -Dsource="http://people.apache.org/~slaws/tuscany/1.1-RC3a/maven" -Dtarget="scp://<userid@>people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository" -Dversion=1.1
+
+
+ +

You'll need the maven stage plugin to do this. Since maven-stage-plugin is not published, the release manager should checkout the source for the plugin and build it.

+ +
+
+http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-stage-plugin/
+
+
+ +

Or option 2 (used for 2.0-M5), instead of using the Maven stage plugin just manually copy the artifacts there:

+ +
+
+cd public_html/sca-java/$RELEASE/$RC/org/apache/tuscany/
+cp -p -v -R  sca/  /x1/www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/tuscany/sca
+cp -p -v -R  maven/  /x1/www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/tuscany/maven
+
+
+ +

Check the permissions in the repo

+ +

There is a script in the SNAPSHOT report that sets the permissions correctly; take a look at the contents of the script and adjust for your purposes

+ +
+
+more /www/people.apache.org/repo/m2-snapshot-repository/fix-permissions.sh
+
+
+ +

For example:

+ +
+
+cd /x1/www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/tuscany/
+find . ! -perm 775 -type d -user ${USER} -exec chmod 775 {} \; -print
+find . ! -perm 664 -iname maven-metadata.xml* -user ${USER} -exec chmod 664 {} \; -print
+find . -group slaws -exec chgrp committers {} \; -print
+
+
+ +

Copy the release candidate tag to the final tag name.

+ +
+
+svn copy https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/tags/$RELEASE-$RC/ https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/tags/$RELEASE -m "Copy $RC tag as final release tag"
+
+
+ +

Update the website

+ +

Edit the wiki that defines the website content https://cwiki.apache.org/confluence/display/TUSCANY/SCA+Java+2.x+Releases

+ +

Wait for the artifact and website changes to be updated

+ +

The website will be updated from the wiki within a few hours. Once updated, check that the new download pages work correctly. In particular follow the download links for artifacts right through to a selection of mirror download sites to be sure that the distributions have been mirrored.

+ +

Beat the Drum!

+ +

send an announcement, using your apache.org email address, to the apache announce list, and to the tuscany dev and user lists. Blog the announcement on the Tuscany blog and any other publicity that seems appropriate.

+
+ +
+ Children + + Show Children + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG new file mode 100644 index 0000000000..3f6509baca Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG differ diff --git a/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg new file mode 100644 index 0000000000..a5180fa0dd Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg new file mode 100644 index 0000000000..29853f9e1e Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg new file mode 100644 index 0000000000..3dd9af44be Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.html b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.html new file mode 100644 index 0000000000..27910b1759 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.html @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + OSGi Aware Programming in Tuscany : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > OSGi Aware Programming in Tuscany + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > OSGi Aware Programming in Tuscany + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Motivation for OSGi

+ +

The Apache Tuscany project has become a large project, with various extensions and component types that brings to the SCA Runtime different levels of dependencies. With its growth, Tuscany also started to have it's SPIs violated by some of these extensions, and some of the boundaries between sub-systems are broken, as there wasn't any enforcement of these boundaries.

+ +

The OSGi model provides a very powerful and flexible framework to develop applications in a modular fashion with a high degree of control over classloading inter-dependencies over modules. An OSGi module (a.k.a bundle) have a manifest file (META-INF\manifest.mf) that contains module information such as "name", "version" and also a list of what packages are being exported, and what packages are being imported from the given bundle, providing ways to easily enforce module boundaries.

+ +

In summary:

+
    +
  • Better class loading mechanism for our modules
  • +
  • Create clean boundaries between sub-systems
  • +
+ + +

Tuscany and OSGi - 3rd party dependencies

+ +

Currently we are wrapping the 3rd party dependencies as OSGi bundles, but leaving it unpacked (a.k.a folder structure). This allow use to use the same dependency jars in a OSGi environment as well as in a non-OSGI environment and generating no side effect on our distribution footprint.

+ +

+ + +

Tuscany and OSGi - Granularity

+ +

The granularity used to define modules should be very familiar to all tuscany developers,

+ +

Tuscany Modules --> OSGi Bundles
+ 3rd Party Libraries --> OSGi Bundles (using unpacked wrap style bundle)

+ +

Properly defining new Tuscany modules as an OSGi bundle

+ +

When adding new modules to the Tuscany project, the developer will need to create the OSGi Manifest to properly describe the new module as an OSGi bundle. These artifacts can be automatically generated using the Felix maven-bundle-plugin and should be available from svn repository once it's stable.

+ +

Generating OSGi manifest with Felix maven-bundle-plugin

+ +
"configuring maven to generate the OSGi manifest"
+
+<plugin>
+    <groupId>org.apache.felix</groupId>
+    <artifactId>maven-bundle-plugin</artifactId>
+    <configuration>
+        <instructions>
+            <!-- Bundle versioned from Tuscany version -->
+            <Bundle-Version>${tuscany.version}</Bundle-Version>
+            <!-- Bundle Symbolic name -->
+            <Bundle-SymbolicName>org.apache.tuscany.sca.api</Bundle-SymbolicName>
+            <!-- Bundle description from pom description -->
+            <Bundle-Description>${pom.description}</Bundle-Description>
+            <!-- Export org.osoa.sca and all sub-packages -->
+            <Export-Package>org.osoa.sca*</Export-Package>
+            <!-- No Import-Package so calculate imports from code dependencies -->
+        </instructions>
+    </configuration>
+</plugin>
+
+
+ +

Below is a manifest that was generated for one of the Tuscany modules using the felix maven-bundle-plugin.

+ +
"OSGi Manifest (META-INF\manifest.mf)"
+
+Manifest-Version: 1.0
+Export-Package: org.apache.tuscany.sca.assembly;uses:="javax.xml.xpath
+ ,org.apache.tuscany.sca.assembly.impl,org.apache.tuscany.sca.policy,o
+ rg.apache.tuscany.sca.interfacedef,javax.xml.namespace";version="1.4"
+ ,org.apache.tuscany.sca.assembly.impl;uses:="javax.xml.xpath,org.apac
+ he.tuscany.sca.assembly,org.apache.tuscany.sca.policy,org.apache.tusc
+ any.sca.interfacedef,javax.xml.namespace";version="1.4",org.apache.tu
+ scany.sca.assembly.builder;uses:="org.apache.tuscany.sca.assembly,org
+ .apache.tuscany.sca.definitions,org.apache.tuscany.sca.core,org.apach
+ e.tuscany.sca.monitor,org.apache.tuscany.sca.interfacedef,org.apache.
+ tuscany.sca.extensibility";version="1.4"
+Private-Package: org.apache.tuscany.sca.assembly.builder.impl;version=
+ "1.4"
+Tool: Bnd-0.0.255
+Bundle-Name: Apache Tuscany SCA Assembly Model
+Created-By: 1.6.0_07 (Sun Microsystems Inc.)
+Bundle-Vendor: The Apache Software Foundation
+Bundle-Version: 1.4
+Bnd-LastModified: 1225397097203
+Bundle-ManifestVersion: 2
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
+Bundle-Description: Apache Tuscany SCA Assembly Model
+Import-Package: javax.xml.namespace,javax.xml.parsers,javax.xml.transf
+ orm,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.xpath,o
+ rg.apache.tuscany.sca.assembly;version="1.4",org.apache.tuscany.sca.a
+ ssembly.builder;version="1.4",org.apache.tuscany.sca.assembly.impl;ve
+ rsion="1.4",org.apache.tuscany.sca.core;version="1.4",org.apache.tusc
+ any.sca.definitions;version="1.4",org.apache.tuscany.sca.extensibilit
+ y;version="1.4",org.apache.tuscany.sca.interfacedef;version="1.4",org
+ .apache.tuscany.sca.monitor;version="1.4",org.apache.tuscany.sca.poli
+ cy;version="1.4",org.apache.tuscany.sca.policy.util;version="1.4",org
+ .w3c.dom,org.xml.sax,junit.framework;resolution:=optional,org.apache.
+ tuscany.sca.interfacedef.impl;version="1.4";resolution:=optional,org.
+ junit;resolution:=optional
+Bundle-SymbolicName: org.apache.tuscany.sca.assembly
+Bundle-DocURL: http://www.apache.org/
+
+
+ +

Tweaking the OSGi manifest

+ +

Eclipse PDE provides good tooling for editing and maintaining OSGi manifest files. There are various scenarios we might need to tweak the OSGi manifest manualy :

+ +
    +
  • Updating imported/exported packages
  • +
  • Marking test dependencies optional +
      +
    • Avoid issues when tests have references to external packages
    • +
    +
  • +
+ + +

+ +

PDE integration of tuscany modules

+

1) We generate the .classpath from maven dependencies.

+ +

2) For maven compile/provided dependencies, the modules explicit references
+these dependencies via packages. We define corresponding Import-Package
+header in the MANIFEST.MF for OSGi, and these get resolved to other bundles
+that export the matching packages. This magic comes from the
+"org.eclipse.pde.core.requiredPlugins" classpath container which is
+contributed by the Eclipse PDE. The classpath container resolves the OSGi
+dependencies such as Import-Package or Required-Bundle and automatically add
+the required bundles to the classpath as we see in Eclipse project under the
+"Plugin Dependencies".

+ +

3) The exported packages come from three types of sources:

+
    +
  • System packages (exported by the System Bundle, i.e., org.eclipse.osgi).
    +Different JDK levels have different list of system packages, for example,
    +javax.xml.stream is not in J2SE-1.5 but in JSEJava-1.6. You can find the
    +complete list by looking the .profile files within osgi-<version>.jar.
  • +
  • Tuscany modules in the Eclipse workspace. The classpath entry will be
    +listed as a project under "Plugin Dependencies"
  • +
  • 3rd-party jars (already as OSGi bundles contributed by the target
    +platform). The classpath entry will be listed as a jar under "Plugin
    +Dependencies"
  • +
+ + +

4) For maven runtime dependencies, there is no corresponding Import-Package
+and the dependencies are used in runtime. Ideally in OSGi, they could be a
+Required-Bundle or a bundle available at runtime. To run the project in JSE
+inside Eclipse, we generate an explicit classpath entry.

+ +

5) For maven test dependencies, there are two types: one is for test
+compilation and the other for test runtime. For the first type, we use
+optional Import-Package to pull in the dependencies if the same project has
+the compile dependency for the same artifact. Otherwise, we generate an
+explicit classpath entry for JSE testing.

+ +

6) For test cases which require extra dependencies in addition to the
+compile/provided/runtime dependencies for the main code, they probably
+should not be unit tests. We need to consider how to move them into the
+itest bucket.

+ + + + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/OSGi Enablement for Tuscany.ppt b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/OSGi Enablement for Tuscany.ppt new file mode 100644 index 0000000000..bee880e978 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/OSGi Enablement for Tuscany.ppt differ diff --git a/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/tuscany-osgi.pdf b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/tuscany-osgi.pdf new file mode 100644 index 0000000000..ee6105b7a1 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/tuscany-osgi.pdf differ diff --git a/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.html b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.html new file mode 100644 index 0000000000..38a82c3242 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.html @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + OSGi Enablement for Tuscany Runtime : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > OSGi Enablement for Tuscany Runtime + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > OSGi Enablement for Tuscany Runtime + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

OSGi Enablement for Tuscany Runtime

+ +

OSGi Enablement for Tuscany.ppt

+ +

Movtivations to enable OSGi for Tuscany:

+ +
    +
  • Provide modularity for Tuscany to formalize the SPI contracts and enforce the package dependencies across modules
  • +
  • Enable Tuscany to work with OSGi environment such as JEE application servers, Eclipse RCP or Spring DM (see http://www.infoq.com/news/2008/11/osgi-in-the-enterprise )
  • +
  • Provide versioning and isolation so that Tuscany extensions can depend on different versions of the same library
  • +
  • Provide dynamic lifecycle for extensions, install/uninstall/start/stop a module
  • +
+ + +

Objectives

+ +
    +
  • Tuscany runtime will be able to run in both non-OSGi and OSGi environment
  • +
  • A consistent OSGi story across development, build, runtime and testing
  • +
+ + +

Steps to make Tuscany work with OSGi (Basic enablement)

+ +
    +
  • Add OSGi MANIFEST.MF for each module to make it an OSGi bundle +
      +
    • The generated MANIFEST.MF from maven-bundle-plugin is a good starting point. The result may not be accurate and it doesn't help to reduce the coupling
    • +
    • It should be developers' reponsibility to maintain it for the optimal dependencies
    • +
    +
  • +
  • Convert each non-OSGi 3rd-party jar into an OSGi bundle +
      +
    • Exception: Aggregate a group of 3rd-party jars if they have split packages
    • +
    +
  • +
  • Add an OSGi-based service discoverer to discover tuscany extension points and extensions from the installed bundles +
      +
    • Use the same JDK service provider pattern (META-INF/services) as JSE
    • +
    • The discoverer is configured based on the running environment (JSE or OSGi)
    • +
    +
  • +
  • Change how JDK factories such as XMLInputFactory, XPathFactory, and DocumentBuilderFactory, are discovered and instantiated +
      +
    • XMLInputFactory.newInstance() used the JSE service provider pattern which doesn't work with OSGi
    • +
    • We need to use Tuscany's service discovery mechanism to discover and instantiate the factories
    • +
    +
  • +
  • Adjust the code that assumes there is a flat thread context classloader that can access all the classes in the Tuscany runtime +
      +
    • With OSGi, there is a network of classloaders (one classloader per module) and the class visibility is constrained by the OSGi headers such as Import-Package and Export-Package
    • +
    • The classloader for the current class is a good starting point for Class.forName() with OSGi
    • +
    +
  • +
  • Provide a SCA node launcher to start an OSGi runtime and run SCA application with the OSGi-enabled Tuscany runtime
  • +
  • Produce distributions that are compatible with the OSGi bundle structure in an efficient way (in one-two minutes)
  • +
  • Bring samples and itests to use the Tuscany SCA OSGi node launcher or run with the Eclipse Equinox profile
  • +
+ + +
To learn from the excerises we went through, please see the slides: tuscany-osgi.pdf
+ +

Use OSGi to help Tuscany maintain and enforce good modularity with clean SPIs following the OSGi best practices

+ +
    +
  • Identify the absolutely necessary SPI packages that need to be exported +
      +
    • Don't try to export everything
    • +
    • For model modules, try to only export the package that contains the interfaces
    • +
    • Try not to export any package from the xxx-runtime moudles
    • +
    • Any classes that can be accessed via the ExtensionPointRegistry using interfaces should not be exported
    • +
    +
  • +
  • Only import other packages when it's needed +
      +
    • For example, we used to have a lot of modules pull in assembly for just a constant for the SCA namespace
    • +
    • Avoid DynamicImport-Package=*
    • +
    +
  • +
  • Do not export "private" packages as a workaround or hack which can fail the "clean SPI". Refactor things into SPIs if necessary +
      +
    • For example, tuscany-core has quite a few packages that are exported. We need to define a SPI layer if these exports are required.
    • +
    • implementation-java: extract out the annotation processing so that they can be reused for introspecting other java-based implementation technologies such as Spring or EJB
    • +
    • implementation-java-runtime: extract out the IoC
    • +
    • add common modules such as common-java and common-xml to host java or XML related utilities
    • +
    +
  • +
  • Split modules into model/runtime to promote modularity
  • +
  • Fix some of the unit testcases that pull in too many dependencies and they should be itests
  • +
+ + +

To help developers to develop Tuscany modules as OSGi bundles and receive errors if OSGI constraints are violated, we integrated with a set of tools (help for improvement is welcome):

+
    +
  • A maven plugin to generate .classpath and .project files and target definition file to produce Eclipse PDE plugin projects for Tuscany modules so that we can leverage the nice OSGi development tooling +
      +
    • Compile dependencies are now pulled in by the PDE requiredPlugins classpath container
    • +
    • Runtime dependencies are now generated as an explict classpath entry
    • +
    • Test dependencies can be optional Import-Package or an explicit classpath entry
    • +
    +
  • +
  • A maven compiler to use Eclipse JDT and OSGi bundle resolver +
      +
    • The JDT compiler is much faster that javac
    • +
    • The OSGi resolution reports unsatisfied OSGi constraints
    • +
    +
  • +
  • A maven plugin to generate OSGi-compatible distribution structure which hosts 3rd-party jars that can be used a bundle for OSGi as well as a plain jar for JSE classpath +
      +
    • Copy OSGi bundles as jars
    • +
    • Create a folder structure to hold the MANIFEST.MF which keep the 3rd-party jar as-is
    • +
    +
  • +
+ + +
For more details, please see: OSGi Aware Programming in Tuscany?
+ +

Developing Tuscany modules as OSGi bundles

+ +

Design of an OSGi bundle

+ +
    +
  • Modularity/Granularity +
      +
    • Not just a simple packaging scheme such as all jars are consolidated into one big bundle, export/import everything
    • +
    +
  • +
  • Maven is designed to manage build dependency +
      +
    • Visibility at module level (too high)
    • +
    • Transitive dependency
    • +
    • Classloading is flat
    • +
    • No runtime control
    • +
    +
  • +
+ + +

Creating an OSGi bundle

+ +
    +
  • Converting Tuscany modules into OSGi bundles +
      +
    • META-INF/MANIFEST.MF
    • +
    +
  • +
  • Converting 3rd-party jars into OSGi bundles +
      +
    • Plain Jars
    • +
    • Patching existing bundles
    • +
    +
  • +
  • Distribution Structure
  • +
+ + +
    +
  • Eclipse PDE integration +
      +
    • Target platform
    • +
    • Classpath setting
    • +
    • PDE tools +
        +
      • +
          +
        • Build path
        • +
        • PDE dependency view
        • +
        • MANIFEST.MF editor
        • +
        • Equinox run/debug profile
        • +
        +
      • +
      +
    • +
    +
  • +
+ + +

Maven plugins to help OSGi development

+ +
    +
  • Maven Eclipse Compiler +
      +
    • Use Eclipse JDT as the compiler
    • +
    • Validate the MANIFEST.MF
    • +
    +
  • +
  • Tuscany Maven Bundle Plugin +
      +
    • Generating modules
    • +
    • Generating PDE target
    • +
    • Generating Equinox Configuration
    • +
    +
  • +
+ + +

Runtime concerns

+ +
    +
  • Equinox OSGi launcher
  • +
  • META-INF/services Service Provider discovery
  • +
  • Avoid XMLInputFactory.newInstance(), DocumentBuilderFactory.newInstance()...
  • +
  • Classloading (TCCL is evil) +
      +
    • Equinox ContextFinder
    • +
    +
  • +
+ + +

Test Tuscany code with OSGi

+ +
    +
  • How to run maven surefire plugin with OSGi?
  • +
  • Eclipse run as JUnit plugin test
  • +
+ + +

Troubleshoot the OSGi constraint violations

+ +
    +
  • OSGi console +
      +
    • -Dosgi.console=<port #>
    • +
    +
  • +
  • Eclipse PDE state view
  • +
  • Traps +
      +
    • Split Packages
    • +
    • System packages
    • +
    • Version mismatch
    • +
    +
  • +
+ + + +

OSGi Enablement for Tuscany.ppt

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg new file mode 100644 index 0000000000..a0b9c3c248 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg.jpeg new file mode 100644 index 0000000000..899edcb286 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/overview.html b/site/trunk/site-publish/documentation-2x/overview.html new file mode 100644 index 0000000000..e03b35d176 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/overview.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + Overview : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Overview + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Overview + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+
Getting Started with Tuscany
+

Getting Started These guides help you to get setup in Tuscany, develop and run a simple application using comand line or Eclipse.

+
+ +
SCA Introduction
+

SCA Introduction Provides a quick introduction to SCA and links to the SCA Specifications.

+
+ +
Tuscany Samples
+

SCA Samples A description of the Tuscany SCA sample contributions

+
+ +
SCA Java Extensions Guide
+

SCA Java Extensions Guide Provides a guide for all the SCA Java and Tuscany extensions.

+
+ +
Development Guides
+

Development Guides These guides help you learn more about Tuscany architecture and how to get involved in the development of Tuscany. We look forward to your help.

+
+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/resources/space.css b/site/trunk/site-publish/documentation-2x/resources/space.css new file mode 100644 index 0000000000..9ca27bc4a3 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/resources/space.css @@ -0,0 +1,5269 @@ + +/* Confluence master stylesheet */ +body { + margin: 0; + padding: 0; + background-color: #f0f0f0; +} +body.content-preview { + background: #fff; + border: none; +} + +body, p, td, table, tr, .bodytext, .stepfield { + font-size: 10pt; + line-height: 1.3; + color: #000; + font-weight: normal; +} + +#page { + width: 100%; + height: 100%; + margin: 0; + padding: 0; +} + +#PageContent { + text-align: left; + background-color: #fff; + padding: 0 0 20px 0; + margin: 0; +} + +.print-only { + display: none; +} + +.monospaceInput { + font: 12px Monaco, Consolas, "Courier New", monospace; +} + +pre { + padding: 0; + margin: 10px 0; + text-align: left; + overflow: auto; +} + +.helpheading { + font-weight: bold; + background-color: #d0d9bd; + border-bottom-width: 1px; + border-bottom-style: solid; + padding: 4px; + margin: 0; + margin-top: 10px; +} +.helpcontent { + padding: 4px 4px 20px 4px; + background-color: #f5f7f1; +} + +.help-section-div .helpheading { + margin: 0; +} +.help-section-div { + margin-bottom: 2em; +} + +#print-friendly-help-toggle { + position: absolute; + top: 1em; + right: 1em; + text-indent: -999em; + width: 16px; + height: 16px; + background-image: url("../../../images/icons/print_16.gif"); + background-repeat: no-repeat; + outline: none; +} + +#commentsHide { + color: #666; + font-weight: normal; +} + +#showingComments { + border: none; + font-size: 10pt; +} + +.pageSection { + margin-top: 10px; + clear: both; +} + + +.pageSectionHeader { + margin-bottom: 5px; + padding: 2px 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.pageSectionHeader.summary { + border-bottom: none; +} + +.pageSectionBody { + margin-top: 4px; +} + +a.grey:link { color: #666; } +a.grey:visited { color: #666; } +a.grey:active { color: #666; } +a.grey:hover { color: #666; } + +.more-comments { + font-size: 10pt; + color: #dde2e6; +} + +.commentBox { + padding: 0; + margin: 10px 0; + overflow: auto; +} + +.commentBox table.comment { + border: 0; + border-bottom: #f0f0f0 1px solid; + border-top: #f0f0f0 1px solid; + margin: 0; + padding: 0; + width: 100%; + border-collapse: collapse; +} + +.commentBox .commentinfo { + background-color: #f0f0f0; + vertical-align: top; + padding: 12px; +} + +.commentBox .commentinfo .smalltext { + line-height: 11pt; +} + +.commentBox .commentphoto { + background-color: #f0f0f0; + text-align: right; + vertical-align:top; + padding: 12px; +} + +.commentBox .commentphoto img { + border: none; +} + +.commentBox .commentname a:hover { + text-decoration: underline; +} + +.commentdate { + margin-top: 3px; +} + +.commentBox .commentdate, .commentdate a { + color: #000; + text-decoration: none; + font-size: 9pt; +} + +.commentdate a:hover { + text-decoration: underline +} + +.commentBox .smalltext { + line-height: 10pt; +} + +.commentBox .smalltext a { + text-decoration: none; +} + +.commentBox .smalltext a:hover { + text-decoration: underline; +} + +.commentBox td.commentdetails { + vertical-align: top; + padding: 0 10px; +} + +.commentBox td.commentActions { + padding: 0 10px 10px 10px; + vertical-align: bottom; +} + +.commentThread { + clear: both; /* clear both in case there are floats or aligned images in the content that sits above the comment thread */ +} + +#replying .commentdetails { + padding: 15px 0 15px 25px +} + +#replying .commentinfo { + background-color: #a0a0a0; + color: #f0f0f0; +} + +#replying .commentdate, #replying .commentdate a { + color: #f0f0f0; +} + +#replying .commentname a { + color: #f0f0f0; +} + +#replying .commentphoto { + background-color: #a0a0a0; +} + +#replying table.comment { + border-bottom-color: #a0a0a0; + border-top-color: #a0a0a0; +} + +#addition .commentdetails { + padding: 15px 30px 10px 30px; +} + +#addition .commentinfo { + background-color: #a0a0a0; + color: #f0f0f0; +} + +#addition .commentname a { + color: #f0f0f0; +} + +#addition .commentdate, #addition .commentdate a { + color: #f0f0f0; +} + +#addition .commentphoto { + background-color: #a0a0a0; +} + +#addition table.comment { + border-bottom-color: #a0a0a0; + border-top-color: #a0a0a0; +} + +#focusedComment .commentBox td.commentdetails, #focusedComment td.commentActions { + background: #ffffd7; +} + +.anonymousAlert, .lockAlert { + background-color: #f0f0f0; + border: 1px dashed red; + font-size: 11px; + padding: 10px 5px; + margin: 4px; + line-height: 13px; +} + +.lockAlert { + width: 50%; +} + +.navmenu { + border: 1px solid #f0f0f0; + margin: 0; +} + +.menuheading { + font-weight: bold; + padding: 5px 4px 5px 10px; + color: #222; + background-color: #f0f0f0; +} + +.navmenu.collapsible-menu .menuheading { + background: #f0f0f0 url(../../../images/icons/grey_arrow_down.gif) no-repeat 98% 50%; +} +.navmenu.collapsible-menu .menuheading.closed { + background-image: url(../../../images/icons/grey_arrow_right.gif); +} + +.menuitems { + padding: 4px 4px 20px 4px; +} + +ul.navmenu { + padding-left: 0; + margin-top: 0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +ul.navmenu li.menu-section { + list-style: none; +} + +.menu-section-list { + margin: 0; + padding: 5px 0 10px 0; +} + +.menu-section-list li { + list-style: none; + margin: 0; + line-height: 1.3; +} + +.menu-section-list li a:hover { + background-color: #f0f0f0; +} + +.menu-section-list li.active a, +.menu-section-list li.active a:hover { + color: #fff; + font-weight: bold; + background-color: #444; /* set to neutral colour */ +} + +.menu-section-list li a { + text-decoration: none; + color: #666; + display: block; + padding: 0.2em 10px; + cursor: pointer; +} + +.menu-section-list li a img { + padding-right: 2px; +} + +.rightpanel { + background: #f0f0f0; + -moz-border-radius: 3px; /* Firefox */ + -webkit-border-radius: 3px; /* Safari */ + border-radius: 3px; /* CSS3 (Opera?) */ + padding: .9em; +} + +h3.underlined, +#helpheading, +.sidebar-heading { + padding: 0; + margin: 10px 0; + text-align: left; + color: #333; + border-bottom: 1px solid #ccc; +} + +#helpheading, +#helpcontent h3.underlined, +.sidebar-heading { + font-size: 13px; + margin: -.1em; + padding: .1em .1em .2em .1em; +} + +#helpcontent h3.helpheading-spacing{ + margin-top: 20px; +} + +#helpcontent { + margin-top: .9em; +} + +#helpcontent p { + margin-bottom: 0; + margin-top: .9em; +} + +#helpcontent ul { + padding-left: 1.3em; +} + +#helpcontent dl { + margin-top: 0; +} + +#helpcontent dl dd { + margin: 0; + color: #333; + font-size: 90%; + margin-bottom: .2em; +} + +#helpcontent dl dd code, +#helpcontent dl dd pre { + color: #666; + margin: 0; + padding: 0; +} + +#helpcontent dl dd.text-formatting code { + display: inline-block; + width: 6em; +} + +#helpcontent dl dt { + margin-top: 1em; +} +#helpcontent dl dt.first { + margin-top: 0; +} + +.helptab-unselected { + font-weight: bold; + padding: 5px; + background-color: #f5f7f1; +} +.helptab-selected { + font-weight: bold; + background-color: #d0d9bd; + padding: 5px; +} +.helptabs { + margin: 0; + background-color: #f5f7f1; + padding: 5px; +} + +#profileSummary h3 { + font-weight: bold; + font-size: 10pt; + margin: 12px 0 4px; + padding: 0; +} +#profileSummary ul { + list-style-type: none; + margin: 0; + padding: 0; +} + +.pageheader { + padding: 5px 5px 5px 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.pagetitle { + font-size: 18pt; + line-height: normal; + font-weight: bold; +} + +.newpagetitle { + color: #ccc !important; +} + +.steptitle { + font-size: 18px; + font-weight: bold; + margin-bottom: 7px; +} + +.substeptitle { + font-size: 12px; + font-weight: bold; + margin: 2px 4px 4px 4px; + padding: 2px 4px 1px 4px; +} + +.has-blog-sidebar #title-text a { + word-wrap: break-word; + display: inline-block; + max-width: 75%; +} + +.stepdesc { + font-size: 10pt; + line-height: 13pt; + font-weight: normal; + color: #666; + margin-top: 7px; + margin-bottom: 7px; +} + +.steplabel { + font-weight: bold; + margin-right: 4px; + color: black; + float: left; + width: 15%; + text-align: right; +} + +.stepfield { + background: #f0f0f0; + padding: 5px; +} + +.submitButtons{ + margin-top:5px; + text-align:right; +} + +.formtitle { + font-size: 12px; + font-weight: bold; +} + +.sectionbottom { + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.topRow { + border-top-width: 2px; + border-top-style: solid; +} + +/* CONF-20585: + * non-dashboard headings will keep their current style + * text styling is duplicated in the div because not all divs contain headings + */ +.tabletitle { + font-size: 10pt; + font-weight: bold; + padding: 3px 0 2px 0; + margin: 8px 4px 2px 0; + border-bottom-width: 2px; + border-bottom-style: solid; +} +.tabletitle h2, +.wiki-content .tabletitle h2 { + font-size: 10pt; + font-weight: bold; + padding: 0; + margin: 0; +} +form[name=inlinecommentform] .tabletitle { + border: 0; +} + +/* CONF-20585: + * .tabletitle on the dashboard is purely a container + * dashboard headings are styled like .welcome-message-heading + */ +.dashboard .tabletitle { + margin: 0; + padding: 0; + border: none; +} +.dashboard .tabletitle h2 { + font-size: 14pt; + color: #3C78B5; + font-weight: normal; + font: Arial FreeSans Helvetica sans-serif; + padding: 3px 0 2px 0; + margin: 1em 0 0 0; + border-bottom: 1px solid #ccc +} + +.tabletitleops { + float: right; +} +.tabletitleops, .tabletitleops a, .tabletitleops img { + vertical-align: middle; +} +.tabletitleops img { + border: none; +} + +.fullWidth { + width: 100%; +} + +.pagesubheading { + color: #666; + font-size: 10px; + padding: 0 0 5px 0; +} + +hr { + color: #ccc; + height: 1px; +} + +h1 a:link, h1 a:visited, h1 a:active { + text-decoration: none; +} + +.logocell { + padding: 10px; +} + +input { + font-family: Helvetica, Arial, sans-serif; + font-size: 10pt; + color: #000; +} +input[type='password'] { + -webkit-appearance: caps-lock-indicator; +} + +textarea, textarea.editor { + font-family: Arial, Helvetica, sans-serif; + font-size: 10pt; + color: #333; +} + +.spacenametitle-printable { + font: 20px Impact, Arial, Helvetica; + font-weight: 100; + line-height: 25px; + margin: 0; +} + +.spacenametitle-printable a, +.spacenametitle-printable a:visited { + text-decoration: none; +} + +.blogDate { + font-weight: bold; + text-decoration: none; + color: black; +} + +.blogSurtitle { + background: #f0f0f0; + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.blog-post-listing { + margin-bottom: 66px; +} + +.blog-post-listing .logo-heading-block { + padding-left: 61px; +} + +.blog-post-listing a.blogHeading{ + margin: 0.05em 0; + padding: 0; +} + +.blog-post-listing .blogHeading{ + display: inline-block; + word-wrap: break-word; + margin: 0.1em 0; +} +.blog-post-listing .logoBlock{ + display: inline-block; + float: left; + margin-left: -61px; + vertical-align: top; +} + +.blog-post-listing .page-metadata{ + margin: 0.1em 0 0.1em 0.1em; +} + +.blog-post-listing .page-metadata.not-personal{ + font-size: 1em; +} + +.blog-post-listing .wiki-content { + clear: both; +} + +a.blogHeading { + font-size: 20pt; + line-height: normal; + font-weight: bold; + text-decoration: none; + word-wrap: break-word; +} + +.blogHeading a:hover { + text-decoration: underline; +} + +.blog-pagination{ + padding-bottom: 1em; +} + +.endsection { + color: #666; + clear: both; + padding: 1em 0 0.5em; + font-size: 1em; +} +.endsectionleftnav { + text-align: right; + color: #666; + clear: both; + padding-top: 10px; +} + +.endsection img{ + border: 0; + vertical-align: middle; +} + +h1, h2, h3, h4, h5, h6 { + line-height: normal; + font-weight: bold; + padding: 2px; +} + +h1 { + font-size: 24px; + margin: 36px 0 4px 0; +} + +h2 { + font-size: 18px; + margin: 27px 0 4px 0; +} + +h3 { + font-size: 14px; + margin: 21px 0 4px 0; +} + +h4 { + font-size: 12px; + margin: 18px 0 4px 0; +} + +h5 { + font-size: 10px; + margin: 14px 0 4px 0; +} + +h6 { + font-size: 8px; + margin: 14px 0 4px 0; +} + +.smallfont { + font-size: 10px; +} +.descfont { + color: #666; + font-size: 10px; +} +.smallerfont { + font-size: 9px; +} +.smalltext { + color: #666; + font-size: 12px; +} +.smalltext a { + color: #666; +} +.greyText +{ + color: #666; +} +.smalltext-blue { + font-size: 8pt; + color: #69c; +} +.surtitle { + margin-left: 1px; + margin-bottom: 5px; + font-size: 14px; + color: #666; +} + +/* css hack found here: http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */ +.navItemOver { + font-size: 10px; + font-weight: bold; + voice-family: "\'}\'"; + voice-family: inherit; + cursor: pointer; +} + +.navItem { + font-size: 10px; + font-weight: bold; + color: #fff; +} + +.navItemOver a, +.navItemOver a:visited, +.navItemOver a:hover, +.navItem a, +.navItem a:hover, +.navItem a:visited { + text-decoration: none; +} + +div.padded { + padding: 4px; +} + +div.thickPadded { + padding: 10px; +} + +h3.macrolibrariestitle { + margin: 0; +} + +div.centered { + text-align: center; + margin: 10px; +} + +div.centered table { + margin: 0 auto; + text-align: left; +} + +.tableview table { + margin: 0; +} + +.tableview tr.alternateRow { + background: #f0f0f0; +} + +.tableview th { + text-align: left; + font-size: 12px; + padding: 5px 15px 2px 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} +.tableview td { + text-align: left; + border-color: #eee; + border-width: 0 0 1px 0; + border-style: solid; + margin: 0; + padding: 5px 15px 3px 0; +} + +.grid { + margin: 2px 0 5px 0; + border-collapse: collapse; +} +.grid th { + border: 1px solid #ccc; + padding: 2px 4px 2px 4px; + background: #f0f0f0; + text-align: center; +} +.grid td { + border: 1px solid #ccc; + padding: 3px 4px 3px 4px; +} +.gridHover { + background-color: #f9f9f9; +} + +td.infocell { + background-color: #f0f0f0; +} +.error { + background-color: #fcc; +} + +.errorBox { + background-color: #fcc; + border: 1px solid #c00; + padding: 5px; + margin: 5px; +} + +.errorMessage, .errorMessage p { + color: #c00; +} + +.success { + background-color: #dfd; +} + +.successBox { + background-color: #dfd; + border: 1px solid #090; + padding: 5px; + margin-top:5px; + margin-bottom:5px; +} + +blockquote { + font-style: italic; + font-size: 10pt; + border-left-width: 1px; + border-left-style: solid; + padding: 0 20px; + margin: 10px 20px; +} + +blockquote p { + font-size: 10pt; +} + +blockquote em { + font-style: normal; +} + +div.small { + font-size: 9px; +} + +h1.pagename { + margin-top: 0; +} + +/* The text how the "This is a preview" comment should be shown. */ +.previewnote { + text-align: center; + font-size: 11px; + color: red; +} + +/* How the preview content should be shown */ +.previewcontent { + background: #e0e0e0; +} + +/* How the system messages should be shown (DisplayMessage.jsp) */ +.messagecontent { + background: #e0e0e0; +} + +.createlink, +a.createlink, +a.createlink:link, +a.createlink:visited, +a.createlink:active, +a.createlink:hover { + color: maroon; +} +.templateparameter { + font-size: 9px; + color: #00008b; +} + +#page-diffs, #conflict-diffs{ + min-height: 54px; +} + +#page-diffs { + margin-bottom: 2em; +} +#page-diffs .diff { + margin-top: 0; +} +#page-diffs .diff div { + word-wrap: break-word; +} + +.key-diffs { + border: 1px solid #CCCCCC; + float: right; + padding: 0.5em; +} +.key-diffs .diff { + margin: 0; + padding: 0; +} + +.diff { + font: 12px Monaco, Consolas, "Courier New", monospace; + padding: 0 0 0 1.5em; + margin-top: 1em; +} +.diff td { + font-size: 0.9em; + padding-bottom: 0.3em; +} +.diff-added-lines, .diff-added-words, .diff-added-chars { + background: #dfd; +} +.diff-deleted-lines, .diff-deleted-words, .diff-deleted-chars { + color: #999; + background: #fdd; + text-decoration: line-through; +} +.differror { + background: #A52A2A; +} + +div.diff-snip-link img.twixie, +div.diff-snip-text img.twixie { + margin: 0 4px -6px -20px; /* Twixie is 16 pixels wide, sum of left and right margins should be -16px */ +} + +div.diff-snip-link, +div.diff-snip-text { + margin: 0.85em 0; +} + +.greybackground { + background: #f0f0f0 +} + +.greybox { + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.borderedGreyBox { + background-color: #F0F0F0; + padding: 0.9em; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + margin-bottom: 17px; + +} + +.space-labels div.borderedGreyBox{ + float: right; + width: 189px; +} + + + +.borderedLabelHeading{ + border-bottom: 1px solid #CCCCCC; + color: #333333; + font-size: 13px; + font-weight: bold; + margin-bottom: 0.7em; +} + +.greyboxfilled { + border: 1px solid #ddd; + background: #f0f0f0; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.lightGreyBox { + background: #fafafa; +} + +.navBackgroundBox { + padding: 5px; + font-size: 22px; + font-weight: bold; + color: white; + text-decoration: none; +} + +.previewBoxTop { + background-color: #f0f0f0; + border-width: 1px 1px 0px 1px; + border-style: solid; + padding: 5px; + margin: 5px 0px 0px 0px; + text-align: center; +} +.previewContent { + background-color: #fff; + border-width: 0px 1px 0px 1px; + border-style: solid; + padding: 10px; + margin: 0px; +} +.previewBoxBottom { + background-color: #f0f0f0; + border-width: 0px 1px 1px 1px; + border-style: solid; + padding: 5px; + margin: 0px 0px 5px 0px; + text-align: center; +} + +.functionbox { + background-color: #f0f0f0; + border: 1px solid; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.functionbox-greyborder { + background-color: #f0f0f0; + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.rowNormal { + background-color: #fff; + } + +.rowAlternate { + background-color: #f7f7f7; +} + +/* used in the list attachments table */ +.rowAlternateNoBottomColor { + background-color: #f7f7f7; +} + +.rowAlternateNoBottomColor td, +.rowAlternateNoBottomNoColor td { + border-bottom: 0; +} + +.rowHighlight { + background-color: #f0f0f0; +} + +td.greenBar, +td.greenbar, +td.graybar, +td.redbar, +td.darkredbar { + font-size: 1em; + border: 1px solid #9c9c9c; + padding: 0; +} + +td.greenBar, +td.greenbar { + background: #00df00; +} +td.graybar { + background: #808080; +} +td.redbar { + background: #df0000; +} +td.darkredbar { + background: #af0000; +} + +tr.testpassed { + font-size: 2px; + background: #dfd; + padding: 0; +} +tr.testfailed { + font-size: 2px; + background: #fdd; + padding: 0; +} + +.toolbar { + margin: 0; + border-collapse: collapse; +} + +.toolbar td { + border: 1px solid #ccc; + padding: 2px; + color: #ccc; +} + +td.noformatting { + border-width: 0; + border-style: none; + text-align: center; + padding: 0; +} + +/* + * Divs displaying the license information, if necessary. + */ +.license { + border-top: 1px solid #bbb; + text-align: center; + font-size: 10pt; + background-color: #ffffe0; +} + +.license-eval, .license-none { + background-color: #fcc; +} + +.license-eval b, .license-none b { + color: #900; +} + +/* + * The shadow at the bottom of the page between the main content and the + * "powered by" section. + */ +.bottomshadow { + height: 12px; + background-image: url("../../../images/border/border_bottom.gif"); + background-repeat: repeat-x; +} + +/* + * Styling of the operations box + */ +.navmenu .operations li, .navmenu .operations ul { + list-style: none; + margin-left: 0; + padding-left: 0; +} + +.navmenu .operations ul { + margin-bottom: 9px; +} + +.navmenu .label { + font-weight: inherit; +} + +/* + * Styling of ops as a toolbar + */ +.toolbar div { + display: none; +} + +.toolbar .label { + display: none; +} + +.toolbar .operations { + display: block; +} + +.toolbar .operations ul { + display: inline; + list-style: none; + margin-left: 10px; + padding-left: 0; +} + +.toolbar .operations li { + list-style: none; + display: inline; +} + +.bold { + font-weight: bold; +} + + +/* space action links */ +.tabnav .spaceActionLinks { + float: right; + margin: 0; + display: block; +} + +.tabnav .spaceActionLinks a span { + text-decoration: underline; +} +.tabnav .spaceActionLinks a.current { + color: black; +} +.tabnav .spaceActionLinks a.current span { + text-decoration: none; +} + +.tabnav .spaceActionLinks a.current:link { + color: black; +} + +.tabnav .spaceActionLinks a.current:visited { + color: black; +} + +/* non tabs */ +.tabnav .nontabs { + padding: 0; + margin: 5px 0 0 3px; + display: block; + float: left; +} + +/* editor tab customizations of the tabnav */ +#markupTab, #wysiwygTab, #previewTab { + font-size: 9pt; + padding: 3px 5px 2px; /* tab padding */ + margin: 8px 0 0 3px; /* margin-top is used to 'push' the tab down to fill in any gaps */ + font-weight: normal; +} + +/* alphabet list */ +#squaretab { + margin-left: 0; + padding-left: 0; + white-space: nowrap; + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 8pt; + line-height: 11pt +} + +#squaretab li { + display: inline; + list-style-type: none; +} + +#squaretab a { + padding: 5px 7px 3px 7px; + border-width: 1px; + border-style: solid; +} + +#squaretab a:link, +#squaretab a:visited { + color: #fff; + text-decoration: none; +} + +#squaretab a:hover { + text-decoration: none; +} + +#current { + background: #fff; + color: #000; +} + +.blogcalendar th, +.blogcalendar td { + font-size: x-small; + font-weight: normal; + line-height: 140%; + padding: 2px; +} + +table.blogcalendar { + border-width: 1px; + border-style: solid; +} + +.blogcalendar th.calendarhead, +a.calendarhead { + font-size: x-small; + font-weight: bold; + padding: 2px; + letter-spacing: 0.3em; + text-transform: uppercase; +} + +.blogcalendar th.calendarhead, +.calendarhead, +.calendarhead:link, +.calendarhead:visited, +.calendarhead:active, +.calendarhead:hover { + color: #fff; +} + +.blogcalendar th { + font-size: x-small; + font-weight: bold; + padding: 2px; + background-color: #f0f0f0; +} + +.blogcalendar td { + font-size: x-small; + font-weight: normal; +} + +.sidebar-section #bloglist{ + margin-top: 5px; + display: inline; +} + + +#bloglist{ + background-color: #f0f0f0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + width: 22em; + padding-top: 0.1em; +} + +.blogmonthnavigation{ + border:1px solid #CCCCCC; + position:relative; + text-decoration:none; + display: inline-block; + width: 10em; + font-size: 0.85em; + text-align:center; + margin: 0 0.3em 1em 1.1em; + padding: 0.2em 0.4em; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +div.pagination .blogmonthnavigation{ + margin: 0 0.5em 0 0; + width: 5em; + font-size: 1em; +} + +#blog-sidebar .bloglistmultiple{ + position: absolute; +} + +.bloglistitems li .icon-container { + display:block; + float:none; + padding-left:1.75em; +} + +.bloglistmultiple .bloglistheading h2{ + padding-top: 0; +} + +.bloglistitems{ + list-style-type: none; + padding-left: 1em; + padding-right: 1em; + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.bloglistitems li{ + padding-bottom: 7px; + word-wrap: break-word; +} + +.bloglistitems li img{ + padding-right: 0.5em; + vertical-align: middle; +} + + +.bloglistheading h2{ + text-align: left; + margin: 1em; + color: #333333; +} + +.bloglistheading h2 a{ + text-decoration: none; + color: #333333; +} + +.has-personal-sidebar .bloglistheading h2 a, +.has-personal-sidebar .bloglistheading h2 +{ + margin-left: -0.1em; + margin-right: -0.1em; + padding: 0.1em 0.1em 0.2em; +} + +.has-personal-sidebar .bloglistitems +{ + margin-left: -0.9em; +} + +.has-personal-sidebar .blogmonthnavigation +{ + margin-left: 0; + margin-right: 1em; + +} + +#bloglist .control { + position: absolute; + top: 8px; +} +#bloglist .control.prev { + left: 13px; +} + +#bloglist .control.next { + right: 13px; +} + +.searchGroup { + padding: 0 0 10px 0; + background: #f0f0f0; +} + +.searchGroupHeading { + font-size: 10px; + font-weight: bold; + color: #fff; + padding: 2px 4px 1px 4px; +} + +.searchItem { + padding: 1px 4px; +} + +.searchItemSelected { + padding: 1px 4px; + font-weight: bold; + background: #ddd; +} + +/* permissions page styles */ +.permissionHeading { + border-bottom: #bbb; + border-width: 0 0 1px 0; + border-style: solid; + font-size: 16px; + text-align: left; +} + +.permissionTab, +.permissionSuperTab, +.permissionCell { + border-width: 0 0 0 1px; + border-style: solid; +} + +.permissionTab { + font-size: 10px; +} + +.permissionCell { + border-left: #bbb; + white-space: nowrap; +} + +/* side menu highlighting (e.g. space content screen) */ +.optionPadded { + padding: 2px; +} + +.optionSelected, .optionPadded.selected { + background-color: #ffc; + padding: 2px; + border: 1px solid #ddd; + margin: -1px; +} + +.optionSelected a, .optionPadded.selected a { + font-weight: bold; + text-decoration: none; + color: black; +} + +/* styles for extended operations */ +.greyLinks a:link, +.greyLinks a:visited, +.greyLinks a:active, +.greyLinks a:hover { + color: #666; + text-decoration: underline; +} + +.greyLinks { + color: #666; + padding: 10px; +} + +.operation-links { + color: #666; + margin-bottom: 10px; +} +.operation-links a:link, +.operation-links a:visited, +.operation-links a:active, +.operation-links a:hover { + color: #666; + text-decoration: underline; +} + +.separatorLinks a:link, +.separatorLinks a:visited, +.separatorLinks a:active { + color: white; +} + +.greynavbar { + background-color: #f0f0f0; + border-top-width: 1px; + border-top-style: solid; +} + +div.headerField { + float: left; + width: auto; + height: 100%; +} + +.headerFloat { + margin-left: auto; + width: 50%; +} + +.headerFloatLeft { + float: left; + margin-right: 20px; + margin-bottom: 10px; +} + +#headerRow { + padding: 10px; +} + +.greyFormBox { + border: 1px solid #ccc; + padding: 5px; +} + +.openPageHighlight { + background-color: #ffc; + padding: 2px; + border: 1px solid #ddd; +} + +.editPageInsertLinks, .editPageInsertLinks a { + color: #666; + font-weight: bold; + font-size: 10px; +} + +/* Style for label heatmap. */ +.top10 a { + font-weight: bold; + font-size: 2em; + color: #036; +} +.top25 a { + font-weight: bold; + font-size: 1.6em; + color: #036; +} +.top50 a { + font-size: 1.4em; + color: #036; +} +.top100 a { + font-size: 1.2em; + color: #036; +} + +.heatmap { + list-style: none; + width: 95%; + margin: 0 auto; +} + +.heatmap a { + text-decoration: none; +} + +.heatmap a:hover { + text-decoration: underline; +} + +.heatmap li { + display: inline; +} + +.minitab { + padding: 5px; + margin: 1px 0 0 0; + border-bottom-width: 1px; + border-bottom-style: solid; + text-decoration: none; + float: none; +} + +.minitab a { + padding: 5px 5px; + margin-left: 3px; + margin-top: 1px; + border-top: 1px solid; + border-right: 1px solid; + border-left: 1px solid; +} + +#makeRichTextDefault, #makeMarkupDefault { + border: 0; + font-weight: normal; + text-decoration: none; + display: block; + height: 2.5em; +} + +.minitab .selected { + background: white; + border-bottom: 1px solid white; + color: #000; + text-decoration: none; +} +.minitab .unselected { + border-bottom-width: 1px; + border-bottom-style: solid; + color: #fff; + text-decoration: none; +} + +.minitab a.unselected:link, +.minitab a.unselected:visited { + color: white; +} +.minitab a.selected:link, +.minitab a.selected:visited { + color: black; +} + +.minitabFont { + font-size: 9pt; + line-height: 9pt; +} + +.linkerror { + background-color: #fcc; +} + +a.labelOperationLink:link, +a.labelOperationLink:active, +a.labelOperationLink:visited, +a.labelOperationLink:hover { + text-decoration: underline; +} + +a.newLabel:link, +a.newLabel:active, +a.newLabel:visited, +a.newLabel:hover { + background-color: #dfd; +} + +ul.square { + list-style-type: square; +} + +/* Label auto complete styles needed until we use requireResource properly in labels-include.vm */ +div.auto_complete { + width: 350px; + background: #fff; +} +div.auto_complete ul { + border: 1px solid #888; + margin: 0; + padding: 0; + width: 100%; + list-style-type: none; +} +div.auto_complete ul li { + margin: 0; + padding: 3px; +} +div.auto_complete ul li.selected { + background-color: #ffb; +} +div.auto_complete ul strong.highlight { + color: #800; + margin: 0; + padding: 0; +} + +/******* Edit Page Styles *******/ +.toggleFormDiv{ + border: 1px solid #a7a6aa; + background-color: white; + margin-top: 5px; +} + +.toogleInfoDiv{ + border: 1px solid #a7a6aa; + background-color: white; + display: none; + padding: 5px; + margin-top: 10px; +} + +.inputSection{ + margin-bottom: 20px; +} + +#anonymous-warning { + padding: 15px 10px; +} + +#editBox{ + border: 1px solid #d3d3d3; + background-color: #f0f0f0; +} + +.tab-navigation .current a { + color: #000; + background-color: #fff; + border-bottom-color: #fff; +} + +.replaced { + background-color: #3c6; +} + +.topPadding { + margin-top: 20px; +} + +/* new form style */ +.form-block { + padding: 6px; +} +.form-error-block { + background: #fcc; + border-top: #f0f0f0 1px solid; + border-bottom: #f0f0f0 1px solid; + margin-bottom: 6px; + padding: 0 12px; +} +.form-element-large { + font-size: 16px; + font-weight: bold; +} + +.form-element-small { + font-size: 12px; + font-weight: bold; +} + +.form-header { + background: #ffffe0; + border-top: #f0f0f0 1px solid; + border-bottom: #f0f0f0 1px solid; + margin-bottom: 6px; + padding: 12px; +} +.form-header p, .form-block p, .form-error-block p { + line-height: normal; + margin: 12px 0; +} +.form-example { + color: #888; + font-size: 11px; +} +.form-divider { + border-bottom: #ccc 1px solid; + margin-bottom: 6px; +} +.confluence-button, +a.confluence-button, +a.confluence-button:link, +a.confluence-button:hover, +a.confluence-button:visited { + text-decoration: none; + border: 1px solid #aaa; + color: #000; + padding: 5px 10px; + cursor: default; + background: #fff url(../../../images/decoration/buttons-bg-white.png) repeat-x 0 100%; + -moz-border-radius: 5px; /* Firefox */ + -webkit-border-radius: 5px; /* Safari */ +} + +.confluence-button:active, +a.confluence-button:active { + border-color: #69c; + background-color: #eee; + background-image: url(../../../images/decoration/buttons-bg.png); +} + +.form-block .error { + padding: 6px; + margin-bottom: 6px; +} + +form.edit-trust-app fieldset { + border: none; +} +form.edit-trust-app fieldset div { + border: none; + border-left: solid 11em #f0f0f0; + padding: 0; + float: left; +} +form.edit-trust-app fieldset label { + float: left; + width: 10em; + padding: 0; + margin: 5px 1em 0 -10.5em; + text-align: right; + clear: left; +} +form.edit-trust-app fieldset input, +form.edit-trust-app fieldset textarea { + margin: 5px 0 0 0; + float: left; +} +form.edit-trust-app fieldset div.buttons { + border: none; + clear: left; + text-align: center; + float: none; +} +form.edit-trust-app fieldset div.buttons input { + float: none; +} + +.status-red { + color: #800; + font-weight: bold; +} +.status-green { + color: #080; + font-weight: bold; +} + +.person { + background-color: white; + width: 200px; + float: left; +} +.person td { + white-space: nowrap; +} + +#blogcalendar span.fwdArrow { + float: right; + display: block; + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-image: url(/images/icons/forwd_16.gif); +} +#blogcalendar span.fwdArrow span { + display: none; +} +#blogcalendar span.backArrow { + float: left; + display: block; + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-image: url(/images/icons/back_16.gif); +} +#blogcalendar span.backArrow span { + display: none; +} +.pageInfoTable { + padding: 0; + margin: 0; + border: 0; + width: 100%; + border-collapse: collapse; +} +.pageInfoTable td { + padding: 3px; +} +.pageInfoTable tr.alternateRow { + background: #f0f0f0; +} +.pageInfoLayoutTable { + width: 100%; + border-collapse: collapse; +} + +.pageInfoLayoutTable td { + padding: 5px 16px 5px 0; +} + +.pageInfoLayoutTable .tableview td { + padding-left: 0; +} + +.pageInfoLayoutTable ul { + padding-left: 20px; + list-style-type: none; +} + +.memoryusagebar { + width: 100%; +} +.memoryusagebar td { + border: none !important; + vertical-align: middle !important; +} + +input.alignedCheckbox { + margin: 0; +} + +div.spacer { + clear: both; +} + +span.left { + float: left; + text-align: left; +} + +span.right { + float: right; + text-align: right; +} + +.nobr { + white-space: nowrap; +} + +label.normal { + font-weight: normal; + color: black +} + +div.leftFloatMargined { + float: left; + margin-right: 2px +} + +#entitySearchResults { + border-collapse: collapse; + background-color: #fafafa; + text-align: left; + width: 100%; +} + +#entitySearchResults td { + border-top: 1px solid #ccc; + padding: 3px; + background-color: white; + vertical-align: top; +} + +#entitySearchResults th { + color: #666; + padding: 3px; + white-space:nowrap; +} + +#entitySearchResults .firstColumn { + width: 2%; + text-align: right; +} + +#entitySearchResults .secondColumn { + width: 1px; + text-align: right; +} + +a.paddedGreyDisabled { + background-color: #f0f0f0; + padding: 4px; + text-decoration: none; + color: #666; +} + +a.grey { + color: #666; +} + +div.topBottomMargin { + margin: 10px 0 10px 0 +} + +div.bottomMargin { + margin-bottom: 10px +} + +table.spaceList { + border-collapse: collapse; +} + +tr.spaceList td { + padding: 5px 0 5px 5px; + border-bottom: 1px solid #eee; + vertical-align: top; +} + +.spaceList .spaceDescription { + margin-top: 3px; + color: #666; +} + +tr.spaceList .operations { + vertical-align: top; + padding-right: 5px; +} + +.fontSizeBigger { + font-size: 11pt; + line-height: 14pt; +} + +.fontSizeDefault { + line-height: 1.3em; +} + +.fontSizeSmaller { + font-size: 10pt; + line-height: 13pt; +} + +/* deprecated. TODO - check for use in themes and remove. */ +.fontSizeTiny { + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 8pt; + line-height: 11pt; +} + +table.dashboard td.left { + padding-right: 16px; +} + +/* dashboard action buttons */ +.dashboard .dashboard-action-button { + overflow: auto; + padding: 10px 0 20px 0; +} +.dashboard .dashboard-action-button span { + clear: both; + display: block; + margin: 0 0 10px 0; +} +.dashboard .dashboard-action-button span a, +.dashboard .dashboard-action-button span a:focus, +.dashboard .dashboard-action-button span a:hover { + color: #003366; + float: left; + padding: 0 10px 0 9px; + font-weight: bold; +} +/* pull the icons out so the link underline doesn't extend under them */ +.dashboard .dashboard-action-button span.icon { + float: left; + left: -5px; + position:relative; +} +/* end dashboard action buttons */ + +#view-attachments .dashboard-action-spacing{ + padding-top: 6px; + padding-bottom: 3px; +} + +#view-attachments a.dashboard-action{ + color: #000; +} + +.dashboard .dashboard-action:hover, #view-attachments .dashboard-action:hover { + color: #4F85BC; + background-position: 100% 0; +} + +.clearBoth { + clear: both; +} + +#labelInputSpan { + margin-top: 1px; +} + +form#quickSearch { + margin: 2px; + padding: 0; +} + +form#quickSearch input { + font-size: 10pt; + vertical-align: middle; +} + +table.fullWidthBorderless +{ + width: 100%; + border: 0; + border-collapse: collapse; +} + +/* Hacks for YUI menustuff */ + +#pageMenusMenuBar { + padding: 4px; +} + +#notificationFormat { + padding: 0; + margin: -9px 15px; +} + +#notificationFormat h4 { + font-weight: normal; +} + +#notificationFormat h2 { + font-weight: normal; +} + +#rssFormat { + padding: 0; + margin: 6px 15px; +} + +.notificationGreySide { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 0 0 5px 0; + padding: 3px 17px; +} + +.notificationDigest { + padding: 0 17px; +} + +.darkBlue { + color: #036; +} + +.grey { + color: #666; +} + +table.attachments { + width: 100%; + border-collapse: collapse; +} + +table.attachments th { + white-space: nowrap; + width: 1%; +} + +table.attachments td { + white-space: nowrap; + vertical-align: top; + width: 1%; +} + +table.attachments td.comment, table.attachments th.comment, table.attachments td.attachedto, table.attachments th.attachedto { + white-space: normal; + width: auto; +} + +#contentOptions { + list-style: none; + margin: 0; + padding: 0; +} + +#exportContentTree { + list-style-type: none; + margin: 5px 0; +} + +#contentOptionAllNote { + color: #666; + font-weight: normal; +} + +/* hidden: use when we want the content totally unavailable. */ +.hidden, +li.hidden { + display: none !important; + visibility: hidden; +} + +/* assistive: use when the hidden content should remain available to screen readers */ +.assistive, legend.assistive span { + position: absolute; + left: -20000px; + width: 4000px; + overflow: hidden; + top: 0; + height: 0; +} + +/* Needed for IE to stop the menu being expanded to 4000px */ +.ajs-menu-bar .ajs-menu-item .assistive { + position: absolute; + left: -20000px; + width: 4000px; + display: block; + visibility: visible; +} + +.ajs-menu-bar .ajs-menu-item .most-right-menu-item.assistive { + left: auto; + right: 20000px; +} + +#main { + text-align: left; + background-color: #fff; +} +#header { + min-height: 1.8em; + line-height: 1.8; + margin: 0; + padding: 0; + position: relative; + z-index: 1; +} +.quick-search { + margin: 0; + padding: 0; +} +#quick-search fieldset { + float: right; +} +.quick-search fieldset { + border: none; + margin: 0; + padding: 0; +} +.quick-search legend { + display: none; +} +input.blank-search, +input.placeholded, +.quick-search .placeholded { + color: #666; +} +#quick-search-query { + width: 13em; +} +/* default user navigation styles for themes using the old markup */ +#user-control-panel, #page-view-panel, #page-prefs-list { + list-style: none; + margin: 0; + padding: 0; +} +#user-control-panel li, +#page-view-panel li, +#page-prefs-list li, +.userNavBar li { /* deprecated styles provided for themes written prior to 2.8 */ + list-style: none; + display: inline; + color: #666; + font-size: 0.95em; + padding: 0 0 0 0.3em; +} +#user-control-panel a { + color: #666; +} +#user-control-panel li.first { + border:medium none; +} +#user-control-panel li { + border-left: 1px solid #666; + padding-left: 0.5em; +} +#page-view-panel li { + float: right; +} + +#breadcrumbs { + list-style: none; + padding: 0; + margin: 0; + overflow: auto; +} + +#breadcrumbs li { + white-space: nowrap; + display: inline; + float: left; + margin: 0 .2em 0 0; + padding-left: 15px; + background: url(../../../images/decoration/white_breadcrumbs_indicator.png); + background-repeat: no-repeat; + background-position: 3px center; +} + +#breadcrumbs li.first { + padding-left: 0; + background-image: none; +} + +#breadcrumbs li a { + text-decoration: none; +} + +#breadcrumbs li a:hover { + text-decoration: underline; +} + +#breadcrumbs li span { + display: block; +} + +#ellipsis strong { + cursor: pointer; + font-weight: normal; +} + +#breadcrumbs li.hidden-crumb { + display: none; +} + +a.twisty-open, a.twisty-closed { + background: no-repeat 50% 50%; + float: left; + margin-right: 0.5em; +} +a.twisty-open { + background-image: url(../../../images/icons/arrow_down.gif); +} +a.twisty-closed { + background-image: url(../../../images/icons/arrow_right.gif); +} + +a.print { + background: url(../../../images/icons/print_16.gif) no-repeat 50% 50%; +} +a.feed { + background: url(../../../images/icons/feed-icon-16x16.png) no-repeat 50% 50%; +} +a.pdf { + background: url(../../../images/icons/attachments/pdf.gif) no-repeat 50% 50%; +} +a.help { + background: url(../../../images/icons/help_16.gif) no-repeat 50% 50%; +} +a.add-user { + background: url(../../../images/icons/classic/16/125.png) no-repeat 50% 50%; +} + +a.remove-user { + background: url(../../../images/icons/classic/16/123.png) no-repeat 50% 50%; +} + +a.groups { + background: url(../../../images/icons/classic/16/127.png) no-repeat 50% 50%; +} + +a.cancel { + background: url(../../../images/icons/emoticons/error.gif) no-repeat 50% 50%; +} + +a.search-icon { + background: url(../../../images/icons/srch_16.gif) no-repeat 50% 50%; +} + +a img { + border: none; +} + +a.texticon { + min-height: 16px; + text-align: left; + padding:0 10px 0 20px; + background-position: 0 50%; + outline:0 none; +} + + +/* // Links **/ +#com-atlassian-confluence h1 { + line-height: 2; + margin: 0 0 10px 0; + padding: 0; + width: 100%; +} +#com-atlassian-confluence h1 img { + float: left; + margin: 0 .3em 0 0; +} +br.clear { + clear: both; + height: 1px; + overflow: hidden; +} +#footer, #footer-warning { + background: #f0f0f0; + text-align: center; +} +#footer p.license, #footer p.license a { + background: #036; + color: #fff; + margin: 0; +} +#poweredby { + border-top: 1px solid #bbb; + color: #666; + margin: 0; + padding: .5em; + list-style: none; +} +#poweredby a, #footer-warning { + color: #666; + text-decoration: none; +} +#poweredby li { + display: inline; +} +#poweredby li.print-only { + display: none; +} + +#poweredby a:hover.hover-footer-link{ + text-decoration: underline; +} + +#footer p.warning { + margin: 0 40px 10px 40px; + text-align: center; +} + +#menu-bar, #navigation .space-browse-links { + float: right; +} +#navigation .space-browse-links ul { + list-style: none; + margin: 0; + padding: 0; +} +#menu-bar { + margin: 0 .5em; +} +table { + clear: left; +} +.space-browse-links a:link, +.space-browse-links a:active, +.space-browse-links a:visited { + border: 1px solid #69c; + color: #000; + display: block; + font-weight: bold; + line-height: 2; + margin: 0.35em 0 -1px 0.5em; + padding: 0 0.5em 0 24px; + position: relative; + text-decoration: none; +} +.space-browse-links a:hover { + background-color: #036; + border: 1px solid #036; + color: #fff; +} +.space-browse-links a img { + float: left; + left: 4px; + margin: -8px 0 0; + position: absolute; + top: 50%; +} +#tree-div { + min-height:300px; +} +.mailLabel { + color: #666; + font-weight: bold; +} + +.unparented { + list-style: none; + margin: 0; + padding: 0; +} + +.parented { + list-style-image: url(../../../images/icons/link_out_bot.gif); +} + +.mailthread ul { + list-style-image: url(../../../images/icons/link_out_bot.gif); +} +.selectedMail { + background-color: #ffc; + padding: 2px; + border: 1px solid #ddd; +} + +.excerpt { + margin-top: 0; + margin-bottom: 0; +} + +.captcha { + padding: 10px; +} + +.captcha-image { + width: 200px; + height: 100px; +} + +#version-info { + margin-bottom: 10px; + padding:15px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +.version-info span.page-history-view{ + display: block; + padding-bottom: 5px; + padding-top: 5px; + margin-left: 24px; +} + +.version-info span.page-history-view, .version-info span.page-history-view a { + color: #666666; + font-size: 9pt; + +} + +.version-info a.version-navigation{ + border:1px solid #EEEEEE; + padding:0.2em 0.4em; + position:relative; + text-decoration:none; + top:1px; + display: inline-block; + min-width: 75px; + text-align:center; +} + +.version-info span.current-version-margin{ + margin: 15px; +} + +.version-info div.navigation-spacing{ + margin-left: 24px; + padding-top: 2px; + font-size: 8pt; + +} + +.version-info strong.version-info-description{ + margin-left: 4px; +} + +.has-sidebar #version-info{ + margin-right: 17em; +} + +.has-blog-sidebar #version-info{ + margin-right: 24em; +} + +/* Fix menu focus when selecting with mouse in Firefox */ +li:active, a:active { + outline: none; +} + +/* Confluence global/space message styles */ +#messageContainer { + background: #fff; + list-style: none; + margin: 0; + padding: 0; +} + +#messageContainer li { + padding: 5px; + display: none; +} + +.message-close-button { + height: 16px; + width: 16px; + border: none; + float: right; + cursor: pointer; +} + +.page-metadata ul { + overflow: hidden; + margin: 0; + padding: 0; +} + +.page-metadata ul li { + list-style: none; + float: left; + padding: 0 5px 0 0; + margin: 0; +} + +.page-metadata ul a.page-metadata-icon { + text-decoration: none; +} + +.page-metadata ul a.page-restrictions span, +.page-metadata ul a.page-tinyurl span, +.page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + float: left; + height: 16px; + width: 16px; + text-indent: -9999em; +} + +.page-metadata ul a.page-restrictions span { + background: url(../../../images/icons/lock_16_grey.png) no-repeat; +} + +.page-metadata ul a.page-tinyurl span { + background: url(../../../images/icons/permalink_light_16.png) no-repeat; +} + +.page-metadata ul a.page-tinyurl:hover span { + background: url(../../../images/icons/permalink_dark_16.png) no-repeat; +} + +.page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + background: url(../../../images/icons/attach_16.png) no-repeat; +} + +.on-label, .yes-label { + color: #090; + font-weight: 800; +} + +.off-label, .no-label { + color: #900; + font-weight: 800; +} + +.progress-fill-color { + background: #00df00; +} + +.progress-background-color { + background: #fff; +} + +.vertical-center-aligning-container { + display: table; + height: 400px; + /* position : relative; */ + overflow: hidden; +} + +.vertical-center-div-outer { + display: table-cell; + vertical-align: middle; +} + +.vertical-center-div-inner { + text-align: center; +} + +.in-progress { + background-color: #ccc; +} + +h2.subheading, +#profile-main h2.subheading { + border-bottom: 1px solid #ddd; + color: #333; + font-weight: normal; + font-size: 1.1em; + margin: 0; +} + +.subheading { + color: #222; +} + +/*Columns*/ +div.section.one { + float: left; + width: 40%; +} +div.section.two { + float: left; + width: 60%; +} +div.section.two .section { + margin-left: 10px; +} + +.subheading .rss-icon { + background: url(../../../images/icons/feed-icon-16x16.png); + float: right; + height: 16px; + text-decoration: none; + width: 16px; + line-height: 0; +} + +.subheading .email-notification-icon { + background: url(../../../images/icons/watch_on_16.png); + float: right; + height: 16px; + text-decoration: none; + width: 16px; + line-height: 0; + margin-right: 5px; +} +/* End Confluence master stylesheet */ + +/** Font Colours */ +em.bad, +strong.bad { + font-style: normal; + color: #900; +} +em.good, +strong.good { + font-style: normal; + color: #090; +} +em.disabled, +strong.disabled { + font-style: normal; + color: #999; +} +/* **/ + +.blogpost .wiki-content { + _height: 1%; +} + +#version-comment.noteMacro { + padding: 5px; + +} + +#space-admin-body { + padding: 0 10px; +} + +#ajax-error { + background-color: #fcc; + border: 1px solid #741311; +} + +#ajax-error span.error{ + display: block; + text-align: center; + color: #741311; + line-height: 2; +} + +#ajax-error span.error a.close{ + margin-left: 10px; + text-decoration: underline; +} + +#poweredby { + background-image: url(../../../images/decoration/footer-shadow.gif); + background-repeat: repeat-x; +} + +#footer-warning { + display: block; + background-color: #ffffce; + border-top: 1px solid #f0c000; + border-bottom: 1px solid #f0c000; + color: #000; + padding: 2px 5px; +} + +.welcome-message-heading{ + font-size: 14pt; + color: #3C78B5; + font-weight: normal; + font: Arial FreeSans Helvetica sans-serif; + padding: 3px 0 2px 0; + margin: 1em 4px 0 0; + border-bottom: 1px solid #ccc; +} +.wiki-content, +.wiki-content p, +.wiki-content table, +.wiki-content tr, +.wiki-content td, +.wiki-content th, +.wiki-content ol, +.wiki-content ul, +.wiki-content li { + font-size: 10pt; + line-height: 13pt; +} + +.wiki-content p { + margin: 10px 0; + padding: 0; +} + +.wiki-content li, +.wiki-content ul p, +.wiki-content ol p { + margin: 0; + padding: 0; +} + +.wiki-content ul { + list-style-type: disc; +} + +.wiki-content ol, +.wiki-content ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol ol { + list-style-type: decimal; +} + +.wiki-content ol ol, +.wiki-content ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol ol ol { + list-style-type: lower-alpha; +} + +.wiki-content ol ol ol, +.wiki-content ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol ol ol ol { + list-style-type: lower-roman; +} + +/*Needs the id selector because of the +'#com-atlassian-confluence h1' entry in master.css*/ +#com-atlassian-confluence .wiki-content h1, +.wiki-content h1, +.wiki-content h2, +.wiki-content h3, +.wiki-content h4, +.wiki-content h5, +.wiki-content h6 { + font-weight: bold; + line-height: normal; + padding: 0; +} + + +#com-atlassian-confluence .wiki-content h1, +.wiki-content h1 +{ + font-size: 21pt; + margin-top: 38px; +} + +.wiki-content h2 { + font-size: 18pt; + margin-top: 32px; +} + +.wiki-content h3 { + font-size: 15pt; + margin-top: 28px; +} + +.wiki-content h4 { + font-size: 13pt; + margin-top: 25px; +} + +.wiki-content h5 { + font-size: 11pt; + margin-top: 22px; +} + +.wiki-content h6 { + font-size: 10pt; + margin-top: 22px; +} + +.wiki-content .confluenceTable, .grid { +/* + margin-left: 0; + margin-right: 0; + margin-top: 10px; + margin-bottom: 10px; +*/ + padding: 0; + margin: 5px 0; +} + +.wiki-content td.confluenceTd, +.wiki-content th.confluenceTh { + padding: 5px 7px; +} +.wiki-content-preview { + padding: 5px; + border-left: 1px solid; + border-right: 1px solid; +} + +.wiki-content .preformattedContent, +.wiki-content .codeContent{ + padding: 12px 10px; +} + +.wiki-content .preformattedContent pre, +.wiki-content .codeContent pre{ + margin:0; + /** matches renderer-macros.css: .preformatted pre */ + font-family:"Courier New",Courier,monospace; + line-height:1.3; +} + +/* Styles for TinyMCE editor content */ + +.mceContentBody { + border: none; + padding: 10px; + text-align: left; + background: #fff; +} + +/* IE makes paragraphs in tables, so remove the default margin */ +.mceContentBody .confluenceTable p { + margin: 0; +} + +/* Firefox puts resizing controls on tables. They don't line up with tables unless they have margin 1px. +(0 breaks the border) */ +body.mceContentBody table.confluenceTable { + margin: 1px; +} + +.mceContentBody .wysiwyg-macro-body-preformat { + border: #ccc solid 1px; /* stick to neutral colour, or move to colors-css.vm if required */ + /* horizontal margin matches .panel */ + margin: 5px 20px; +} + +/* Styles for macros */ +.mceContentBody .wysiwyg-macro-inline { + display: inline; +} +.mceContentBody .user-new-line, +.mceContentBody .wysiwyg-macro-body-newline { + display: none; + line-height: 0; +} + +/* Styles for the RTE Autocomplete component */ +#autocomplete { + background-color: #eee; + border: solid 1px #ddd; +} +#autocomplete-trigger{ + background-color: #ddd; + padding: 0 2px; +} +#autocomplete-search-text { + padding: 0 4px 0 2px; +} +#tab-navigation { + border-bottom: 1px solid; + margin: 0 -10px; + margin-bottom: 10px; + padding: 0 10px; +} + +.tab-navigation { + list-style: none; + display: block; + margin: 0 0 -1px; + padding: 0; + overflow: hidden; +} +.tab-navigation .tab { + float: left; + display: inline; + font-weight: bold; + margin: 0 5px -1px 0; +} +.tab-navigation .tab a { + padding: .3em .4em; + text-decoration: none; + display: block; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; +} +.tab-navigation .notab { + margin: 1px 1px 0 1px; + padding: .3em; + float: left; +} + +/* Make the following more specific, so they aren't overriden by themes. */ +ul.tab-navigation .current a { + color: #000; + background-color: #fff; + border-bottom-color: #fff; /* IE */ +} +ul.tab-navigation .current a:hover { + color: #000; + background-color: #fff; + border-bottom-color: #fff; /* IE */ +} + +/* + * Drop down menu stylesheet + */ + +/* Menu bar layout */ +.ajs-menu-bar { + float: right; + line-height: 1.5; + position: relative; +} +.ajs-menu-bar, +.ajs-menu-bar .ajs-button, +.ajs-menu-bar .ajs-button a, +.ajs-menu-bar .ajs-button span, +.ajs-menu-bar .ajs-menu-item .ajs-menu-title, +.ajs-menu-bar .ajs-menu-item .ajs-menu-title span, +.ajs-menu-bar .ajs-menu-item .ajs-menu-title span span, +.ajs-menu-bar .ajs-drop-down a, +.ajs-menu-bar .ajs-drop-down a span, +.ajs-menu-bar .ajs-drop-down a span span { + /* all containers are block-level with no margin or padding by default */ + display: block; + margin: 0; + padding: 0; +} +.ajs-menu-bar .ajs-button span, +.ajs-menu-bar .ajs-menu-item .trigger span span { + padding-right: 1em; /* gap after menu label, must be wider than indicator image */ +} +.ajs-menu-bar .ajs-menu-item, +.ajs-menu-bar .ajs-button { + float: left; + list-style: none; + position: relative; +} +.ajs-menu-bar .ajs-menu-item a, +.ajs-menu-bar .ajs-button a { + line-height: 1.5; + text-decoration: none; + white-space: nowrap; +} +.ajs-menu-bar .ajs-button { + float: left; + line-height: 2; + list-style: none; + position: static; +} + +/* Drop-down indicator icon and on-hover colour changing */ +.ajs-menu-bar .ajs-menu-item .trigger span { + background-image: url(../../../images/decoration/menu_indicator.gif); + position: relative; +} +.ajs-menu-bar .ajs-menu-item.opened .trigger span { + background-image: url(../../../images/decoration/white_menu_indicator.gif); +} + +.ajs-menu-bar .ajs-menu-item.opened .trigger span span, +.ajs-menu-bar .ajs-menu-item .trigger span span { + background-image: none; +} +.ajs-menu-bar .ajs-button a:hover, +.ajs-menu-bar .ajs-menu-item.opened .trigger span { + color: #fff; /* system colour - not derived from colour scheme */ +} + +/* Menu bar icons */ +.ajs-menu-bar .ajs-menu-item .trigger span { + background-position: 100% 50%; + background-repeat: no-repeat; +} +.ajs-menu-bar .ajs-button span, +.ajs-menu-bar .ajs-menu-item .trigger span span { + background-position: 0 50%; + background-repeat: no-repeat; +} + +/* Drop-down menu layout */ +.ajs-menu-bar .ajs-menu-item .ajs-drop-down a { + background: #fff no-repeat 4px 50%; + border: none; + display: block; + line-height: 1.6; + margin: 0; + padding: 0 0.5em 0 24px; + text-decoration: none; +} +.ajs-menu-bar .ajs-drop-down { + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + background: #fff; /* system colour - not derived from colour scheme */ + border: solid 1px #c1c1c1; + font-weight: normal; + min-width: 12em; + padding: 0; + position: absolute; + left: 0; + white-space: nowrap; + z-index: 1000; +} + +/* CONFDEV-820 - Temporary fix */ +#header-menu-bar .ajs-drop-down { + min-width: 15em; +} + +.ajs-menu-bar .ajs-drop-down.above { + -moz-border-radius: 0; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -webkit-border-radius: 0; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + bottom: 2em; + margin-top: -2px; +} +.ajs-menu-bar .ajs-drop-down ul, +.ajs-menu-bar ul.ajs-drop-down { + border-top: solid 1px #e1e1e1; + margin: 0; + padding: 5px 0; + position: relative; + list-style: none; +} +.ajs-menu-bar .ajs-drop-down ul.first, +.ajs-menu-bar ul.ajs-drop-down.first { + border-top: none; +} +.ajs-menu-bar .ajs-drop-down li { + margin: 0; + padding: 0; +} +.ajs-menu-bar .ajs-menu-item div.ajs-drop-down a { + background-position: .5em 50%; + background-repeat: no-repeat; + border: none; + display: block; + line-height: 2; + margin: 0; + padding: 0 1em 0 28px; + position: relative; + text-decoration: none; + white-space: nowrap; +} +.ajs-menu-bar .ajs-drop-down a img { + float: left; + height: 16px; + margin: .3em 0 0 -20px; + width: 16px; +} + +/* Drop-down menu icons */ +.ajs-menu-bar .ajs-drop-down a.add-comment { + background-image: url(../../../images/icons/comment_16.png); +} +.ajs-menu-bar .ajs-drop-down a.add-attachment { + background-image: url(../../../images/icons/attach_16.png); +} +.ajs-menu-bar .ajs-drop-down a.add-page { + background-image: url(../../../images/icons/docs_16.gif); +} +.ajs-menu-bar .ajs-drop-down a.add-news { + background-image: url(../../../images/icons/blogentry_16.gif); +} +.ajs-menu-bar .ajs-drop-down a.action-view-history { + background-image: url(../../../images/icons/clock_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-permissions { + background-image: url(../../../images/icons/lock_16_grey.png); +} +.ajs-menu-bar .ajs-drop-down a.action-view-attachments { + background-image: url(../../../images/icons/attach_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-favourite { + background-image: url(../../../images/icons/fav_off_16.png); +} +.ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected { /* using IE style here to make IE7 not duplicate bg */ + background-image: url(../../../images/icons/fav_on_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-watching-space { + background-image: url(../../../images/icons/watching_space_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-manage-watchers { + background-image: url(../../../images/icons/watch_manage_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-watching { + background-image: url(../../../images/icons/watch_off_16.png); +} +.ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected { /* using IE style here to make IE7 not duplicate bg */ + background-image: url(../../../images/icons/watch_on_16.png); +} +.ajs-menu-bar .ajs-drop-down a.waiting { + background-image: url(../../../images/icons/wait.gif); +} + +.ajs-menu-bar .ajs-menu-item .section-secondary li a, +.ajs-menu-bar .ajs-menu-item .section-modify li a { + padding-left: 8px; + font-size: .9em; +} + +.ajs-menu-bar .ajs-menu-item .ajs-drop-down li.hidden { + display: none; +} + +/* Customisations for header menu bar */ +#header-menu-bar { + margin-top: 0; + margin-right: 5px; +} +#header .ajs-menu-item a { + float: left; + line-height: 1.5; + margin: 0; + text-decoration: underline; +} +#header-menu-bar li.ajs-menu-item a { + line-height: 2; +} +#header-menu-bar li.ajs-menu-item .ajs-drop-down a { + line-height: 1.5; +} +#header .ajs-menu-bar li.ajs-menu-item, +#header .ajs-menu-bar li.ajs-button { + margin: 0; + padding: 0; +} +#header .ajs-menu-bar li.ajs-menu-item a { + padding-left: 0.5em; +} +#header .ajs-menu-item .trigger span { + background-image: url(../../../images/decoration/white_menu_indicator.gif); /* header menus always use a white indicator */ +} +#header .ajs-menu-item .trigger span span { + background: none; +} +#header .ajs-menu-bar li.ajs-menu-item a.trigger:focus { + outline: none; +} +#header .ajs-menu-bar li.ajs-menu-item a.trigger { + float: left; + padding: 0 0.5em; + text-decoration: none; +} +#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down li, +#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down a { + background-color: #fff; /* system colour - not derived from colour scheme */ + background-image: none; +} +.ajs-menu-bar .ajs-menu-item.opened, +.ajs-menu-bar .ajs-button a { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} +.ajs-menu-bar .ajs-menu-item.opened { + -moz-border-radius-bottomleft: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 0; +} + +/* Customisations for header menus */ +#header .ajs-menu-bar .ajs-drop-down { + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-top: none; + margin-top: 0; + margin-left: -1px; + top: 2em; + z-index: 9; +} +#header .ajs-menu-bar .ajs-drop-down a { + float: none; + padding: 2px 2em; + text-decoration: none; +} +#header .ajs-menu-bar .ajs-menu-item .ajs-drop-down ul, +#header .ajs-menu-bar .ajs-menu-item ul.ajs-drop-down { + border-top: 1px solid #cce; +} +#header .ajs-menu-bar .ajs-drop-down ul.first, +#header .ajs-menu-bar ul.ajs-drop-down.first { + border: none; +} + +/* Customisations for navigation menu bar */ +#navigation .ajs-menu-bar { + margin: 10px 0 0 1em; +} +#navigation .ajs-menu-bar .ajs-button span, +#navigation .ajs-menu-bar .ajs-menu-item .ajs-menu-title span span { + padding-left: 25px; /* width of icon + gap before menu label */ +} +/*#navigation .ajs-menu-bar li.ajs-menu-item, +#navigation .ajs-menu-bar li.ajs-button { + margin-top: -10px; +} +*/ +#navigation .ajs-menu-bar li.ajs-menu-item .ajs-menu-title, +#navigation .ajs-menu-bar li.ajs-button a { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + color: #535353; /* system colour - not derived from colour scheme */ + font-size: 1.1em; + line-height: 20px; + padding: .35em .5em; +} +#navigation .ajs-menu-bar li.ajs-menu-item .ajs-menu-title { + -moz-border-radius-bottomleft: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 0; +} +#navigation .ajs-menu-bar .ajs-button a.edit span { + background-image: url(../../../images/icons/edit_20.png); +} +#navigation .ajs-menu-bar .ajs-button a.view span { + background-image: url(../../../images/icons/view_20.png); +} +#navigation .ajs-menu-bar li.ajs-menu-item a.add span span { + background-image: url(../../../images/icons/add_20.png); +} +#navigation .ajs-menu-bar li.ajs-menu-item a.action span span { + background-image: url(../../../images/icons/tools_20.png); +} +.ajs-menu-bar .ajs-menu-item .most-right-menu-item { + left: auto; + margin: 0; + right: 0; +} +#header .ajs-menu-item a.ajs-menu-title span { /* Not sure why these styles need to be duplicated for IE, but it works. */ + background-image: url(../../../images/decoration/white_menu_indicator.gif); /* header menus always use a white indicator */ + background-repeat: no-repeat; + background-position: 100% 60%; /* 60% lines up with middle of lowercase letters in IE */ +} +.ajs-drop-down { + clear: both; + z-index: 500; + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down li { + border-bottom: solid 1px #fff; +} +.ajs-menu-bar .ajs-drop-down li { + display: block; + margin: 0; + padding: 0; + position: relative; +} + +#navigation .ajs-menu-bar .ajs-drop-down a { + display: block; + padding: 0.33em 0.67em; + cursor: pointer; +} +#navigation .ajs-menu-bar div.ajs-drop-down a span { + padding: 0 0 0 21px; + height: 16px; + line-height: 16px; +} +.ajs-menu-bar div.ajs-drop-down a span { + cursor: pointer; + height: 16px; + line-height: 16px; + zoom: 1; +} +#navigation .ajs-menu-bar .section-secondary li a, +#navigation .ajs-menu-bar .section-modify li a { + line-height: 2; + padding-left: 0; +} +#navigation .ajs-menu-bar .section-secondary li a span, +#navigation .ajs-menu-bar .section-modify li a span { + padding-left: 8px; +} +.ajs-menu-bar .ajs-drop-down a img { + clear: left; + float: none; + margin: .3em 0 .3em -20px; + vertical-align: middle; +} + +#navigation .ajs-menu-bar .ajs-button a, +#navigation .ajs-menu-bar .ajs-button a span { + display: inline-block; /* makes the edit button have layout, but doesn't give it enormous width*/ +} + +.ajs-menu-bar .ajs-drop-down a.add-page, +.ajs-menu-bar .ajs-drop-down a.add-news { + background: none; +} +.ajs-menu-bar .ajs-drop-down a.add-page span { + background: url(../../../images/icons/docs_16.gif) no-repeat 0 50%; +} +.ajs-menu-bar .ajs-drop-down a.add-news span { + background: url(../../../images/icons/blogentry_16.gif) no-repeat 0 50%; +} + +* html .ajs-menu-bar .ajs-drop-down a.add-comment { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.add-comment span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/comment_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.add-attachment, +* html .ajs-menu-bar .ajs-drop-down a.action-view-attachments, +* html .page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.add-attachment span, +* html .ajs-menu-bar .ajs-drop-down a.action-view-attachments span, +* html .page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/attach_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .page-metadata ul a.action-view-attachments span.page-metadata-attachments-count { + display: inline-block; /* IE6 */ + text-indent: 9999em; +} +* html .page-metadata ul a.page-restrictions span, +* html .ajs-menu-bar .ajs-drop-down a.action-view-history, +* html .ajs-menu-bar .ajs-drop-down a.action-page-permissions, +* html .ajs-menu-bar .ajs-drop-down a.action-page-favourite, +* html .ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected, +* html .ajs-menu-bar .ajs-drop-down a.action-manage-watchers, +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching-space, +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching, +* html .ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.action-view-history span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/clock_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .page-metadata ul a.page-restrictions span, +* html .ajs-menu-bar .ajs-drop-down a.action-page-permissions span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/lock_16_grey.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-page-favourite span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/fav_off_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/fav_on_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching-space span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watching_space_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-manage-watchers span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watch_manage_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watch_off_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watch_on_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.waiting { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.waiting span { + background-image: url(../../../images/icons/wait.gif); + background-repeat: no-repeat; + filter: inherit; +} +* html #navigation .ajs-menu-bar .ajs-button a.edit span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/edit_20.png', sizingMethod='crop')"); + width: 1%; +} + +* html #navigation .ajs-menu-bar li.ajs-menu-item a.add span span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/add_20.png', sizingMethod='crop')"); + width: 1%; +} + +* html #navigation .ajs-menu-bar li.ajs-menu-item a.action span span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/tools_20.png', sizingMethod='crop')"); + width: 1%; +} + +* html #navigation .ajs-menu-bar .ajs-button a.view span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/view_20.png', sizingMethod='crop')"); + width: 1%; +} + +table.confluenceTable { + margin: 5px; + border-collapse: collapse; +} + +td.confluenceTd, table.confluenceTable td.confluenceTd { + border-width: 1px; + border-style: solid; + border-color: #ddd; + padding: 5px; + vertical-align: top; + min-width: 0.6em; +} + +th.confluenceTh, table.confluenceTable th.confluenceTh { + border-width: 1px; + border-style: solid; + border-color: #ddd; + padding: 5px; + background-color: #f0f0f0; + text-align: left; + vertical-align: top; + min-width: 0.6em; +} +.panel { + color: black; + padding: 0; + margin: 10px 20px; + background: #f0f0f0; + border-width: 1px; + border-style: solid; + overflow: hidden; +} + +.alertPanel { + border-color: #c00; +} + +.infoPanel { + border-color: #69c; +} + +.alertPanel, .infoPanel { + border-style: solid; + border-width: 1px; + padding: 8px; + margin: 10px; +} + +.infopanel-heading { + font-weight: bold; + padding: 4px 0 2px 0; +} + +/* basic panel (basicpanel.vmd) style */ +.basicPanelContainer { + border-width: 1px; + border-style: solid; + margin-top: 2px; + margin-bottom: 8px; + width: 100%; +} + +.basicPanelTitle { + padding: 5px; + margin: 0; + background-color: #f0f0f0; + color: black; + font-weight: bold; +} + +.basicPanelBody { + padding: 5px; + margin: 0; +} + +.panelHeader { + padding: 0 12px; + line-height: 2; /* vertical alignment for title */ + text-align: center; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.codeHeader, .panelHeader, .panelContent { + background: #f0f0f0; +} + +.preformattedHeader, .codeContent, .preformattedContent { + background: #fff; +} + +.panelContent { + color: #000; + margin: 0; + padding: 0 12px; + text-align: left; + font-size: .95em; +} + +.panelContent, +.panelContent p, .panelContent th, +.panelContent td, .panelContent li { + text-align: left; +} + + +html body { /* HACK: Temporary fix for CONF-15412 */ + overflow: visible; +} + +/* IE7 fix for CONFDEV-1056 */ +body.dashboard { + *min-width: 1000px; +} +img { + -ms-interpolation-mode: bicubic; +} +#header { + height: 1%; +} +#breadcrumbs { + height: 1%; /* IE6 wrapping */ + overflow: auto; + *overflow: visible; /* IE7 and below */ +} +#breadcrumbs li { + white-space: nowrap; +} +* html #breadcrumbs li { + background-image: url(../../../images/decoration/white_breadcrumbs_indicator.gif); /* IE6 */ +} +* html .page-metadata { + height: 1.2em; /* IE6 */ +} +#breadcrumbs li { + background-position: 3px 10px; +} +form { + margin: 0; + padding: 0; +} +.tab-navigation .tab { + float: left; + display: inline; + font-weight: bold; + margin: 0 5px 0 0; + position: relative; +} +.tab-navigation .tab a { + display: inline-block; /* anchors were making tabs very wide in Clickr theme in IE */ +} +a.icon { + height: 16px; +} +#tree-div { + min-height: 300px; + height: auto !important; + height: 300px; +} +h1 #content-title { + margin: 0; + display: block; + width: 90%; /* 93% and upwards breaks at least one of the IEs */ +} + +h1 span.title-text { + height: 1%; +} +#com-atlassian-confluence h1 { + width: auto; +} + +#com-atlassian-confluence h1 img.logo { + *margin-bottom: 0; +} + +* html #com-atlassian-confluence h1 img.custom { + /* sets max-height for IE - roughly equivalent to what real browsers do with 2.5em max-height */ + height: expression( this.scrollHeight > 59 ? "60px" : "auto" ); +} + +#tab-navigation, +.tab-navigation { + zoom: 1; +} +.has-sidebar #content .code { + _clear: both; + _overflow: auto; +} +.menu-section-list li a:visited, +.menu-section-list li a:hover { + color: #666; +} +.menu-section-list li.active a:visited { + color: #fff; +} + +/* Don't remove or dropdowns may break in IE6. CONF-17932 */ +* html #header-menu-bar .hidden { + width: 12em; +} + +* .bloglistitems{ + list-style-type: none; + padding-left: 1em; + padding-right: 1em; + margin-top: 0.5em; + margin-bottom: 0.5em; + margin-left: 0; +} + +* .blogmonthnavigation{ + border:1px solid #CCCCCC; + position:relative; + text-decoration:none; + display: inline-block; + width: 10em; + font-size: 0.85em; + text-align:center; + margin: 0 -0.5em 1em 1em; + padding: 0.2em 0.4em; +} + +#conflict-diffs, #page-diffs{ + min-height: 55px; +} + +#page-diffs .diff { + *margin-right: 1em; +} + +/* TODO: remove temp fix after AUI upgrade + CONFDEV-918 temp fix, prevents IE7 crash. Don't remove until https://studio.atlassian.com/browse/AJS-509 + is resolved and the fix version is implemented in Confluence. */ +#com-atlassian-confluence form.dashboard-actions { + *min-height: 0; +} +/* end CONFDEV-918 temp fix */ + +/* + Styles for macros bundled in Renderer. +*/ + +.panelMacro { + margin: 10px 20px; + overflow: hidden; /* fix width next to floated content */ +} + +.panelMacro table { + text-align: left; + padding: 0 20px; + width: 100%; +} + +.panelMacro td, .panelMacro p { + font-size: 1em; + padding: 14px 0; +} + +.searchMacro { + font-size: 10pt; + margin: 10px 0; +} + +.searchMacro .result { + margin-top: 3px; + padding: 0 5px 5px 5px; + border-bottom: 1px solid #ddd; +} + +.searchMacro .resultSummary { + margin-bottom: 7px; +} + +.rssMacro { + font-size: 10pt; +} + +.rssMacro table { + margin: 10px 0; + width: 100%; + border-collapse: collapse; +} + +.rssMacro table th, +.rssMacro table td { + border: 1px solid #ccc; + padding: 4px; +} + +.rssMacro table th { + background: #f0f0f0; +} + +/* Code styles */ +.code { + border-width: 1px; + border-style: dashed; + overflow: auto; +} + +.code, .preformatted { + background-color: #fff; +} + +.code pre, .preformatted pre { /* needs 'pre' to override TinyMCE style */ + font-family:"Courier New", Courier, monospace; + line-height: 1.3; +} + +.code-keyword { + color: #000091; + background-color: inherit; +} + +.code-object { + color: #910091; + background-color: inherit; +} + +.code-quote { + color: #009100; + background-color: inherit; +} + +.code-comment { + color: #808080; + background-color: inherit; +} + +.code-xml .code-keyword { + color: inherit; + font-weight: bold; +} + +.code-tag { + color: #000091; + background-color: inherit; +} + +/* Recently Updated Styles */ +.recentlyUpdatedItem { + border-bottom: #f0f0f0 1px solid; + border-top: #f0f0f0 1px solid; + margin: 10px 0 0 0; + padding: 0; + border-spacing: 0; + width: 100%; + text-decoration: none; + border-collapse: collapse; +} + +.recentlyUpdatedItem td { + padding: 10px; + border-bottom: #f0f0f0 1px solid; + vertical-align: top; +} + +.recentlyUpdatedItem .authorAndDate { + background-color: #f0f0f0; + width: 25%; +} + +.recentlyUpdatedItem .date { + margin-top: 4px; + font-size: 90%; + color: #666; +} + +.recentlyUpdatedItem .profilePic { + float: right; + background-color: #f0f0f0; + margin: 0 2px; +} + +.recentlyUpdatedItem .twixie { + padding: 10px 0 0 4px; +} + +.recentlyUpdatedItem td.icon { + padding: 8px 0 0 1px; +} + +.recentlyUpdatedItem .details { + padding-left: 7px; +} + +.recentlyUpdatedItem .summary, .recentlyUpdatedItem .thumbnail { + margin-top: 3px; + color: #666; +} + +.moreRecentlyUpdatedItems { + text-align: right; + margin-top: 10px; + font-size: 10pt; +} + +a.content-type-page span, div.content-type-page, span.content-type-page { + background-image: url(../../../images/icons/docs_16.gif); + background-repeat: no-repeat; +} + +a.content-type-blogpost span, div.content-type-blogpost, span.content-type-blogpost { + background-image: url(../../../images/icons/blogentry_16.gif); + background-repeat: no-repeat; +} + +a.content-type-comment span, div.content-type-comment, span.content-type-comment { + background-image: url(../../../images/icons/comment_16.gif); + background-repeat: no-repeat; +} + +a.content-type-space span, div.content-type-space, span.content-type-space, +a.content-type-spacedesc span, div.content-type-spacedesc, span.content-type-spacedesc { + background-image: url(../../../images/icons/web_16.gif); + background-repeat: no-repeat; +} + +a.content-type-personalspacedesc span, div.content-type-personalspacedesc, span.content-type-personalspacedesc { + background-image: url(../../../images/icons/personal_space_16.gif); + background-repeat: no-repeat; +} + +a.content-type-mail span, div.content-type-mail, span.content-type-mail { + background-image: url(../../../images/icons/mail_content_16.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment span, div.content-type-attachment, span.content-type-attachment { + background-image: url(../../../images/icons/attachments/file.gif); + background-repeat: no-repeat; +} + +a.content-type-file span, div.content-type-file, span.content-type-file { + background-image: url(../../../images/icons/attachments/file.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-pdf span, div.content-type-attachment-application-pdf, span.content-type-attachment-application-pdf { + background-image: url(../../../images/icons/attachments/pdf.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-image span, div.content-type-attachment-image, span.content-type-attachment-image { + background-image: url(../../../images/icons/attachments/image.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-text-xml span, div.content-type-attachment-text-xml, span.content-type-attachment-text-xml { + background-image: url(../../../images/icons/attachments/xml.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-text-html span, div.content-type-attachment-text-html, span.content-type-attachment-text-html { + background-image: url(../../../images/icons/attachments/html.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-text span, div.content-type-attachment-text, span.content-type-attachment-text { + background-image: url(../../../images/icons/attachments/text.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-zip span, div.content-type-attachment-application-zip, span.content-type-attachment-application-zip { + background-image: url(../../../images/icons/attachments/zip.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-excel span, div.content-type-attachment-application-excel, span.content-type-attachment-application-excel { + background-image: url(../../../images/icons/attachments/excel.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-powerpoint span, div.content-type-attachment-application-powerpoint, span.content-type-attachment-application-powerpoint { + background-image: url(../../../images/icons/attachments/powerpoint.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-word span, div.content-type-attachment-application-word, span.content-type-attachment-application-word { + background-image: url(../../../images/icons/attachments/word.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-java span, div.content-type-attachment-java, span.content-type-attachment-java { + background-image: url(../../../images/icons/attachments/java.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-file span, div.content-type-attachment-file, span.content-type-attachment-file { + background-image: url(../../../images/icons/attachments/file.gif); + background-repeat: no-repeat; +} + +a.content-type-status span, div.content-type-status, span.content-type-status { + background-image: url(../../../images/icons/quotes.png); + background-repeat: no-repeat; +} + +div.content-type-userinfo, span.content-type-userinfo { + background-image: url(../../../images/icons/user_16.gif); + background-repeat: no-repeat; +} + +a.content-type-follow span, div.content-type-follow, span.content-type-follow { + background-image: url(../../../images/icons/fav_on_16.png); + background-repeat: no-repeat; +} + +a.content-type-favourite span, div.content-type-favourite, span.content-type-favourite { + background-image: url(../../../images/icons/fav_on_16.png); + background-repeat: no-repeat; +} + +body.login, +body.login #main, +body.login #full-height-container { + background: #fafafa; +} + +* html body.login, +* html body.login #full-height-container { + background: #f0f0f0; +} + +#com-atlassian-confluence.login h1 { + width: 560px; + margin: 0 auto; +} + +#login-container { + margin: 0 auto; + width: 500px; + padding: 20px 30px; + background: #fff; +} + +body.login #header, body.login #websudo { + display: none; +} + +/* Gets rid of the break above the footer */ +body.login .clear { + display: none; +} + +body.login #main { + overflow: hidden; + padding: 10% 0 12%; +} + +#login-container .form-error-block{ + background: none; + border: none; + margin: 0; + padding: 0; +} + +#login-container, +#login-container form.aui { + color: #333; +} + +#login-container, +#login-container .captcha-image { + border: 1px solid #eee; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +#login-container div.login-form-container { + margin-bottom: 10px; + padding: 0 0 5px 20px; +} + +#login-container .login-form-container fieldset { + padding-top: 15px; +} + +#login-container .checkbox label { + left: 0; + margin-right: 0; + float: none; + display: inline; +} + +/* Overide default label styling */ +#com-atlassian-confluence.login #login-container label { + color: #333; +} + +#com-atlassian-confluence.login #login-container .error p { + background: #fff; + color: #c00; +} + +#login-container .login-form-container .text, +#login-container .login-form-container .password { + width: 95%; +} + +#login-container .message { + padding: 0; + width: auto; +} + +#login-container p { + margin: 0 0 1em; + color: #333; +} + +#login-container p.last { + margin: 0; +} + +#login-container p.success-message { + color: green; +} + +body.signup #main{ + padding: 5% 0 7%; +} + +#login-container .captcha-image { + margin: 10px 0; + width: 200px; + height: 100px; + float: left; +} + +#captcha-error span.errorMessage { + font-weight: normal; +} + +#captcha-container .reload { + width: 16px; + height: 16px; + float: left; + position: relative; + top: 16px; + left: 10px; +} + +#captcha-container label#captcha-reponse-label { + float: none; + left: 0; + margin: 0; + width: auto; +} + +#captcha-container input { + width: 192px; +} + +#coherence-copyright { + margin: 0; + text-align: center; + font-size: 0.8em; + padding-bottom: 3px; +} + +#coherence-copyright a { + color: #666; +} + +#login-container .userLogoLink { + float: left; + padding-right: 5px; +} + +#login-container a#login-notyou { + padding-left: 5px; +} + +#login-container div.warningPanel { + margin: 0 0 10px 0; +} +span.icon, a.icon { + display: inline-block; + width: 16px; + height: 16px; + text-align: left; + text-indent: -9999em; +} + +/* used in pagelist.vm */ +.tabletitleops .icon { + width: 12px; + height: 12px; +} + +.icon-wait { + background: transparent url(../../images/icons/wait.gif) no-repeat scroll 0 0; +} +.icon-space { + background: transparent url(../../images/icons/web_16.gif) no-repeat scroll 0 0; +} +.icon-browse-space { + background: transparent url(../../images/icons/browse_space.gif) no-repeat scroll 0 0; +} +.icon-add-page { + background: transparent url(../../images/icons/add_page_16.gif) no-repeat scroll 0 0; +} +.icon-add-page-disabled { + background: transparent url(../../images/icons/add_page_faded_16.gif) no-repeat scroll 0 0; +} +.icon-add-fav { + background: transparent url(../../images/icons/star_grey.gif) no-repeat scroll 0 0; +} +.icon-remove-fav { + background: transparent url(../../images/icons/star_yellow.gif) no-repeat scroll 0 0; +} +.icon-home-page { + background: transparent url(../../images/icons/home_16.gif) no-repeat scroll 0 0; +} +.icon-recently-updated-page { + background: transparent url(../../images/icons/new_16.gif) no-repeat scroll 0 0; +} +.icon-page { + background: transparent url(../../images/icons/docs_16.gif) no-repeat scroll 0 0; +} +.icon-comment { + background: transparent url(../../images/icons/comment_16.gif) no-repeat scroll 0 0; +} +.icon-space { + background: transparent url(../../images/icons/web_16.gif) no-repeat scroll 0 0; +} +.icon-personal-space { + background: transparent url(../../images/icons/personal_space_16.gif) no-repeat scroll 0 0; +} +.icon-user { + background: transparent url(../../images/icons/user_16.gif) no-repeat scroll 0 0; +} +.icon-blog { + background: transparent url(../../images/icons/blogentry_16.gif) no-repeat scroll 0 0; +} +.icon-trackback { + background: transparent url(../../images/icons/document_exchange.gif) no-repeat scroll 0 0; +} +.icon-mail { + background: transparent url(../../images/icons/mail_content_16.gif) no-repeat scroll 0 0; +} +.icon-status { + background: transparent url(../../images/icons/quotes.png) no-repeat scroll 0 0; +} +.icon-show-more { + background: transparent url(../../images/icons/add_12.gif) no-repeat scroll 0 0; +} +.icon-show-less { + background: transparent url(../../images/icons/subtract_12.gif) no-repeat scroll 0 0; +} +.icon-file-pdf { + background: transparent url(../../images/icons/attachments/pdf.gif) no-repeat scroll 0 0; +} +.icon-file-image { + background: transparent url(../../images/icons/attachments/image.gif) no-repeat scroll 0 0; +} +.icon-file-xml { + background: transparent url(../../images/icons/attachments/xml.gif) no-repeat scroll 0 0; +} +.icon-file-html { + background: transparent url(../../images/icons/attachments/html.gif) no-repeat scroll 0 0; +} +.icon-file-java { + background: transparent url(../../images/icons/attachments/java.gif) no-repeat scroll 0 0; +} +.icon-file-text { + background: transparent url(../../images/icons/attachments/text.gif) no-repeat scroll 0 0; +} +.icon-file-zip { + background: transparent url(../../images/icons/attachments/zip.gif) no-repeat scroll 0 0; +} +.icon-file-excel97-template { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint97-template { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-word97-template { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-excel97 { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint97 { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-word97 { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-excel-macro { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-excel { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-excel-template { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint-macro { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint-slideshow { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint-template { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-word { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-word-template { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-unknown { + background: transparent url(../../images/icons/attachments/file.gif) no-repeat scroll 0 0; +} + +/* + * TODO: BN added in 3.3 + * https://studio.atlassian.com/browse/PLUG-580: Until this issue is + * resolved we can't follow the sprite guideline. + */ +.icon-people-directory span.icon { + background: transparent url(../../images/icons/people_directory_16.png) no-repeat scroll 0 0; +} + +.icon-rss-feed-small span.icon { + background: transparent url(../../images/icons/feed-icon-16x16-small.png) no-repeat scroll 0 0; +} + +.icon-create-space span.icon { + background: transparent url(../../images/icons/add_space_16.gif) no-repeat scroll 0 0; +} +/* Information plugin styles */ + +.noteMessage, .warningMessage, .infoMessage, .tipMessage { + border-style: solid; + border-width: 1px; + text-align: center; + padding: 5px; + overflow: hidden; /* fix width next to floated content */ +} + +.noteMessage { + border-color: #f0c000; + background: #ffffce; +} + +.warningMessage { + border-color: #c00; + background: #fcc; +} + +.infoMessage { + border-color: #69c; + background: #d8e4f1; +} + +.tipMessage { + border-color: #090; + background-color: #dfd; +} + +table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td { + border: none; +} + +.informationMacroPadding { + padding: 5px 0 0 5px; +} + +.noteMacro, .warningPanel { + background-color: #ffffce; +} +#addition .noteMacro { + border-style: solid; + border-width: 1px; + border-color: #f0c000; + background-color: #ffffce; + text-align:left; + padding: 10px; + width: 100%; + margin: 5px 20px; +} + +#addition .noteMacro td { + font-size: 10pt; + padding: 2px; + padding-right: 15px; +} + +#addition .noteMacro p { + font-size: 10pt; +} + +#addition .noteMacro b { + font-size: 10pt; +} + +#addition table.noteMacro td { + border: none; +} + +#replying .noteMacro { + border-style: solid; + border-width: 1px; + border-color: #f0c000; + background-color: #ffffce; + text-align:left; + padding: 10px; + width: 100%; + margin: 5px 20px; +} + +#replying .noteMacro td { + font-size: 10pt; + padding: 2px; + padding-right: 15px; +} + +#replying .noteMacro p { + font-size: 10pt; +} + +#replying .noteMacro b { + font-size: 10pt; +} + +#replying table.noteMacro td { + border: none; +} + +.tipMacro { + background-color: #dfd; +} + +.warningMacro { + background-color: #fcc; +} + +.infoMacro { + background-color: #d8e4f1; +} + +.warningPanel { + border-style: solid; + border-width: 1px; + padding: 8px; + margin: 10px; +} + +.warningPanel { + border-color: #f0c000; +} + + + + +/* Layout plugin styles */ + +.sectionMacro, +.sectionMacro p, +.sectionMacro ul, +.sectionMacro ol { + font-size: 10pt; +} + +table.sectionMacro td { + border: none; +} + +table.sectionMacroWithBorder td.columnMacro { + border-style: dashed; + border-width: 1px; + border-color: #ccc; +} + + +/* + Colors for Confluence (included for all themes by default). +*/ +h1, h2, h3, h4, h5, h6, +.wiki-content h1, +.wiki-content h2, +.wiki-content h3, +.wiki-content h4, +.wiki-content h5, +.wiki-content h6, +.pagetitle, +.steptitle, +.substeptitle, +.formtitle, +a.blogHeading, +.more-comments a, +th.confluenceTh, +table.confluenceTable th.confluenceTh, +table.admin th, +.form-element-large, +.form-element-small, +#com-atlassian-confluence .mce_h1 span.mceText, +#com-atlassian-confluence .mce_h2 span.mceText, +#com-atlassian-confluence .mce_h3 span.mceText, +#com-atlassian-confluence .mce_h4 span.mceText, +#com-atlassian-confluence .mce_h5 span.mceText, +#com-atlassian-confluence .mce_h6 span.mceText { + color: #003366; +} + +.wiki-content h1, +.wiki-content h2 { + border-bottom-color: #6699cc; +} + +.wiki-content-preview { + border-left-color: #6699cc; + border-right-color: #6699cc; +} + +.pageSectionHeader { + border-bottom-color: #6699cc; +} + +.panel { + border-color: #6699cc; +} + +.panelHeader, +.menuheading, +.pageheader, +.sectionbottom { + border-bottom-color: #6699cc; +} + +.topRow { + border-top-color: #6699cc; +} + +.tabletitle, .pageSectionHeader, .section-header h2 { + color: #003366; +} +.tabletitle, .pageSectionHeader { + border-bottom-color: #6699cc; +} + +a:link, +a:visited, +a:active, +a:hover, +#default-labels-header a.add { + color: #003366; +} + +h1 a:hover { + border-bottom-color: #003366; +} + +.spacenametitle-printable, +.spacenametitle-printable a, +.spacenametitle-printable a:visited { + color: #999999; +} + +.navItemOver, +.navItemOver a, +.navItemOver a:visited, +.navItemOver a:hover { + color: #ffffff; + background-color: #003366; +} + +.navItem { + background-color: #6699cc; +} + +.navItem a, +.navItem a:hover, +.navItem a:visited { + color: #ffffff; +} + +.tableview th { + color: #003366; + border-bottom-color: #6699cc; +} + +blockquote { + border-left-color: #6699cc; +} + +.navBackgroundBox { + background: #6699cc; +} + +.previewBoxTop, +.previewContent, +.previewBoxBottom, +.functionbox { + border-color: #6699cc; +} + +.smalltext-blue { + color: #6699cc; +} + +.tabnav, +.comment .tabnav, +ul.tabnav { + border-bottom-color: #6699cc; +} + +.tabnav .tabs a { + border-color: #6699cc; + background: #6699cc; +} + +.tabnav .tabs a:link, .tabnav .tabs a:visited { + color: #ffffff; +} +.tabnav .tabs a:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +.tabnav .spaceActionLinks a:link, +.tabnav .spaceActionLinks a:visited { + color: #003366; +} + +.foldertab-box { + border-left-color: #6699cc; + border-right-color: #6699cc; + border-bottom-color: #6699cc; +} + +#squaretab a { + border-color: #6699cc; +} + +#squaretab a:link, #squaretab a:visited { + background-color: #6699cc; +} + +#squaretab a:hover { + color: #ffffff; + background-color: #003366; + border-color: #003366; +} + +table.blogcalendar { + border-color: #6699cc; +} + +.blogcalendar th.calendarhead, +a.calendarhead, +a.calendarhead:link, +a.calendarhead:visited, +a.calendarhead:hover { + background-color: #6699cc; + color: #ffffff; +} + +.searchGroupHeading { + background-color: #6699cc; + color: #ffffff; +} + +.permissionTab { + background: #6699cc; + color: #ffffff; +} + +.permissionSuperTab { + background: #003366; + color: #ffffff; +} + +/* styles for links in the top bar */ +.topBarDiv a:link, +.topBarDiv a:visited, +.topBarDiv a:active, +.topBarDiv a:hover, +.topBarDiv { + color: #ffffff; +} + +.topBar { + background-color: #003366; +} + +.basicPanelContainer { + border-color: #6699cc; +} + +.greynavbar { + border-top-color: #6699cc +} + +div.license-personal { + background-color: #003366; + color: #ffffff; +} + +div.license-personal a { + color: #ffffff; +} + +.minitab { + border-bottom-color: #6699cc; +} + +.minitab a { + border-top-color: #6699cc; + border-right-color: #6699cc; + border-left-color: #6699cc; +} + +.minitab .unselected { + border-bottom-color: #6699cc; + background: #6699cc; +} + +#header { + background-color: #003366; +} +#header a, +#breadcrumbs, +#header .ajs-menu-bar li.ajs-menu-item a.trigger { + color: #ffffff; +} +.breadcrumbs { + border-color: #6699cc; +} + +#navigation, #tab-navigation { + border-bottom-color: #6699cc; +} + +#com-atlassian-confluence .aui-dd-parent .aui-dropdown .dropdown-item a, +.ajs-menu-bar li.ajs-menu-item .ajs-drop-down a { + color: #535353; +} +#header .ajs-menu-bar li.ajs-menu-item .ajs-drop-down a { + color: #003366; +} + +#com-atlassian-confluence .aui-dd-parent a.perms-dropdown-trigger:hover, +#com-atlassian-confluence .aui-dd-parent a.perms-dropdown-trigger:focus, +#com-atlassian-confluence .aui-dd-parent .aui-dropdown .dropdown-item.active a, +.menu-section-list li.active a, +.menu-section-list li.active a:hover, +#navigation .ajs-menu-bar .ajs-button a:hover, +/* .ajs-menu-bar .ajs-menu-item.opened, */ +.ajs-menu-bar .ajs-menu-item li.active a, +.aui-dd-parent .aui-dropdown li.active, +.aui-dd-parent .aui-dropdown li:hover span, +.aui-dd-parent .aui-dropdown a:focus span, +.ajs-menu-bar .ajs-menu-item.opened .ajs-drop-down li.active a, +#navigation .ajs-menu-bar li.ajs-button a.active, +#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down li.active a, +.ajs-content-hover .popup-follow a:hover { + color: #ffffff; + background-color: #6699cc; +} +#header .ajs-menu-bar li.ajs-menu-item.opened, +#header .ajs-menu-bar li.ajs-menu-item.opened a.trigger { + background-color: #336699; + border-color: #336699; +} +.ajs-menu-bar .ajs-menu-item.opened a.trigger { + background-color: #6699cc; +} + +#header .ajs-menu-bar .ajs-drop-down { + border-color: #003366; +} +#header .ajs-menu-bar .ajs-drop-down li.separator { + border-top-color: #003366; +} + +.tab-navigation .tab a { + background-color: #6699cc; + border: 1px solid #6699cc; + color: #ffffff; +} +.tab-navigation .tab a:hover { + color: #ffffff; + background-color: #003366; + border-bottom-color: #003366; +} + + + +/***** Pre 2.8 markup styles for backwards compatability ******/ +#foldertab { + border-bottom-color: #6699cc; +} + +#foldertab li a { + border-color: #6699cc; + background: #6699cc; +} + +#foldertab li a:link, +#foldertab li a:visited { + color: #ffffff; +} +#foldertab li a:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +.logoSpaceLink, +.logoSpaceLink a:link, +.logoSpaceLink a:visited, +.logoSpaceLink a:active { + color: #999999; +} + +.logoSpaceLink a:hover { + color: #003366; +} + +.selectedminitab { + border-color: #6699cc +} + +.unselectedminitab { + border-color: #6699cc; + background: #6699cc; +} + +.tabletitle, .heading-text-color { + color: #003366; +} + +a.unselectedminitab:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +ol.autocompleter li.focused { + background: #6699cc; + color: #ffffff; +} + +/* End colour styles for Confluence */ + +/* + This stylesheet defines styles that only apply to the Default theme. Styles common to all themes should go in + master.css +*/ +html, body { + height: 100%; +} + +body { + margin: 0; + font-family: Helvetica, Arial, sans-serif; + background-color:#fff; +} + +#full-height-container { + min-height: 100%; + position: relative; + background-color: #fff; +} + +#header { + margin: 0; + padding: 0 10px; + min-height: 2em; + line-height: 2; +} + +#websudo { + margin: 0; + padding: 0 10px; + min-height: 2em; + line-height: 2; +} + +.email{ + /* offset the negative margin set by the header for emails only */ + margin: 10px; +} + +#page-view-panel { + float: right; +} + +#com-atlassian-confluence h1 img { + max-height: 2.5em; /* scale logo image with font size */ + margin-bottom: 0.3em; +} +#com-atlassian-confluence h1 img.custom { + height: auto; +} + +h1 span.title-text { + display: table; /* page title wrapping drops straight down */ +} +h1 a:hover { + color: inherit; /* inherit the colour instead of hard-coding blue */ +} +.editable-title { + margin: 0 10px 0 58px; +} + +#main { + padding: 10px 10px 6em 10px; +} +.content-preview #main { + padding-bottom: 10px; +} + +#content { + clear: left; +} +#content.space { + margin-top: 2.6em; +} + +.quick-search-submit { + display: none; +} + +#page-view-panel li, #page-prefs-list li { + color: #666; + float: left; + font-size: .9em; + margin: 0 0 0 .3em; + padding: 0 0 0 .3em; +} + +#navigation { + display: inline; +} + +.page-actions { + float: right; + border: solid 1px #ccc; + padding: 5px; + margin-left: 10px; +} + +.remove-control { + display: none; +} + +.page-metadata { + color: #666; + font-size: 0.9em; + margin: 10px 0; +} +.page-metadata a:link, +.page-metadata a:active, +.page-metadata a:hover, +.page-metadata a:visited { + color: #666; + font-style: normal; +} + +.section-header { + margin-bottom: 5px; + padding: 2px 0; +} + +/* All links are set to action.linkColor but section header links are grey */ +.section-header a:link, +.section-header a:active, +.section-header a:hover, +.section-header a:visited { + color: #666; +} + +h2.section-title { + font-size: 12pt; + font-weight: bold; + color: black; + margin-top: 20px; + padding: 0; + display: inline; +} + +.section-title a:link, +.section-title a:active, +.section-title a:hover, +.section-title a:visited { + color: black; +} + +#sidebar, +.sidebar { + clear: right; + float: right; + width: 16em; + margin-left: 10px; +} + +#space-blog-search-query{ + width: 21.5em; +} + +#blog-sidebar{ + width: 22em; + margin-top: 2em; +} + +.has-sidebar #content.space, +.has-sidebar #content.edit form.markup, +.has-sidebar .wiki-content, +.has-sidebar.active-wikimarkup .errorBox{ + margin-right: 17em; +} + +.has-blog-sidebar #content.space, +.has-blog-sidebar #content.edit form.markup, +.has-blog-sidebar .wiki-content +{ + margin-right: 24em; +} + +.blog-post-listing .wiki-content, +.has-blog-sidebar .blogpost-view .wiki-content .wiki-content{ + margin-right: 0; +} + +.has-sidebar .wiki-content .wiki-content, +.has-blog-sidebar .wiki-content .wiki-content, +.has-blog-sidebar .comment-content.wiki-content { + margin-right: 0; +} + +.active-richtext #content.create-page, +.active-preview #content.create-page { + margin-right: 0 !important; +} + +.sidebar-content { + margin: 10px 0 0 1em; +} +.blogcalendar { + width: 16em; +} +.blogcalendar th a.calendarhead, +.blogcalendar th.calendarhead { + font-size: 1em; +} +.blogcalendar td, +.blogcalendar th { + font-size: .85em; +} + +/* folder tab link styles */ +.tabnav .tabs a { + padding: 5px 5px 4px; + margin: 5px 3px 0 0; + border-width: 1px; + border-style: solid; + border-bottom: none; + text-decoration: none; + display: block; + float: left; +} + +.tabnav .tabs a.current { + background: white; + border-bottom: 1px solid white; + color: black; +} +.tabnav .tabs a.current:link, .tabnav .tabs a.current:visited { + color: black; +} +.tabnav .tabs a.current:hover { + background: white; + border-bottom: 1px solid white; + color: black; +} + +/* list page navigational tabs */ +.tabnav, .comment .tabnav { + padding: 0; + margin: 0; + border-bottom-width: 1px; + border-bottom-style: solid; + float: left; + display: inline; + list-style-position: outside; + width: 100%; + font-weight: bold; + font-size: 10pt; +} + +.after-tabnav { + clear: both; +} + +.tabnav li.tabs { + list-style: none; + margin: 0 0 -1px 10px; + float: left; + display: block; +} + + +/* dashboard customization */ +#spacesLabel { + padding: 4px 6px; + float: left; + margin-top: 5px; +} + +#footer { + position:absolute; + bottom:0; + width:100%; +} + +#poweredby, +#poweredby a { + font-size: 11px; +} + +/* We can't have a separate IE css file because the default theme + hard codes the location of the theme stylesheet */ + +/* IE6: treated as min-height*/ +* html #full-height-container { + height: 100%; + background-color:#F0F0F0; +} + +* html #main { + padding-bottom: 1em; + height: 88%; /* fake ie6 min height - not perfect but better than alternatives */ +} + +* html #footer { + position: relative; +} + +/* no footer in popups. */ +body.popup-window #footer { + display: none; +} + +* html .popup-window #full-height-container { + background-color:#fff; +} + + + + + + diff --git a/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg new file mode 100644 index 0000000000..4550d0ab9a Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg.jpeg b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg.jpeg new file mode 100644 index 0000000000..b8913ec0d3 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.html b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.html new file mode 100644 index 0000000000..5eef0eff33 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.html @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + Running OASIS Spec Tests in a OSGi environment : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > Running OASIS Spec Tests in a OSGi environment + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > Running OASIS Spec Tests in a OSGi environment + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

The OASIS SCA Spec Tests are designed to run in a OSGi environment and below are some configuration necessary to properly import/run/debug the tests in Eclipse PDE environment

+ +

Generate Eclipse IDE project files

+ +
+
+   mvn -Peclipse
+
+
+ +

To facilitate debug, use the following commands:

+ +

1) To generate sources for the Tuscany 2.x modules

+
+
+mvn source:jar under sca-java-2.x/trunk/modules
+
+
+

2)To download source files, please use the following command

+
+
+mvn -Peclipse -DdownloadSources=true
+
+
+ +

Configure TUSCANY_HOME pointing to where Tuscany distribution is available

+ +
+
+   export TUSCANY_HOME=<tuscany checkout>/distribution/all/target/apache-tuscany-sca-all-2.0-SNAPSHOT.dir/tuscany-sca-2.0-SNAPSHOT
+
+
+ +

Optionally, you could also configure this as an VM argument on the Eclipse run configuration

+ +

-DTUSCANY_HOME=/Users/lresende/opensource/apache/tuscany/java-sca-2.x/distribution/all/target/apache-tuscany-sca-all-2.0-SNAPSHOT.dir/tuscany-sca-2.0-SNAPSHOT

+ +

+ +

Configure contribution location

+ +

There are various files containing the contribution location necessary to run the tests, these files are:

+ +

sca-assembly/Test_Client/src/main/resources/oasis-sca-tests.properties
+sca-java-caa/Test_Client_JavaCAA/src/main/resources/oasis-sca-tests.properties
+sca-java-ci/Test_Client_JavaPOJO/src/main/resources/oasis-sca-tests.properties
+sca-policy/Test_Client/src/main/resources/oasis-sca-tests.properties

+ +

although it's currently configured with a relative path, you might need to configure the location based on your system

+ +
+
+org.oasis.sca.tests.assembly.contribution.location=../%1/target/%1.zip
+
+
+ + + + + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.data/sample-calculator-jaxws-client.jar b/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.data/sample-calculator-jaxws-client.jar new file mode 100644 index 0000000000..f4b2c021b4 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.data/sample-calculator-jaxws-client.jar differ diff --git a/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html b/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html new file mode 100644 index 0000000000..d53263ed4b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + Running Tuscany SCA 2.x with Equinox and Felix : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > Running Tuscany SCA 2.x with Equinox and Felix + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > Running Tuscany SCA 2.x with Equinox and Felix + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

1. Running Tuscany with Equinox

+ +

The Tuscany distribution is ready to be started as an Equinox runtime.

+ +

You can simply go into the "modules" directory in the distribution and type the following command:

+ +
+

java -jar osgi-3.5.0-v20090520.jar -clean -console -configuration ..\features\configuration

+
+ +

2. Running Tuscany with Felix

+ +

Download Apache Felix distribution

+

You can download the latest version of Felix distribution from http://felix.apache.org/site/downloads.cgi. Unzip it into a directoy such as felix-2.0.1.

+ +

The following bundles can be found in felix-2.0.1\bundle directory:

+ +
    +
  • org.apache.felix.bundlerepository-1.4.2.jar
  • +
  • org.apache.felix.shell-1.4.1.jar
  • +
  • org.apache.felix.shell.tui-1.4.1.jar
  • +
+ + +

Please download additional bundles into felix-2.0.1\bundle directory:

+ + + +

To run the web console, you need more bundles:

+
    +
  • org.apache.felix.http.api-2.0.2.jar
  • +
  • org.apache.felix.http.base-2.0.2.jar
  • +
  • org.apache.felix.http.bundle-2.0.2.jar
  • +
  • org.apache.felix.http.jetty-2.0.2.jar
  • +
  • org.apache.felix.metatype-1.0.4.jar
  • +
  • org.apache.felix.prefs-1.0.4.jar
  • +
  • org.apache.felix.scr-1.0.8.jar
  • +
  • org.apache.felix.eventadmin-1.0.0.jar
  • +
  • org.apache.felix.webconsole-2.0.0.jar
  • +
+ + +

Add Tuscany bundles

+

Copy all bundles (jars and folders) under the modules directory of Tuscany distribution to felix-2.0.1\load.
+Remove the following Equinox jars from felix-2.0.1\load:

+ +
    +
  • osgi-3.5.0-v20090520.jar
  • +
  • services-3.2.0-v20090520-1800.jar
  • +
  • common-3.5.0-v20090520-1800.jar
  • +
+ + +

Alternatively, Tuscany also provides aggregate jars which simplify the use of Tuscany by minimizing the number of jars required. For this exercise the single base jar includes everything necessary so that single jar can be used in the Felix bundle directory. The releases of this jar can be found in the Maven repository here or the latest development snaphosts here.

+ +

Start felix

+
+

java -jar bin\felix.jar

+
+ + +

Install OSGi remote service sample bundles

+

+ + +

Now, the distributed OSGi calculator is available as a Web service at http://rfengt61p:8086/CalculatorService. You can see the WSDL in a browser with URL: http://rfengt61p:8086/CalculatorService?wsdl.

+ +

You can now use a web service client such as Eclipse Web Service explorer to invoke the calculator.

+ +
A JAX-WS client
You can download a JAX-WS client for the calculator sample and run:
+java -jar sample-calculator-jaxws-client.jar expression
+The expression can be like 1.0+2.0, 2.0/1.0, 3.5-2.0, or 1.0x2.0
+ +

For more information on Tuscany's implementation of OSGi remote services, see: OSGi Remote Services with Tuscany SCA.ppt

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/samples-beta1.html b/site/trunk/site-publish/documentation-2x/samples-beta1.html new file mode 100644 index 0000000000..be3eb13d4f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/samples-beta1.html @@ -0,0 +1,1146 @@ + + + + + + + + + + + + + + + Samples-Beta1 : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Getting Started > Samples-Beta1 + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Getting Started > Samples-Beta1 + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+
+
+ +
+ + +
+
+

Tuscany Samples

+ +

The Tuscany Samples are shipped with Tuscany binary and source releases. If you are using tuscany from a release distribution then make sure you are looking at the documentation that corresponds to the samples as they stood at the time of the release.

+ +

2.0-beta samples documentation

+ +

If however you are working with a snapshot distribution, or using samples code from the trunk of our source repository, then you've come to the right place, as the documentation here reflects the current status of the samples in the trunk of our source tree.

+ +

In a distribution, the samples source code is found in either a binary or source code distribution in the samples directory, directly under the root directory. The following sections are laid out to match the structure of the samples directory and its subdirectories.

+ +
+
+ +

getting-started

+ +

SCA defines a concept called a Contribution which is the way that SCA composite applications are packed for deployment. See SCA Introduction for more information on SCA concepts.

+ +

The getting-started samples consist of simple SCA contributions that you can build and run as your first step to getting up and running with the Tuscany SCA Java runtime.

+ +

You can build the sample contributions with either Maven or Ant and the running-tuscany director contains information about the various ways you can start Tuscany and run these contributions.

+ +

helloworld-contribution

+ +

This is the simplest contribution. This contribution describes a composite application with a single component implemented in Java. The component's Java implementation provides service "business logic" for saying hello to a person whose name is supplied as input to the service.

+ +

helloworld-webapp

+ +

This sample is not a contribution in it's own right but demonstrates how to run the helloworld-contribution inside a web application.

+ +

callback-api

+
TODO
This feels like a learning-more sample. I wouldn't focus on callbacks with the first time user
+ +

sca-scopes

+
TODO
This feels like a learning-more sample. I wouldn't focus on scopes with the first time user
+ +

sca-include-contribution

+
TODO
This feels like a learning-more sample. I wouldn't focus on scopes with the first time user
+ +

running-tuscany

+ +

Running something in Tuscany requires one or more contributions, and a method of launching the contributions to make them available as services. The sections below describes various means of launching contributions into an executing  tuscany runtime.

+ + +

command-line

+ +

To execute a sample contribution from the command line on Windows, from a command prompt in the samples directory, run the command ...

+ +
+
+..\bin\tuscany.bat "contribution-name"
+
+
+ +

for example

+ +
+
+..\bin\tuscany.bat contribution-binding-sca-calculator
+
+
+ +

or on *nix platforms, from a shell prompt in the samples directory, run the command ...

+ +
+
+../bin/tuscany.sh contribution-binding-sca-calculator
+
+
+ +

embedded-jse

+ +

This directory contains sample java launchers for the
+tuscany sample contributions. To use the sample JSE launchers with ant execute the command

+
+
+ant run-<contributionname>
+
+
+ +

where run-<contributionname> is one of the targets in the build.xml file

+ +

To use this sample launcher to run all of the contributions as junit test cases, execute the command "mvn" in the launcher directory.

+ + +

embedded-osgi

+ +

The launchers implemented in the src/main/java/launchers directory each launch a specific contribution into the OSGI runtime.
+To use this sample OSGI launcher with ant excute the command

+ +
+
+ant run-<contributionname>
+
+
+

where run-<contributionname> is one of the targets in the build.xml file

+ +

To use this sample launcher to run all of the contributions as junit test cases,
+execute the command

+
+
mvn
+
+

in the launcher directory.

+ + +

maven

+ +

To execute a sample contribution from Maven

+ +

look for contributions that have the following configuration in their pom.xml file:

+ +

<plugin>
+<groupId>org.apache.tuscany.maven.plugins</groupId>
+<artifactId>maven-tuscany-plugin</artifactId>
+<version>2.0-SNAPSHOT</version>
+</plugin>

+ +

For contributions that have this, for example, learning-more/binding-sca/contribution-calculator, do the following

+ +

cd samples/learning-more/binding-sca/contribution-calculator
+mvn tuscany:run

+ +

This will launch the contribution in the Tuscany runtime and then wait. At this point you can use
+other clients to send messages to services that the running SCA applcation exposes,
+for example, try learning-more/calculator-scaclient.

+ +

osgi

+ +

The Tuscany runtime can be run in and OSGi container. 

+ + +

Running in Equinox

+ +

On Windows, run

+ +
+
+java \-jar ..\..\modules\osgi-3.5.0-v20090520.jar \-configuration ..\..\features\configuration \-clean \-console
+
+
+
+ +

On *Unix, run

+ +
+
+java \-jar ../../modules/osgi-3.5.0-v20090520.jar \-configuration ../../features/configuration \-clean \-console
+
+
+
+ +

You should see the osgi console:

+ +
+
+osgi>
+
+osgi> Jun 22, 2009 1:32:27 PM org.apache.tuscany.sca.extensibility.equinox.EquinoxServiceDiscoveryActivator start
+
+INFO: Equinox-based service discoverer is now configured.
+
+
+
+ +

You can run "ss" command under the osgi> to see the status of the bundles.

+ +
+
+osgi> ss
+
+
+
+ +

Then you can install and start contributions as bundles by doing the following:

+ +
+
+osgi> install file:./path/to/contribution_bundle.jar
+
+
+
+ +

Note that contribution_bundle.jar will need an activator in order to register the bundle as a SCA contribution

+ +
see samples/????
+TODO is this still true
+

Running on Felix

+ +

See http://tuscany.apache.org/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html

+ + +

shell

+ +

This directory contains a sample shell program supporting simple commands to
+start and stop SCA composites.

+ +

To build the sample shell do this:

+
+
+mvn install
+
+
+

To run it:

+
+
+./sca
+
+
+ +

at the prompt:

+
+
+start myNode ../../applications/store/target/sample-store.jar
+
+
+

or:

+
+
+start myNode http://people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar
+
+
+

also try:

+
+
+status
+stop myNode
+bye
+
+
+

Starting and stopping composites is pretty fast. To see that, try the following
+two scripts, which start/stop the sample store composite 10 times.

+
+
+./sca <scripts/test.txt
+
+
+

or

+
+
+./sca <scripts/test-remote.txt
+
+
+ +

The shell can also run as a Webapp. To try it install target/scashell.war in
+a Web container, point your Web browser to http://localhost:8080/scashell
+and try the links on that page.

+ + +

webapp

+ +

To execute sample webapp based contributions (contributions that have webapp at the end of their name) you
+can build the contribution using maven and then copy the resulting war file to your container of choice

+ +

For example, for binding-jsonrpc/contribution-calculator-webapp, do the following

+
+
+cd samples/binding-jsonrpc/contribution-calculator-webapp
+mvn
+cp target/sample-contribution-binding-jsonrpc-calculator-webapp.war your_container_deployment-dir
+
+
+ +

As an alternative sample webapp based contributions can be run within Jetty directly from Maven, look for
+webapp contributions that have the following configuration in their pom.xml file:

+ +
+
+<plugin>
+    <groupId>org.mortbay.jetty</groupId>
+    <artifactId>maven-jetty-plugin</artifactId>
+    <version>6.1.18</version>
+</plugin>
+
+
+ +

For contributions that have this, for example, binding-jsonrpc/contribution-calculator-webapp, do the following

+ +
+
+cd samples/binding-sca/contribution-calculator
+mvn jetty:run
+
+
+ +

This will launch the contribution in the Jetty runtime and then wait. At this point you can use
+HTTP clients to send messages to services that the running SCA applcation exposes. For this
+example try pointing your browser at:

+ +
+
+http://localhost:8080/sample-contribution-binding-jsonrpc-calculator-webapp/
+
+
+ +

learning-more

+ +

The samples found in the contributions below illustrate how to see more of SCA and Tuscany's features in action. You'll need to employ the information above in the "running tuscany" section to select an appropriate way of runing the contributions in the samples listed below.

+ +

async

+ +

This sample  demonstrates invocation of services offered in both synchronous and asynchronous forms. Asynchroncity is possible by either callback to or polling by the original service invoker.

+ +

sample-contribution-implementation-java-calculator-async

+ +

In the composite file src/main/resources/Calculator.composite the references "calculatorServiceRefSync"  and "calculatorServiceRefAsync" make use of the alternative implementations of the Calculator service described in the CalculatorSync and CalculatorAsync components and implemented in the calculator.CalculatorServiceSyncImpl and calculator.CalculatorServiceAsyncImpljava classes. 

+ + +

embedded-jse-async-sample-launcher

+ + +

Note that the launcher simply starts and stops a node running the contribution.  Within the contribution the CalculatorClient java class, marked with the @EagerInit annotation, runs its calculate method (marked with the @Init annotation), thereby triggering the calculation service to be performed. The calculator service is actually performed by the injected instance of CalculatorServiceProxyImpl, which uses both of its references (one for the sync service, one for the async) to perform calculations. The calculations are then performed by instances of CalculatorServiceSyncImpl and CalculatorServiceAsyncImpl. Note that the Tuscany runtime views the following two interfaces as compatible.

+ +
+
+@Remotable
+public interface CalculatorService {
+   String calculate(Integer n1);
+}
+
+@Remotable
+@AsyncInvocation
+
+public interface CalculatorServiceAsync {
+
+   void calculateAsync(Integer n1, ResponseDispatch<String> response);
+
+}
+
+
+
+ +

binding-comet

+ +

Executing the command "mvn" in this sample project creates a web archive suitable for deployment to Tomcat. It makes use of the tuscany coment binding. Comet support allows a servlet to process IO asynchronously, receiving events when data is available for reading on the connection (rather than always using a blocking read), and writing data back on connections asynchronously (most likely responding to some event raised from some other source).

+ +
TODO
Needs expert review/update
+ +

binding-jsonrpc

+ + +

This sample demonstrates using a simple calculator service component which makes use of four services for the basic arithmetic functions. In this variant of the calculator sample you can see by looking in the src/main/resources/Calculator.composite xml file that the AddService is configured to be invoked using the json rpc protocol.

+ +

contribution-calculator

+ + +

This variant of the calculator contribution configures the AddService to be accessed via the JSON RPC protocol (see the XML in the Calculator.composite file).

+
TODO
Needs review/completion
+ +

contribution-calculator-webapp

+ + +
TODO
Understand and Document
+ +

binding-rmi

+ +

In this example the calculator function is split over two contributions in order to demonstrate the remote method invocation binding. The CalculatorService in the CalculatorServiceComponent defined in the CalculatorRMIServer.composite file is configured to be accessible using RMI.

+ +
TODO
Needs review/completion
+ +

contribution-calculator-reference (for binding-rmi)

+ + +

This contribution serves the purpose of accessing the services of the calculator service contribution, in particular defining a reference that uses the add service of that contribution using the RMI protocol.

+ +

contribution-calculator-service (for binding-rmi)

+ + +

This contribution defines the calcullators add service to be available via RMI invocation.

+ +

binding-sca

+ + +

This sample is the simplest sample other than that shown in the getting starting section. It uses the default SCA protocol for communicating between the components. 

+ +

contribution-calculator (for binding SCA)

+ +

The service and reference definitions in the Calculator.composite and CalculatorClient.composite files have no binding attributes, thereby defaulting to the SCA binding for communication between the running instances of the components.

+ +

binding-ws

+ + +

This sample contains contrributions which show how the services can be offered via a web service interfaqce.

+ +

contribution-calculator (for binding-ws)

+ +

This contribution provides the four arithmetic operations in the calculator service, with the AddService being accessible as a web service via the URL http://localhost:8085/AddServiceComponent, as configured in the Calculator.composite file in the contribution project.

+ +

contribution-helloworld-ws-sdo (for binding-ws)

+ +
TODO
Understand and Document - rework the content of the README as given below
+
+
+
+Hello World Web Service References using SDO Sample
+===================================================
+This sample demonstrates an SCA reference that uses a web service binding which works with SDO.  
+
+The README in the samples directory (the directory above this) provides 
+general instructions about building and running samples. Take a look there 
+first. 
+
+To run this sample
+------------------
+This sample is dependent on helloworld-ws-service. Open a command prompt to start
+the service. If you are running ant do the following:
+
+cd helloworld-ws-service
+ant run
+
+if you don't have ant, issue one of the following commands for windows or *nix:
+
+java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-helloworld-ws-service.jar helloworld.HelloWorldServer
+
+and on *nix do
+
+java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-helloworld-ws-service.jar helloworld.HelloWorldServer
+
+You should see the following output:
+
+Buildfile: build.xml
+
+run-server:
+     [java] log4j:WARN No appenders could be found for logger (org.apache.axiom.
+om.util.StAXUtils).
+     [java] log4j:WARN Please initialize the log4j system properly.
+     [java] Aug 24, 2007 11:17:33 AM org.apache.catalina.core.StandardEngine sta
+rt
+     [java] INFO: Starting Servlet Engine: Apache Tomcat/6.0.10
+     [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.ContextConfig d
+efaultWebConfig
+     [java] INFO: No default web.xml
+     [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory
+ register
+     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/jsp_2_0.
+xsd
+     [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory
+ register
+     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jspt
+aglibrary_1_1.dtd
+     [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory
+ register
+     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jspt
+aglibrary_1_2.dtd
+     [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory
+ register
+     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jspt
+aglibrary_2_0.xsd
+     [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory
+ register
+     [java] WARNING: Could not get url for /javax/servlet/resources/j2ee_web_ser
+vices_1_1.xsd
+     [java] Aug 24, 2007 11:17:34 AM org.apache.coyote.http11.Http11Protocol ini
+t
+     [java] INFO: Initializing Coyote HTTP/1.1 on http-8085
+     [java] Aug 24, 2007 11:17:34 AM org.apache.coyote.http11.Http11Protocol sta
+rt
+     [java] INFO: Starting Coyote HTTP/1.1 on http-8085
+     [java] Aug 24, 2007 11:17:34 AM org.apache.tuscany.sca.http.tomcat.TomcatSe
+rver addServletMapping
+     [java] INFO: Added Servlet mapping: http://localhost:8085/HelloWorldService
+
+     [java] HelloWorld server started (press enter to shutdown)
+
+The server is now ready.
+
+
+Now, open another command window to run the client.  
+
+cd helloworld-ws-sdo
+ant run
+
+OR if you don't have ant, on Windows do
+
+java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-helloworld-ws-sdo.jar helloworld.HelloWorldClient
+
+and on *nix do
+
+java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-helloworld-ws-sdo.jar helloworl.HelloWorldClient
+
+You should be able to see the following result:
+
+Buildfile: build.xml
+
+run:
+     [java] log4j:WARN No appenders could be found for logger (org.apache.axiom.
+om.util.StAXUtils).
+     [java] log4j:WARN Please initialize the log4j system properly.
+     [java] Injected helloWorldService
+     [java] Called getGreetings
+     [java] Hello David Haney
+
+BUILD SUCCESSFUL
+Total time: 9 seconds
+
+
+Sample Overview
+---------------
+The sample provides a single component that is wired to a reference with a 
+web service binding. The binding refers to WSDL that identifies the service
+exposed by the helloworld-ws-service sample. 
+
+helloworld-ws-sdo/
+  src/
+    main/
+      java/
+        helloworld/
+          HelloWorldService.java          - interface description for 
+                                            HelloWorldServiceComponent
+          HelloWorldServiceComponent.java - component implementation
+          HelloWorldClient.java           - starts the SCA Runtime and 
+                                            deploys the helloworldwsclient
+                                            .composite. It then calls the 
+                                            HelloWorldServiceComponent
+      resources/
+        wsdl
+          helloworld.wsdl                 - the service description that the 
+                                            SCA reference uses to bind to service. 
+      
+    test/
+      java/
+        helloworld/
+          HelloWorldClientTestCase.java   - JUnit test case
+        helloworld-ws-sdo.png             - a pictorial representation of the 
+                                            sample .composite file
+  build.xml                               - the Ant build file
+  pom.xml                                 - the Maven build file        
+
+Building And Running The Sample Using Ant
+-----------------------------------------
+You can build and run the sample with the binary distribution using Ant. 
+Make sure that you have started helloworld-ws-service which this sample is dependent on
+in a separate command window. You can either follow the instruction at the begining of this 
+sample file or if you want to build and run the service, follow the README under helloworld-ws-service.
+
+Now, let's build and run helloworld-ws-sdo sample:
+
+cd helloworld-ws-sdo                                             
+ant 
+ant run 
+
+You should see the following output from the run target.
+
+run:
+     [java] log4j:WARN No appenders could be found for logger (org.apache.axiom.
+om.util.StAXUtils).
+     [java] log4j:WARN Please initialize the log4j system properly.
+     [java] Injected helloWorldService
+     [java] Called getGreetings
+     [java] Hello World
+
+Building And Running The Sample Using Maven 
+-------------------------------------------
+You can build and run the sample with either the binary or source distributions using Maven. Please note that you do not need to start helloworld-ws-service in this case since Maven does this for you.
+
+cd helloworld-ws-sdo
+mvn
+
+You should see the following output from the test phase.
+
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running helloworld.HelloWorldClientTestCase
+log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAX
+Utils).
+log4j:WARN Please initialize the log4j system properly.
+log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAX
+Utils).
+log4j:WARN Please initialize the log4j system properly.
+Aug 23, 2007 2:27:32 PM org.apache.catalina.core.StandardEngine start
+INFO: Starting Servlet Engine: Apache Tomcat/6.0.10
+Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.ContextConfig defaultWebConf
+ig
+INFO: No default web.xml
+Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register
+WARNING: Could not get url for /javax/servlet/jsp/resources/jsp_2_0.xsd
+Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register
+WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_
+1.dtd
+Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register
+WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_
+2.dtd
+Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register
+WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_2_
+0.xsd
+Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register
+WARNING: Could not get url for /javax/servlet/resources/j2ee_web_services_1_1.xs
+d
+Aug 23, 2007 2:27:32 PM org.apache.coyote.http11.Http11Protocol init
+INFO: Initializing Coyote HTTP/1.1 on http-8085
+Aug 23, 2007 2:27:32 PM org.apache.coyote.http11.Http11Protocol start
+INFO: Starting Coyote HTTP/1.1 on http-8085
+Aug 23, 2007 2:27:32 PM org.apache.tuscany.sca.http.tomcat.TomcatServer addServl
+etMapping
+INFO: Added Servlet mapping: http://localhost:8085/HelloWorldService
+Injected helloWorldService
+Called getGreetings
+Aug 23, 2007 2:27:34 PM org.apache.coyote.http11.Http11Protocol destroy
+INFO: Stopping Coyote HTTP/1.1 on http-8085
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.502 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+
+
+This shows that the Junit test cases have run successfully. 
+
+
+
+ + +

distributed-osgi

+ +

These samples demonstrate the execution of Tuscany contributions in a distributed OSGI environment.

+ +

dosgi-dynamic-calculator

+ + +

dosgi-dynamic-calculator-operations

+ + +

implementation-bpel

+
TODO
+ +

contribution-helloworld-bpel

+
TODO
check instructions work and fix up
+

This sample demonstrates an SCA service implemented by a BPEL process.

+ +

If you just want to run it to see what happens open a command prompt, navigate
+to this sample directory, and do

+
+
+ant compile run
+
+
+

OR if you don't have ant, on Windows do

+ +
+
+mkdir target\classes
+mkdir target\wsdl2java-source
+java \-cp ..\..\lib\tuscany-sca-manifest.jar org.apache.tuscany.sdo.generate.XSD2JavaGenerator \-targetDirectory target/wsdl2java-source \-prefix HelloWorld \-noContainment \-noUnsettable src/main/resources/helloworld.wsdl
+java \-cp ..\..\lib\tuscany-sca-manifest.jar org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator \-targetDirectory target/wsdl2java-source src/main/resources/helloworld.wsdl
+unzip ..\..\lib\ode-dao-jpa-ojpa-derby-1.1.zip \-d target\database
+javac \-d target\classes \-cp target\classes;..\..\lib\tuscany-sca-manifest.jar \-sourcepath src\main\java;target\wsdl2java-source \-target 1.5 \-g \-source 1.5 src\main\java\helloworld\BPELClient.java
+copy src\main\resources\* target\classes
+java \-cp ..\..\lib\tuscany-sca-manifest.jar;target\classes;target\database helloworld.BPELClient
+
+
+

and on *nix do

+
+
+mkdir target/classes
+mkdir target/wsdl2java-source
+java \-cp ../../lib/tuscany-sca-manifest.jar org.apache.tuscany.sdo.generate.XSD2JavaGenerator \-targetDirectory target/wsdl2java-source \-prefix HelloWorld \-noContainment \-noUnsettable src/main/resources/helloworld.wsdl
+java \-cp ../../lib/tuscany-sca-manifest.jar org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator \-targetDirectory target/wsdl2java-source src/main/resources/helloworld.wsdl
+unzip ../../lib/ode-dao-jpa-ojpa-derby-1.1.zip \-d target/database
+javac \-d target/classes \-cp target/classes;../../lib/tuscany-sca-manifest.jar \-sourcepath src/main/java;target/wsdl2java-source \-target 1.5 \-g \-source 1.5 src/main/java/helloworld/BPELClient.java
+cp src/main/resources/\* target/classes
+java \-cp ../../lib/tuscany-sca-manifest.jar:target/classes:target/database helloworld.BPELClient
+
+
+

The sample will start an embedded BPEL engine, deploy a process and invoke it.

+ +

Sample Overview

+ +

The sample provides a single component that is wired to a service with a
+web service binding.

+ +
+
+helloworld-bpel/
+src/
+main/
+java/
+helloworld/
+BPELClient.java          	  - client application for
+BEPELHelloWorldComponent
+
+resources/
+deploy.xml			  - ODE deployment descriptor
+helloworld.bpel		  - helloworld bpel process
+helloworld.componentType	  - helloworld bpel service description
+helloworld.composite            - the SCA assembly for this sample
+helloworld.wsdl                 - the service description that describes
+the bpel process
+log4j.properties                - logging configuration
+
+test/
+java/
+helloworld/
+BPELHelloWorldTestCase.java     - JUnit test case
+helloworld-bpel.png                     - a pictorial representation of the
+sample .composite file
+build.xml                               - the Ant build file
+pom.xml                                 - the Maven build file
+
+
+

Building And Running The Sample Using Ant

+ +

With the binary distribution the sample can be built and run using Ant as
+follows

+ +
+
+cd helloworld-bpel
+ant compile
+ant run
+
+
+

You should see the following output from the run target.

+ +
+
+run:
+[java] Starting BPELHelloWorldComponent
+[java] >>> Deploying : D:\temp\SCA1.1-RC1\tuscany-sca-1.1-incubating\samples\helloworld-bpel\target\classes
+[java] ::arg:::::: <?xml version="1.0" encoding="UTF-8"?>
+[java] <hello xmlns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"><message xmlns="http://tuscany.apache.org/implementation/bpel/exampl
+e/helloworld.wsdl">Hello</message></hello>
+[java] ::message:: <?xml version="1.0" encoding="UTF-8"?>
+[java] <message><TestPart><hello xmlns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"><message xmlns="http://tuscany.apache.org/impleme
+ntation/bpel/example/helloworld.wsdl">Hello</message></hello></TestPart></message>
+[java] Status: RESPONSE
+[java] Response: <?xml version="1.0" encoding="UTF-8"?>
+[java] <message><TestPart><hello xmlns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl">Hello World</hello></TestPart></message>
+[java] Hello World
+[java] Stopping BPELHelloWorldComponent
+[java] Stopped \!\!\!
+
+BUILD SUCCESSFUL
+Total time: 36 seconds
+
+
+

Building And Running The Sample Using Maven

+ +

With either the binary or source distributions the sample can be built and run
+using Maven as follows. When using Maven, a simple test is present that exercise
+the same logic as the client to invoke the BPEl process.

+
+
+cd helloworld-bpel
+mvn
+
+
+

You should see the following output from the test phase.

+ +
+
+\------------------------------------------------------\-
+T E S T S
+\------------------------------------------------------\-
+Running helloworld.BPELHelloWorldTestCase
+Starting BPELHelloWorldComponent
+>>> Deploying : D:\dev\Opensource\Apache\Tuscany\source\java-sca-1.1\samples\helloworld-bpel\target\classes
+::arg:::::: <?xml version="1.0" encoding="UTF-8"?>
+<hello xmlns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"><message xmlns="http://tuscany.apache.org/implementation/bpel/example/helloworld
+.wsdl">Hello</message></hello>
+::message:: <?xml version="1.0" encoding="UTF-8"?>
+<message><TestPart><hello xmlns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"><message xmlns="http://tuscany.apache.org/implementation/bpel
+/example/helloworld.wsdl">Hello</message></hello></TestPart></message>
+Status: RESPONSE
+Response: <?xml version="1.0" encoding="UTF-8"?>
+<message><TestPart><hello xmlns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl">Hello World</hello></TestPart></message>
+Stopping BPELHelloWorldComponent
+Stopped \!\!\!
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.656 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+
+[INFO] [jar:jar]
+[INFO] Building jar: D:\dev\Opensource\Apache\Tuscany\source\java-sca-1.1\samples\helloworld-bpel\target\sample-helloworld-bpel.jar
+[INFO] [install:install]
+[INFO] Installing D:\dev\Opensource\Apache\Tuscany\source\java-sca-1.1\samples\helloworld-bpel\target\sample-helloworld-bpel.jar to C:\Documents and Settings\lresend
+e\.m2\repository\org\apache\tuscany\sca\sample-helloworld-bpel\1.1-incubating-SNAPSHOT\sample-helloworld-bpel-1.1-incubating-SNAPSHOT.jar
+[INFO] \-----------------------------------------------------------------------\-
+[INFO] BUILD SUCCESSFUL
+[INFO] \-----------------------------------------------------------------------\-
+[INFO] Total time: 53 seconds
+[INFO] Finished at: Sun Jan 13 09:54:39 PST 2008
+[INFO] Final Memory: 24M/43M
+[INFO] \-----------------------------------------------------------------------\-
+
+
+ +
+
+
+
+
+ +

This shows that the Junit test cases have run successfully.

+ +

helloworld-bpel-webapp

+ +

implementation-composite

+
TODO
Understand and Document
+ +

helloworld-recursive

+ +
TODO
Understand and Document
+ +

helloworld-recursive-ws

+ +
TODO
Understand and Document
+ +

implementation-extension

+
TODO
Understand and Document
+ +

implementation-java

+
TODO
Understand and Document
+ +

contribution-calculator

+
TODO
Understand and Document
+ +

implementation.osgi

+ +

dosgi-calculator

+ + +

dosgi-calculator-operations

+
TODO
Understand and Document
+ +

implementation-script

+
TODO
Understand and Document
+ +

contribution-calculator

+
TODO
Understand and Document
+ +

implementation-spring

+
TODO
Understand and Document
+ +

contribution-helloworld-spring

+ +
TODO
Understand and Document
+ +

helloworld-spring-webapp

+ +

implementation-webapp

+ +

helloworld-jaxrs-webapp

+ + +

helloworld-jms-webapp

+ + +

helloworld-js-client-webapp

+ + +

helloworld-jsf-webapp

+ + +

helloworld-jsp-webapp

+ + +

helloworld-servlet-webapp

+ + +

helloworld-stripes-webapp

+ +

logging-scribe

+
TODO
Understand and Document
+ +

maven-osgi-junit

+
TODO
Understand and Document
+ +

calculator-osgi

+
TODO
Understand and Document
+ +

calculator-rest-osgi

+
TODO
Understand and Document
+ +

sca-client

+
TODO
Understand and Document
+ +

calculator-scaclient

+
TODO
Understand and Document
+ +

helloworld-scaclient

+ +
TODO
Understand and Document
+ +

applications

+
TODO
Understand and Document
+ +

store

+
TODO
Understand and Document
+ +

store-webapp

+
TODO
Understand and Document
+
+ +
+ Children + + Show Children + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/samples.html b/site/trunk/site-publish/documentation-2x/samples.html new file mode 100644 index 0000000000..ecb8d36f65 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/samples.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + Samples : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Getting Started > Samples + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Getting Started > Samples + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Tuscany Samples

+ +

The Tuscany samples are shipped with Tuscany binary and source releases. To make sure that you're looking at the documentation that matches the distribution you have downloaded select the appropriate link below:

+ +

2.0-Beta1 samples documentation

+ +
+ +
+ Children + + Show Children + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg b/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg new file mode 100644 index 0000000000..4c1ea05f6d Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg.jpeg b/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg.jpeg new file mode 100644 index 0000000000..b0e371f303 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png b/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png new file mode 100644 index 0000000000..72b9d1b4d2 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png.jpeg new file mode 100644 index 0000000000..6ab7db30aa Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg b/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg new file mode 100644 index 0000000000..587094badc Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg.jpeg b/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg.jpeg new file mode 100644 index 0000000000..829bd77110 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.html b/site/trunk/site-publish/documentation-2x/sca-introduction.html new file mode 100644 index 0000000000..717163f95b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-introduction.html @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + SCA Introduction : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Introduction + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Introduction + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ + + +

What is SCA?

+

SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology.

+ +

SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.

+ +

SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes.

+ +

Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled applications.

+ +

Now let's talk about SCA building blocks and concepts.

+ +

SCA Component

+ +

The basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:

+ +
    +
  • Service: Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.
  • +
  • Reference: This describes the dependencies this type of component has in order to function. A reference is an interface.
  • +
  • Property: This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.
  • +
  • Intent policies: This describes assumptions on how the component will behave. There are two types of policies. +
      +
    • Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging
    • +
    • Interaction policy - defines how the components behave with one another. For example, security.
    • +
    +
  • +
  • Implementation: Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.
  • +
+ + +

This is demonstrated below.
+

+ +

The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.

+ +

SCA Wire

+ +

As mentioned above, an SCA component may have zero or more references. Refrences in SCA define how SCA components invoke services. The relationship between a reference and a service is typically demonstrated through a line in a SCA diagrams and is referred to as a wire.

+ +

The term wire can at the begining seem confusing because you may ask how a wire is realized. There is no physical definition for a wire, it is really derived from the relationship between a Service and its refrence(s) at runtime. This is realized through dependency injection in Tuscany.

+ + +

SCA Composite

+ +

An SCA composite consists of components, services, references, and wires that connect them. A composite is the unit of deployment for SCA.
+A composite can be viewed as a component whose implementation is not code but an aggregation of one or more components co-operating to provide higher level services. Think of composite as a solution, for example a credit check composite may consist of multiple components that together perform the credit checking work. A composite can also be used within a larger solution, for example credit check can be part of a order processing composite. A composite has the same charactersitics as a component. It provides Services, has References to other dependencies, and can be configured using Properties and can have intent policies in just the same way as an individual components can. In thise case, attributes of some of the components that are embedded in the composite get 'promoted' and becom the attribute of the composite. In the example below, you see a calculator composite which consists of 5 components, a calculator service has references to four components:Add, Subtract, Multiply and Divide.

+ +


+ The assembly or wiring is defined in .composite file through Service Component Definition Language (SCDL) that is in XML. For example, calculator.composite would define that calculator component references the other four components.

+ +

SCA Contribution

+ +

The artifacts that make up a solution get packaged into what is called a contribution. A contribution can take a number of different forms. For example, it could be a jar file, or it could be a directory tree on the file system. A contribution can contain composites, java classes, BPEL processes, XSD files, wsdl files, etc. An SCA application can be divided into multiple contributions with dependencies between them. In general, some services depend closely on other services and it makes sense to package them together. If services are more independent it is best to package them separately so that they can be reused in different contexts. A contribution is a deployable unit. A solution may require multiple contributions that share artifacts and artifacts can be shared between (imported) between contributions.

+ +

SCA Domain

+ +

Contribution packages get contributed to what is called SCA domain which is the scope of adminstration at runtime. An SCA Domain represents a complete runtime configuration, potentially distributed over a series of interconnected runtime nodes and is a logical view of the running applications or a coherent grouping of components that are working together. An SCA Domain typically represents an area of business functionality controlled by a single organization. For example, an SCA Domain may be the whole of a business, or it may be a department within a business.

+ +

Therefore, an SCA domain consists of the definitions of composites, components, their implementations, and the nodes on which they run. Components deployed into a domain can directly wire to other components within the same domain. Communication with services outside of a domain is done through bindings.

+ + +

SCA Domains can vary in size from the very small to the very large:

+
    +
  • a very small domain could be one within a test environment inside an IDE
  • +
  • a medium sized domain could be a single server or small cluster supporting a single application
  • +
  • a large domain could describe all the services within a department or company
  • +
+ + +

In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services. However, during development one is not concerned with all this. The code is packaged and made available for deployment. Tuscany SCA Java supports contributions in the form of JAR or filesystem.

+ +

Below is an example of domain with two contributions.
+

+ +

SCA Binding

+

A binding is used as a means of communication between services and handles the protocols. It defines with what communication method a service can be accessed with or with what communication method it can will access other services. There can be different types of bindings depending on technologies used to develop a solution. For example JMS binding, Webservices binding, Atom binding for web20 interaction, etc.

+ +

Services can be configured with different bindings and there can be multiple bindings for a service. Bindings for the services and references get defined declaratively in the .composite file. There is a default binding called binding.sca which when used leaves the choice of binding to the underlying infrastructure by default.

+ +

The declarative bindings and the abstraction of protocols from business logic brings agility to SCA applications. This allows SCA applications to be purely focused on business logic and not be contaminated with protocol handling information. It also enables the SCA compositions to grow or change without code modification while also working with applications that are not enabled with SCA.

+ + +

SCA Policy

+

An enterprise application requires control beyond the business functional capability which can include how security is handled in the enterprise or what transactional capability should be applied to services that are offered. SCA policies define the constraints or capabilities that get applied to services and their interaction. Two types of policies are defined in SCA.

+
    +
  • Interaction Policies - Define the policies that influence interaction of services for example whether authentication is required or not.
  • +
  • Implementation Policies - Define how the components behave at runtime for example whether it is transactional or not.
  • +
+ + +

SCA mechanisms for defining policies such as intents and policySets can only be used in the context of a single domain. The fact that policies can be defined declaratively make applications adaptive to the environment that they get deployed into or to changes in the business requirements.
+For more information about policy check out the sca policy framework specificationversion=1]

+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingatom.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingatom.html new file mode 100644 index 0000000000..a8cd6b593d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingatom.html @@ -0,0 +1,575 @@ + + + + + + + + + + + + + + + SCA Java binding.atom : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.atom + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.atom + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +

<binding.atom> Introduction

+ +

The Tuscany Java SCA runtime supports Atom using the <binding.atom> extension. Tuscany can communicate with services that provide or consume items described in the Atom Syndication Format and Atom Publishing Protocol. The Atom protcol is an additional conceptual layer that operates on top of the Hyper Text Transfer Protocol, so it is useful to understand that underlying protocol as well. Reference materials on these specifications is available here.

+ + + + +

Some of the function described here is included in the Tuscany 1.3.2 and 1.4 releases. The complete timeline of available and future plans is given in the Tuscany Web 2.0 Roadmap.

+ + +

Using the Tuscany Atom binding

+ +

The primary use of the Atom binding is to provide support for collections that can be shared in a distributed fashion. Examples of shared collections includes shopping carts, telephone directories, insurance forms, and blog sites. These collections of items can be added, retrieved, updated, and deleted using the 4 basic actions of the HTTP protocol:

+
    +
  • POST (create or add)
  • +
  • GET (retreive or query)
  • +
  • PUT (update)
  • +
  • DELETE (destroy or remove
  • +
+ + +

The simplest way to use the Atom binding is to declare a collection as a service and provide an HTTP address where one can access the service. This service is declared in an SCA composite file which describes the SCA domain.

+
+
+	<service name="customer" promote="CustomerCollection">
+		<tuscany:binding.atom uri = "http://localhost:8084/customer"/>
+	</service>
+
+
+ +

The service can be implemented in Java or any of the the Tuscany implementation types. For example, here is a way to create an implmentation for the above CustomerCollection service in the Java type.

+
+
+    <component name="CustomerCollection">
+        <implementation.java class="org.apache.tuscany.sca.binding.atom.CustomerCollectionImpl"/>
+    </component>
+
+
+ +

A collection that uses the Atom binding usually implements the Collection interface given in the package org.apache.tuscany.sca.binding.atom.collection. This interface declares the basic access methods mentioned above (post, get, put, and delete), and the data types on the methods are expressed as Atom type objects Feed and Entry. In other words, one can view the collection as an Atom Feed, and manipulate items in the Feed as Atom Entries. This shows the basic methods of the Atom Collection intergface in Tuscany:

+
+
+public interface Collection {
+
+    Entry post(Entry entry);
+    Entry get(String id) throws NotFoundException;
+    void put(String id, Entry entry) throws NotFoundException;
+    void delete(String id) throws NotFoundException;
+
+    Feed getFeed();
+    Feed query(String queryString);
+}
+
+
+ +

It is up to the developer or implementer of the shopping cart, telephone directory, or blog site to provide the code that implements the Collection interface. The developer or implementor also provides the code that translates from the business objects (shopping cart items, directory entries, insurance forms, blog articles) to the Atom model objects Feed and Entry.

+ +

One of the features of using this binding is that your business objects (shopping cart items, directory entries, insurance forms, and blog articles) can now be easily published and shared by the many Atom supporting tools such as feed readers, web browsers, and syndication aggregation. In other words, people can access your collection most anywhere on any device.

+ +

Example

+ +

Continuing with the CustomerCollection example shown above, let's see how one of the common access methods. In this case, let's look at the post method and how one would add a new item to the collection. When you declared your Atom binding in your SCA composite, you also provided a uri for your collection. Using a web browser or other device, a user performs an HTTP put request to this uri, with the body of the put containing the data. Tuscany SCA performs the task of invoking the correct service and finding the Java implementation for your collection and calling the correct method.

+
+
+    public Entry post(Entry entry) {
+       // 1. Validate entry fields
+       if (entry.getTitle() != null ) {
+          entryID = "tag:" + site "," + todaysDate + ":" + title;
+          entry.setID( entryID );
+       }
+       // 2. Provide any additional data.
+       entry.setUpdated( new Date() );
+       // 3. Store data in local collection or data base.
+       entries.put(id, entry);
+       // 4. Return entry to poster.
+       return entry;
+    }
+
+
+ +

Much of the code consists of converting from a Feed or Entry to a business data model and storing to a collection.

+ +

Tuscany uses the Apache Abdera project to provide a model for Atom data. Please see Apache Abdera for the Java method to access Atom Feeds and Entries, and how to easily convert these Java objects to and from XML.

+ +

Other Features of the Tuscany Atom Binding

+ +

More advanced features of the Tuscany Atom binding are described below.

+ +

Data Caching using ETags, Last-Modified, and other Header Commands

+ +

Atom feeds and entries can often be very large pieces of data. Since Tuscany uses the Atom data binding as one of its supported bindings, there is the potential that many requests for data may have large pieces of data associated with a request.

+ +

Hyper Text Transfer Protocol (HTTP), the basis of the web, has support to help limit or cache the amount of data shared between a client and server by adding tags to a resource reques. These header tags are the ETag and the Last-Modified tags. When used with a predicate tag such as If-Match, If-Not-Match, If-Modified-Since, If-Unmodified-Since, etc., the client and the server can avoid shipping large pieces of data when updated data is not needed.

+ +

The following entry scenarios show how Tuscany supports this form of caching throught ETags, Last-Modified, and other Header Commands.

+ +
    +
  • Posting new entry data to a feed
    + (Show entry data post request, item does not exist on server, server response code 200, return entry data body)
  • +
  • Updating existing entry data in a feed
    + (Show data update put, If-Match precondition, item is newer and matching, matching return code 412)
  • +
  • Requesting existing entry data
    + (Show get via ETag, If-None-Match precondition, modified entry data item, matching entry body returned)
  • +
  • Requesting stale entry data
    + (Show get via ETAG, If-None-Match precondition, unmodified entry data item, not modified return code 304)
  • +
  • Requesting up-to-date entry data
    + (Show request via last-modified date, entry data is unmodified, Not modified return code 304)
  • +
  • Requesting out-of-date entry data
    + (Show request via last-modified date, entry data is modified, updated data is returned)
  • +
+ + +

Tuscany provides a test case ProviderEntryEntityTagsTest.java in module binding.atom.abdera that validates these Entry caching scenarios via JTest. Additionally, the following Feed scenarios are provided in the test case ProviderFeedEntityTagsTest.java.

+ +
    +
  • Test feed basics
    + (Request Atom feed. Check that feed is non-null, has Id, title, and updated values. Check for Etag and Last-Modified headers)
  • +
  • Test Unmodified If-Match predicate
    + (Request feed based on existing ETag. Use If-Match predicate in request header. Expect status 200 and feed body.)
  • +
  • Test Unmodified If-None-Match predicate
    + (Request feed based on existing ETag. Use If-None-Match predicate in request header. Expect status 304, item not modified, no feed body.)
  • +
  • Test Unmodified If-Unmodified-Since predicate
    + (Request feed based on very current Last-Modified. Use If-Unmodified-Since predicate in request header. Expect status 304, item not modified, no feed body.)
  • +
  • Test Unmodified If-Modified-Since predicate
    + (Request feed based on very old Last-Modified. Use If-Modified-Since predicate in request header. Expect status 200, feed in body.)
  • +
  • Test Modified If-None-Match predicate
    + (Request feed based on existing ETag. Use If-None-Match predicate in request header. Expect status 200, feed in body.)
  • +
  • Test Modified If-Match predicate
    + (Request feed based on existing ETag. Use If-Match predicate in request header. Expect status 412, precondition failed, no feed in body.)
  • +
  • Test Modified If-UnModified-Since predicate
    + (Request feed based on very recent Last-Mod date. Use If-Unmodified-Since predicate in request header. Expect status 304, no feed in body.)
  • +
  • Test Modified If-Modified-Since predicate
    + (Request feed based on very old Last-Mod date. Use If-Modified-Since predicate in request header. Expect status 200, feed in body.)
  • +
+ + +

Support of Web 2.0 data caching via ETags and Last-Modified fields allow the Tuscany user to save bandwidth and re-requests of data. Especially in the area of content feeds which can have very large data objects, the ability to cache improves server performance and reduces network bottlenecks. A full end-to-end demonstration of this network savings is being created via Jira TUSCANY-2537 which will show caching in the feed aggregator sample.

+ +

Support for Negotiated Content Types

+ +

Requests for data now respond with negotiated content types. In other words, the requester can now state which content types are preferred, and the responder can provide different content types. The data preference is expressed in the request header "Accept" parameter.

+ +

These data binding types are supported:

+
    +
  • Atom XML format (Request header Accept=application/atom+xml)
  • +
  • Atom in JSON format (Request header Accept=application/atom+json)
  • +
+ + +

The following content types are requestable in different data bindings

+
    +
  • Atom entry data (MIME type application/atom+xxx;type=entry where xxx=xml or json)
  • +
  • Atom feed data (MIME type application/atom+xxx;type=feed where xxx=xml or json)
  • +
+ + +

For example, the requester asks for an Atom entry with no Accept header or Accept header value is application/atom+xml. The returned response body contains:

+
Atom Entry response body as XML
+
+<?xml version='1.0' encoding='UTF-8'?>
+<entry xmlns="http://www.w3.org/2005/Atom">
+  <title type="text">customer Fred Farkle</title>
+  <updated>2008-08-08T18:40:30.484Z</updated>
+  <author>
+    <name>Apache Tuscany</name>
+  </author>
+  <content type="text">Fred Farkle</content>
+  <id>urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085</id>
+  <link href="urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085" rel="edit" />
+  <link href="urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085" rel="alternate" />
+</entry>
+
+
+ +

In contrast, the requester asks for an Atom entry with Accept header value is application/atom+json. The returned response body contains:

+
Atom Entry response body as JSON
+
+{
+ "id":"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085",
+ "title":"customer Fred Farkle",
+ "content":"Fred Farkle",
+ "updated":"2008-08-08T18:40:30.484Z",
+ "authors":[{
+   "name":"Apache Tuscany"
+  }
+ ],
+ "links":[{
+   "href":"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085",
+   "rel":"edit"
+  },{
+   "href":"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085",
+   "rel":"alternate"
+  }
+ ]
+}
+
+
+ +

The ability to view entires and feeds in multiple data formats allows the Tuscany user extreme flexibility in parsing and processing data returned by a service or collection.

+ +

Service and Workspace Document Support (application/atomsvc+xml)

+ +

Prior to this implementation, there was a dummy service document provided when you visited an Atom feed service address with an "atomsvc" extension. For example, running the the Atom service binding unit tests, one could visit http://localhost:8080/customer/atomsvc and receive the following service document:

+
Tuscany Atom Binding Dummy Service document
+
+   <?xml version='1.0' encoding='UTF-8'?>
+   <service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
+      <workspace>
+         <atom:title type="text">resource</atom:title>
+         <collection href="http://luck.ibm.com:8084/customer">
+            <atom:title type="text">collection</atom:title>
+            <accept>application/atom+xml;type=entry</accept>
+            <categories />
+         </collection>
+      </workspace>
+   </service>
+
+
+

This dummy implementation did not provide a true collection name, URL to the collection, accept MIME types or categories.

+ +

Following the inclusion of TUSCANY-2597 and the new implentation, the Tuscany Atom binding will correctly populate an atomsvc document with information from the feed and give correct information for discovery. Now , running the the Atom service binding unit tests, one could visit http://localhost:8080/customer/atomsvc and receive the following service document:

+
Tuscany Atom Binding Service document
+
+<?xml version='1.0' encoding='UTF-8'?>
+<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
+  <workspace xml:base="http://localhost:8084/">
+    <atom:title type="text">workspace</atom:title>
+    <collection href="http://localhost:8084/customer">
+      <atom:title type="text">customers</atom:title>
+      <accept>application/atom+xml; type=feed</accept>
+      <accept>application/json; type=feed</accept>
+      <accept>application/atom+xml; type=entry</accept>
+      <accept>application/json; type=entry</accept>
+      <categories />
+    </collection>
+  </workspace>
+</service>
+
+
+ +

The service document is now properly populated with URLs, titles, accept MIME types and categories. These are elements that are needed for collection discovery and visitatin.

+ +

Support for full JavaScript Atom client.

+


+After creating and publishing your SCA service, it can be tedious converting to and from Atom Feeds and Entries on the client side. Tuscany provides a full JavaScript object model for Atom Feeds, Entries, and other data objects. This benefits customers and client developers by providing an easy model to use in HTML, JSP, scripts, GUIs, and other client side technology.

+ +

For example, prior to this feature, developers would have to develop code in XML to manipulate nodes in the XML document that represented the current page:

+
Tuscany client side XML Document Manipulation (old style)
+
+   var entries = feed.getElementsByTagName("entry");              
+   var list = "";
+   for (var i=0; i<entries.length; i++) {
+      var item = entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
+      list += item + ' <br>';
+   }
+
+
+ +

Using the new JavaScript client object model, the code is greatly simplified and easier to understand:

+
Tuscany client side JavaScript Atom Object Model (new style)
+
+   var entries = feed.getEntries();              
+   var list = "";
+   for (var i=0; i<entries.length; i++) {
+      var item = entries[i].getContent();
+      list += item + ' <br>';
+   }
+
+
+ +

Additionally, the Tuscany Atom JavaScript client provides full deserialization and serialization to and from the JavaScript Atom model and its XML format. In other words let's say you create an HTML page that scrapes a data base and wants to submit the data as an entry to a collection of blog articles. You can create the Entry data using the JavaScript Entry model:

+
+
+       var entry = new Entry();
+       entry.setNamespace( "http://www.w3.org/2005/Atom" );
+       entry.setTitle( "Atom-Powered Robots Run Amok" );
+       entry.setId( "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a" );
+       entry.setUpdated( "2003-12-13T18:30:02Z" );
+       entry.setContent( "Some text." );
+       entry.addAuthor( new Person( "John Doe" ) );
+       entry.addAuthor( new Person( "Mark Pilgrim", "f8dy@example.com" ));
+       entry.addContributor( new Person( "Sam Ruby" ));
+       entry.addContributor( new Person( "Joe Gregorio" ));
+       entry.addLink( new Link( "http://example.org/edit/first-post.atom", "edit" ));
+
+
+ +

Now to convert this code to XML and submit it to a site is easy using the Tuscany Atom JavaScript client:

+
+
+       var text = entry.toXML();
+
+
+ +

The text string now contains the fully serialized XML format of the Entry object

+
+
+      "<?xml version="1.0"?>
+      <entry xmlns="http://www.w3.org/2005/Atom">
+        <title>Atom-Powered Robots Run Amok</title>
+        <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+        <updated>2003-12-13T18:30:02Z</updated>
+        <author><name>John Doe</name></author>
+        <content>Some text.</content>
+        <link rel="edit" href="http://example.org/edit/first-post.atom"/>
+      </entry>"
+
+
+ +

Similarly the Tuscany Atom JavaScript client contains methods for deserializing from XML reperesentations to a JavaScript Atom model:

+
+
+   var feed = new Feed();
+   feed.readFromXML( xmlString );
+
+
+ +

A full example showing how to use this client model is given in implementation-widgets-runtime. The store.html page shows the older style of document XML manipulation. The storeJS.html page shows the newer style of JavaScript object manipulation.

+ +

Support for Posting and Putting Media Items

+

The Atom Publishing Protocol provides for a separate space for storage of media resources. The purpose of a separate space for these resources is to keep feeds and entries from growing too large with the contents of typically large items. Media resources can be any binary object that is supported by a MIME type, but typically media resources include video, image, and audio type files.

+ +

Media resources are maintained by the collection implementor, and are given a dual identity. There is a location in the media respository, typically where one places the media files, and there is a location in the feed or entry space. This second reference is known as a media link entry.

+ +

The Tuscany package at org.apache.tuscany.sca.binding.atom.collection (in tuscany-binding-atom-abdera package) has the following interface for MediaCollection:

+
Tuscany MediaCollection interface
+
+   /**
+     * Creates a new media entry
+     * 
+     * @param title
+     * @param slug
+     * @param contentType
+     * @param media
+     */
+    Entry postMedia(String title, String slug, String contentType, InputStream media);
+
+    /**
+     * Update a media entry.
+     * 
+     * @param id
+     * @param contentType
+     * @param media
+     * @return
+     */
+    void putMedia(String id, String contentType, InputStream media) throws NotFoundException;
+
+
+ +

These two methods are used to create (post) new media files, and update (put) new media information and edits. The media resources may be retrieved (get) or removed (delete) via the normal HTTP get and delete operations and the links returned by the post and get methods.

+ +

For instance, when creating a media resource, one typically posts the following information via an HTTP post request:

+
Requesting New Media Creation (postMedia method invoke)
+
+POST /edit/ HTTP/1.1
+Host: media.example.org
+Content-Type: image/png
+Slug: The Beach
+Authorization: Basic ZGFmZnk6c2VjZXJldA==
+Content-Length: nnn
+...binary data...
+
+
+ +

In turn, the Tuscany invocation framework invokes the postMedia shown above on the media collection implementation. The media collection implementation may then take the binary data from the media InputStream and store it to a media repository. The media collection implemenation should construct a proper Entry item via XML construction or some Atom model framework such as Apache Abdera. The Entry should contain the required elements (title, id, updated, summary, content, edit link, edit-media link) in order to provide the proper Atom Pub Protocol return headers and Entry data as given here:

+
Affirming New Media Creation (postMedia method return)
+
+HTTP/1.1 201 Created
+Content-Length: nnn
+Content-Type: application/atom+xml;type=entry;charset="utf-8"
+Location: http://example.org/media/edit/the_beach.atom
+<?xml version="1.0"?>
+<entry xmlns="http://www.w3.org/2005/Atom">
+   <title>The Beach</title>
+   <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+   <updated>2005-10-07T17:17:08Z</updated>
+   <author><name>Daffy</name></author>
+   <summary type="text" />
+   <content type="image/png"
+      src="http://media.example.org/the_beach.png"/>
+   <link rel="edit-media"
+      href="http://media.example.org/edit/the_beach.png" />
+   <link rel="edit"
+      href="http://example.org/media/edit/the_beach.atom" />
+</entry> 
+
+
+ +

Note that the edit link provides the Atom Feed link to the media entry, and the edit-media link provides the media repository link to the media entry. Use these links to get and delete media.

+ +

A special convention has been implemented to allow the media collection implementation to return properties in the response header. The summary element of the Entry returned may contain a set of key=value properties separated via commas. For example, in order to provide return Content-Type and Content-Length values in the response header, one can created this text in the postMedia Entry summary element: Content-Type=image/jpg,Content-Length=21642.

+ +

The putMedia method acts in much the same way, but the URI to the item should contain an ID to the media being updated. For instance, if the usual post and get feed URI is http://localhost:8084/receipt, then to update the media given above one would put to the URI http://localhost:8084/receipt/urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a. Here is an example of a put request:

+
Requesting Media Update (putMedia method invoke)
+
+PUT /edit/urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a HTTP/1.1
+Host: media.example.org
+Content-Type: image/png
+Authorization: Basic ZGFmZnk6c2VjZXJldA==
+Content-Length: nnn 
+...binary data...
+
+
+ +

After the above put request, the Atom binding will invoke the media collection implementation putMedia method. The media collection should update the media if the ID exists (and a 200 OK status code will return), or the media collection should throw a NotFoundException if the ID does not exist (and a 404 not found status code will return).

+ +

The above scenarios are documents in the MediaCollectionTestCase unit test case in the binding-atom-abdera module in the Tuscany code base.

+ +

Security Policy support in HTTP and Web 2.0 Bindings

+ +
work in progress
+ +

Scenarios

+ +
    +
  • A Web 2.0 application requires that a user get authenticated before it can access the application.
  • +
  • A Web 2.0 application requires that all communication between client/server be done using SSL.
  • +
  • A given service, exposed using a web 2.0 binding requires user authentication.
  • +
  • A given operation, exposed using a web 2.0 binding requires user authentication.
  • +
+ + +

Policy Interceptor

+ +

The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.
+The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.

+ + +

+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingejb.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingejb.html new file mode 100644 index 0000000000..67d7b36553 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingejb.html @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + SCA Java binding.ejb : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.ejb + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.ejb + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +

<binding.ejb>

+ +

Tuscany provides the reference-side support for the SCA EJB Session Bean Binding V1.00. It allows SCA components to access existing stateless session beans.

+ +

The XML configutation

+ +

To access a stateless session, the uri attribute of the <binding.ejb> element needs to be be configured with a JNDI name.

+ +
+
+<binding.ejb uri="corbaname:iiop:1.2@localhost:1050#BrokerServiceBean" /> 
+
+
+ +

Depending on which enviroment the SCA components are hosted, various styles of the JNDI names can be supported:

+
    +
  • relative JNDI
  • +
  • java:comp/env/<ejb-ref>
  • +
  • corbaname JNDI
  • +
+ + +

Some examples

+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" name="account">
+    <component name="AccountDataServiceComponent">
+        <implementation.java class="bigbank.accountdata.AccountDataServiceImpl" /> 
+        <reference name="brokerService">
+            <binding.ejb uri="corbaname:iiop:1.2@localhost:1050#BrokerServiceBean" /> 
+        </reference>
+  </component>
+</composite>
+
+
+ +

The open-ejb deployment descriptor

+
+
+<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
+    ...
+    <enterprise-beans>
+        <session>
+            <ejb-name>BrokerServiceBean</ejb-name>
+            <jndi-name>BrokerServiceBean</jndi-name>
+            <tss-link>IdentityTokenNoSecurity</tss-link>
+        </session>    
+    </enterprise-beans>
+    ...
+</openejb-jar>
+
+
+ +
Integration with Geronimo 2.0.1
Make sure org.apache.geronimo.configs/openejb-corba-deployer/2.0-SNAPSHOT/car is started.
+Look under System Modules in Admin Console. This module is required to support CORBA Naming.
+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg new file mode 100644 index 0000000000..500725ebae Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg.jpeg new file mode 100644 index 0000000000..d0f3bcc5f9 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.html b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.html new file mode 100644 index 0000000000..b92c64e3ed --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + SCA Java binding.http security policy section : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.http security policy section + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.http security policy section + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Security Policy support in HTTP and Web 2.0 Bindings

+ +
work in progress
+ +

Scenarios

+ +
    +
  • A Web 2.0 application requires that a user get authenticated before it can access the application.
  • +
  • A Web 2.0 application requires that all communication between client/server be done using SSL.
  • +
  • A given service, exposed using a web 2.0 binding requires user authentication.
  • +
  • A given operation, exposed using a web 2.0 binding requires user authentication.
  • +
+ + +

Policy Interceptor

+ +

The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.
+The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.

+ + +

+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp.html b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp.html new file mode 100644 index 0000000000..0456869213 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp.html @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + SCA Java binding.http : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.http + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.http + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +

<binding.http> Introduction

+ +

The Tuscany Java SCA runtime supports Hyper Text Transfer Protocol (HTTP) using the <binding.http> extension. Tuscany can communicate with services that provide or consume business data objects via the well known actions of HTTP, for example POST, GET, PUT, and DELETE. In HTTP interactions between a client and a server takes place as a series of requests and responses. Information is comunicated by reads and rights over server socket ports. HTTP actions, also known as verbs, are communicated between a client and a server in the requests and responses. Each request and response consists of a header and a body. Typically the header contains the request action name, a URI indicating the location of object of the object of the action, and a number property name and value pairs containing other meta information about the transaction (e.g. body length, modification dates, MIME type, etc.). The body contains the subject of the action, whether it be a text or binary encoding of the data, an error message, or a serialized object.

+ +

More information on the HTTP protocol is located at:

+ + + +

Some of the advanced function described here is included in the Tuscany 1.3.2 and 1.4 releases. The complete timeline of available and future plans is given in the Tuscany Web 2.0 Roadmap. Users should also be aware of the Atom binding and RSS binding which sit on top of the HTTP binding, but have additional features and data types associated with the actions.

+ +

A Tuscany protocol binding such as the HTTP binding, is a way to fit a common protocol into the Tuscany abstraction and way of doing things. Each binding identifies itself to the Tuscany runtime and states under what conditions it is available. The Tuscany runtime uses the binding to translate invocations and data from the Tuscany world into the world of the protocol and back. So in the case of the HTTP binding, Tuscany uses the HTTP request and response mechanism to share business data between service components.

+ + +

Using the Tuscany HTTP binding

+ +

The primary use of the HTTP binding is to share resources and services over HTTP over the web in a distributed fashion. Resources are items that have a resource implementation such as web content. Services are items that have data types and a defined business interfaces such as shared collections. Examples of shared collections includes shopping carts, telephone directories, insurance forms, and blog sites. These collections of items can be added, retrieved, updated, and deleted using the 4 basic actions of the HTTP protocol:

+
    +
  • POST (create or add)
  • +
  • GET (retreive or query)
  • +
  • PUT (update)
  • +
  • DELETE (destroy or remove
  • +
+ + +

The simplest way to use the HTTP binding is to declare a resource that can be shared over the web via HTTP and provide an HTTP address where one can access the resource. This resource is declared in an SCA composite file which describes the SCA domain.

+
+
+    <component name="ResourceServiceComponent">
+        <tuscany:implementation.resource location="content"/>
+    	<service name="Resource">
+    		<tuscany:binding.http uri="http://localhost:8085/webcontent"/>
+    	</service>
+    </component>
+
+
+

No further implementation is needed with a resource. It is served on the web like any other static web content.

+ +

The HTTP binding can also declare a business service that can be shared over the web and provide an HTTP address where one can access the service. This resource is declared in an SCA composite file which describes the SCA domain.

+
+
+    <component name="HTTPBindingComponent">
+        <implementation.java class="org.apache.tuscany.sca.binding.http.TestBindingImpl"/>
+    	<service name="TestBindingImpl">
+    		<tuscany:binding.http uri="http://localhost:8085/httpbinding"/>
+    	</service>
+    </component>
+
+
+ +

Example HTTP Servlet and Service Implementations

+ +

A service that uses the HTTP binding usually implements the javax.servlet.Servlet interface. This interface declares the basic access methods mentioned in the J2EE specification: init, destroy, service, getServletInfo, etc. The Tuscany runtime ensures that the proper method is invoked whenever a service does one of the HTTP actions. For example here is a TestService implemented in the package org.apache.tuscany.sca.binding.http;

+
+
+@Service(Servlet.class)
+public class TestServiceImpl implements Servlet {
+
+    public void init(ServletConfig config) throws ServletException {
+    }
+
+    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
+        response.getOutputStream().print("<html><body><p>Hello from Tuscany HTTP service</body></html>");
+    }
+
+}
+
+
+ +

Another way of implementing an HTTP service is to use a collection interface that matches the actions of the HTTP protocol. In this case, the methods must be named post, get, put, and delete. Tuscany ensures that the proper method is invoked via the request and response protocol of HTTP:

+
+
+public class TestGetImpl {
+    
+    public InputStream get(String id) {
+        return new ByteArrayInputStream(("<html><body><p>This is the service GET method, item=" + id + "</body></html>").getBytes());
+
+    }
+}
+
+
+ +

So using the common verbs of HTTP and Java object serialization, one can implement services and run them anywhere the HTTP protocol is implemented. The service developer or implementer simply creates methods for post, get, put, and delete, and a business collection such as a shopping cart, telephone directory, insurance form, or blog sites can be created. See the Tuscany module binding-http-runtime for complete examples.

+ +

Unlike the Atom or RSS bindings, which have defined data types which encapsulate the business objects, the HTTP binding uses Java object serialization for passing business object data back and forth. Thus it is up to the developer or implementer to deserialize the data and reconstitute a business object.

+ +

Advanced Features of the Tuscany HTTP Binding

+ +

HTTP Conditional Actions and Caching using ETags and Last-Modified

+ +

The HTTP specification provides a set of methods for HTTP clients and servers to interact. These methods form the foundation of the World Wide Web. Tuscany implements many of these methods a binding interface to a collection. The main methods are:

+ +
    +
  • GET - retrieves an item from a collection
  • +
  • POST - creates or adds an item to a collection
  • +
  • PUT - updates or replaces an item in a collection
  • +
  • DELETE - removes an item in a a collection
  • +
+ + +

The HTTP specification (HTTP 1.1 Chapter 13 - Caching) also provides a mechanism by which these methods may be executed conditionally. To perform conditional methods, an HTTP client puts 3 items in the HTTP request header:

+ +
    +
  • ETag - entity tag, a unique identifier to an item in a collection. Normally created and returned by the server when creating (POST) a new item.
  • +
  • LastModified - an updated field. Normally a string containing a date and time of the last modification of the item.
  • +
  • Predicate - a logical test (e.g. IfModified, IfUnmodified) to use with the ETag and LastModified to determine whether to act.
  • +
+ + +

The complete list of predicates is given in the HTTP specification.

+ +

The most common use of conditional methods is to prevent two requests to the server instead of one conditional request. For example, a common scenario is to check if an item has been modified, if not changed update it with a new version, if changed do not update it. With a conditional PUT method (using the IfUnmodifed predicate and a LastModified date), this can be done in one action. Another common use is to prevent multiple GETs of an item to ensure we have a valid copy. Rather than doing a second request of a large item, one can do a conditional GET request (using an IfModified predicate and a LastModified date), and avoid the second request if our object is still valid. The server responds with either a normal response body, or status code 304 (Not Modified), or status code 412 (precondition failed).

+ +

Tuscany implements the logic to move these caching items to and from the HTTP request and response headers, and deliver them to the collection implementation. The items are delivered to a user implementation via a serializable object called CacheContext. This object contains the value of the ETag, the LastModified value, and any predicates. It is up to the implementer of a collection to provide the correct server logic to act on these predicates. The CacheContext class is found in found in the Tuscany module package org.apache.tuscany.sca.binding.http.

+ +

To implement conditional actions on your service, the developer or implementer implements any of the condional HTTP actions: conditionalPost, conditionalGet, conditionalPut, or conditionalDelete. Tuscany automatically routes a request with proper request header fields (ETag, LastModified, and predicates) to the proper collection method.

+ +

For example, the TestBindingCacheImpl class in package org.apache.tuscany.sca.binding.http implements a server collection which pays attention to conditional methods. Notice that this collection implements conditionalGet, conditionalPut, conditionalPost, and conditionalDelete methods as well as get, put, post, delete. The server collection can look at the CacheContext obect to determine whether an item or a status code should be returned. In this example code, the conditionalGet checked the If-Modified predicate and determines whether the item is not modified and if so, throws a NotModifiedException.

+
+
+	public InputStream conditionalGet(String id, HTTPCacheContext cacheContext)
+			throws NotModifiedException, PreconditionFailedException {
+
+		if (cacheContext != null) {
+			if (cacheContext.ifModifiedSince) {
+				if ((id.equals("1"))
+						&& (0 > cacheContext.lastModifiedDate
+								.compareTo(new Date())))
+					throw new NotModifiedException("item 1 was modified on "
+							+ new Date());
+			}
+                ...
+        ...
+
+
+ +

For a full example of all conditional methods and many combinations of predicates, one can look to the module http-binding unit tests to understand how these conditional request work. The HTTPBindingCacheTestCase contains 36 tests of all 4 HTTP conditonal methods. Various predicates are tested with various ETags and LastModified fields. The fields are tested in both the positive and negative cases.

+ +

Here is a complete list of the tests:

+
    +
  • testGet() - tests normal GET method of collection, expects item
  • +
  • testConditionalGetIfModifiedNegative() - tests not modified GET, expects item
  • +
  • testConditionalGetIfModifiedPositive() - tests modified GET, expect code 304
  • +
  • testConditionalGetIfUnmodifiedNegative() - tests unmodifed GET, expects item
  • +
  • testConditionalGetIfUnmodifiedPositive() - tests modified GET, expects code 412
  • +
  • testConditionalGetIfMatchNegative() - tests matching GET, expects code 412
  • +
  • testConditionalGetIfMatchPositive() - tests matching GET, expects item
  • +
  • testConditionalGetIfNoneMatchNegative - tests unmatching GET, expects item
  • +
  • testConditionalGetIfNoneMatchPositive() - tests unmatching GET, expects code 412
  • +
+ + +

Similarly, there are 9 tests each for DELETE, POST, and PUT, making a total of 36 test cases.

+ +

Differences Between HTTP Binding Caching and Atom Binding Caching in Tuscany

+ +

A similar sort of conditional posting is implemented in the Atom Binding. The difference is that the HTTP binding requires an implementer to provide conditional methods. The Atom binding caching uses the Abdera Atom model objects to automatically derive an ETag and a LastModified tags. In the Atom model, the Entry or Feed ID is used to make an item ETag field. The Atom Entry or Feed updated field is used to make an item LastModified field.

+ +

Use the HTTP binding caching when you are not using Atom Entries and Feeds as your business objects. However, the more flexible HTTP binding caching requires you to implement special conditional methods. Use the Atom binding when you can model your business data in terms of Atom Entries and Feeds. The more constrictive Atom binding caching will derive caching tags from your data model fields.

+ +

Security Policy support in HTTP and Web 2.0 Bindings

+ +
work in progress
+ +

Scenarios

+ +
    +
  • A Web 2.0 application requires that a user get authenticated before it can access the application.
  • +
  • A Web 2.0 application requires that all communication between client/server be done using SSL.
  • +
  • A given service, exposed using a web 2.0 binding requires user authentication.
  • +
  • A given operation, exposed using a web 2.0 binding requires user authentication.
  • +
+ + +

Policy Interceptor

+ +

The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.
+The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.

+ + +

+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png new file mode 100644 index 0000000000..05e62f3b8c Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg new file mode 100644 index 0000000000..75743c1552 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png new file mode 100644 index 0000000000..7db2eb03f5 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg new file mode 100644 index 0000000000..f2674bcddd Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png new file mode 100644 index 0000000000..5dc161000d Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg new file mode 100644 index 0000000000..8850a896f6 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png new file mode 100644 index 0000000000..737772334e Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png.jpeg new file mode 100644 index 0000000000..c704d7bd74 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.html new file mode 100644 index 0000000000..9548360ebe --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.html @@ -0,0 +1,753 @@ + + + + + + + + + + + + + + + SCA Java binding.jms : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.jms + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.jms + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

<binding.jms>

+ +

The Tuscany Java SCA runtime supports the Java Messaging Service using the <binding.jms> SCDL extension. New JMS based service endpoints can be provided using a <binding.jms> element within a SCA <service>, existing JMS queues can be accessed using a <binding.jms> element within a SCA <reference>.

+ +

The JMS binding is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published specifications document.

+ +

Using the JMS binding

+ +

The simplest way to use the JMS binding is to use the URI syntax to configure the binding, for example:

+
+
<binding.jms uri="jms:RequestQueue"/>
+
+

This tells the binding to use a JMS destination named "RequestQueue", with all the other configuration options using default values.

+ +

By default Tuscany will use a JMS connection factory named 'ConnectionFactory', this can be changed by using a query parameter in the URI, for example, to use a connection factory named 'myCF' can be done as follows:

+
+
<binding.jms uri="jms:RequestQueue?connectionFactoryName=myCF"/>
+
+ +

When using a SCA reference for RPC style requests and no response destination is defined in the SCDL then a temporary replyTo queue will automatically be created and used.

+ +

When using the JMS binding with SCA services the syntax can be simplified even further by letting the destination name default to the service name. For example, the following SCDL snippet creates a JMS service listening on a JMS destination named "MyService":

+
+
+<service name="MyService">
+   <binding.jms />
+</service>
+
+
+ +

Validation in the JMS Binding

+ +

Tuscany performs two types of validation of the JMS Binding specified in a composite file.

+ +
    +
  1. All XML is validated according to the schema to be valid XML. Elements are validated to be of the correct number
    +and order. URIs are validated to be of the correct form. Required attributes and elements are checked.
  2. +
  3. The model data for the JMS binding is validated. These are semantic issues such as the connection factory should not contradict destination type, connection factory and activation specification are mutually exclusive, and response connection must
    +either be a name attribute or a response element.
  4. +
+ + +

Validation rules are taken from the binding schema and the OSOA and OASIS specs:

+ + + +

Invalid JMS bindings usually result in a JMSBindingException with error message and specific context of the error. See the JMSBindingProcessor for a complete list of validation rules.

+ +

Some Examples

+ +

HelloWorld

+ +

The helloworld-jms sample demonstrates basic RPC style operations over JMS. The sample has one component exposing a JMS service on a queue name 'HelloWorldService' and another component which invokes the service by sending JMS messages to that queue. A temporary destination is used for the response messages. The .composite file for this is shown below, see the helloworld sample README for full details.

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           targetNamespace="http://sample"
+           xmlns:sample="http://sample"
+           name="HelloWorld">
+
+    <component name="HelloWorldClient">
+        <implementation.java class="helloworld.HelloWorldClient"/>
+        <reference name="helloWorldRef">
+            <binding.jms uri="jms:HelloWorldService"/>
+        </reference>
+    </component>
+
+    <component name="HelloWorldServiceComponent">
+        <implementation.java class="helloworld.HelloWorldServiceImpl" />
+	<service name="HelloWorldService">
+            <binding.jms />
+        </service>
+    </component>
+
+</composite>
+
+
+ +

Operation Selection

+ +

Operation selection extensions allow you to choose how the JMS bindings determines which service operation to call based on the incoming MS message.

+ +
+ + + + + + + + + + + + + +
operatiion selector description
<opertionSelector.jmsdefault/> The default operations selector as described in the JMS Binding Specification 1.0; +
    +
  • If there is only one operation on the service interface then this operation is chosen.
  • +
  • Else If the property scaOperationName appears in the incoming JMS message then its value determines the service operation
  • +
  • Else the operation is assumed to be called onMessage
  • +
+
<opertionSelector.jmsUserProp propertyName="somePropertyName"/> The named property, in this case somePropertyName, on the incoming JMS message holds name of the service operation that will be called
+
+ + +

While you can specify the default operation selector there is no need to as in lieu of other operation selectors being specified this one it assumed to be in force. You can add new operation selectors by adding the appropriate model objects, processors and providers.

+ +

Following operation selection the actual operation that is called may be further affected by operationProperties configuration.

+ +

Wire Formats

+ +

Wire format extensions allow you to choose how message data is expected to appear inside the JMS message as it flows across the wire.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
wire format description
<wireFormat.jmsdefault sendFormat="text or bytes"/> The default wire format as described in the JMS Binding Specification 1.0; +
    +
  • If the service operation has a single parameter of type javax.jms.Message then the incoming JMS message is passed in as is
  • +
  • Else the incoming message is a text message containing XML (we have added the sendFormat attribute to control whether the message type is actially text or bytes) +
      +
    • If there is a single parameter in the service operation signature then the data in the JMS message is assumed to be a direct serialization of the data coming from/going to the service operation
    • +
    • Else there are multiple parameters in the servioce operation signature and the data in the JMS message is assumed to be a document literal wrapped serialization of the data coming from/going to the service operation
    • +
    +
  • +
+
<wireFormat.jmsBytes/> The data in the JMS message is the native bytes of the data coming from/going to the service operation. The service operation signature is expected to have a single byte[] parameter
<wireFormat.jmsBytesXML/> The data in the JMS message is an XML document literal wrapped representation of the parameters of the service operation presented as a series of bytes
<wireFormat.jmsText/> The data in the JMS message is the string representation of data coming from/going to the service operation. The service operation signature is expected to have a single String parameter
<wireFormat.jmsTextXML/> The data in the JMS message is an XML document literal wrapped representation of the parameters of the service operation presented as a String
<wireFormat.jmsObject/> The data in the JMS message is the Java object serialization of data coming from/going to the service operation
+
+ + +

While you can specify this wire format there is no need to as in lieu of other operation selectors being specified this one it assumed to be in force. You can add new wire formats by adding the appropriate model objects, processors and providers.

+ +

Using SCA callbacks with the JMS binding

+ +

The Tuscany JMS binding supports using SCA callbacks for creating asynchronous clients and services.

+ +

This is done by using a <callback> element in the SCDL for the service or reference as shown in the following example.
+See the callbacks-jms sample for a complete example of using callbacks

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           targetNamespace="http://sample"
+           name="CallbacksComposite">
+
+    <component name="ClientComponent">
+        <implementation.java class="callbacks.OrderServiceClient" />
+        <reference name="orderService" target="ServiceComponent/OrderService">
+            <binding.jms uri="jms:OrderService"/>
+            <callback>
+                <binding.jms />
+            </callback>
+        </reference>
+    </component>
+
+    <component name="ServiceComponent">
+        <implementation.java class="callbacks.OrderServiceImpl" />
+        <service name="OrderService">
+            <binding.jms />
+            <callback>
+                <binding.jms />
+            </callback>
+        </service>
+    </component>
+
+</composite>
+
+
+ +

When no destination is defined on the callback binding of a <reference> then a JMS temporary queue will be used.

+ +

Setting JMS headers and user properties

+ +

JMS headers and user properties can be set on JMS messages sent from Tuscany by using the <Headers> and <OperationProperties> elements of the JMS binding. The <Headers> element applies to all messages, the <OperationProperties> applies to individual operations and may override values set on the <Headers> element.

+ +

An example of using these is shown in the following snippet of SCDL:

+
+
+<binding.jms uri="jms:ServiceQueue">
+    <headers JMSType="someTypeValue" />
+    <operationProperties name="op2">
+        <headers JMSType="op2SpecificTypeValue" />
+    </operationProperties>
+</binding.jms>
+
+
+ +

A complete working example of using <Headers> and <OperationProperties> can be seen in the properties itest

+ +

Using JMS message selectors

+ +

Services using the JMS binding to receive messages may only want a subset of the messages arriving on a queue or topic. This can be done by using the <SubscriptionHeaders> element which enables defining a JMS message selector to filter the messages that will be received.

+ +

An example of using these is shown in the following snippet of SCDL:

+
+
+<binding.jms uri="jms:ServiceTopic" >
+    <SubscriptionHeaders JMSSelector="JMSType = 'type1'"/>
+</binding.jms>
+
+
+ +

A complete working example of using <SubscriptionHeaders> can be seen in the jms selectors itest .

+ +

Using a definitions.xml file and the requestConnection/responseConnection attributes

+ +

It can be useful to define the details of the JMS resources separately from the SCA composite, to support this the SCA definitions.xml file can be used to define 'model' <binding.jms> elements which can then be referred to from the binding within the composite.

+ +

For example, the following shows a definitions.xml file defining a JMS queue and connection factory which are then used by a JMS binding within a composite.

+ +

The definitions.xml file:

+
+
+<definitions xmlns="http://www.osoa.org/xmlns/sca/1.0"
+             xmlns:itest="http://jms"
+             targetNamespace="http://jms" >
+
+    <binding.jms name="itest:TestService" >
+        <destination name="MyServiceQueue" create="never"/>
+        <connectionFactory name="MyConnectionFactory"/>
+    </binding.jms>
+
+</definitions>
+
+
+ +

and a binding which uses the definitions.xml binding:

+
+
<binding.jms requestConnection="itest:TestService" />
+
+ +

A complete working example of using the requestConnection/responseConnection attributes can be seen in the jms definitions itest .

+ +

Configuring JMS resources

+ +

Tuscany locates all JMS resources from JNDI so the environment where Tuscany is running needs to have JNDI and JMS correctly configured in order to use the Tuscany JMS binding.

+ +

The following describes how to configure JMS in some common environments:

+ +

Tuscany J2SE standalone environment with ActiveMQ

+ +

The Tuscany standalone runtime can use an embedded Apache ActiveMQ message broker. To use ActiveMQ the application needs to include the JMS API and ActiveMQ jars in the classpath and include a jndi.properties file to configure the ActiveMQ resources in JNDI.

+ +

An example of this can be seen in the Tuscany JMS itest which uses the ActiveMQ 4.1.1 release and this jndi.properties file.

+ +

For more information on using ActiveMQ see the Apache ActiveMQ website and specifically this page for information about configuring JNDI resources.

+ +

Apache Tomcat

+ +

Tomcat does not include a JMS broker by default so you need to either embed one in each Tuscany application, install a broker into the tomcat installation, or use an external broker. Once that is done JNDI resources can be defined using the standard Tomcat facilities, see the Tomcat JNDI How-to.

+ +

The Tuscany samples that use JMS and Tomcat demonstrate how to embed a JMS broker within the application by including ActiveMQ and its dependencies within the sample WAR, and using the webapp META-INF/context.xml file to define the JMS resources in JNDI.

+ + +

JEE application servers such as Apache Geronimo, WebSphere etc

+ +

JEE Application servers such as Geronimo, WebSphere, WebLogic etc come with their own JMS broker that can be used by Tuscany. All the JMS resources used by a Tuscany application must be manually defined in the application server. Usually the application server has some sort of admin console where the resources can be defined using a web browser.

+ +

The Tuscany helloworld JMS sample README describes the specific details of how to do this for some common application servers.

+ +
ClassCastExceptions when using Tuscany applications in an Application Server
Tuscany applications, specifically the JMS samples, are built to work out of-the-box on Tomcat by including a JMS broker embedded within the application. This causes incompatibilities with some Application Servers because the Java class of JMS resources may use different class loaders in the server and the application. The solution is to delete any JMS API jar included in the application WAR, for example, the geronimo-jms_1.1_spec-1.1.jar.
+ +

Using JEE resource references

+ +

When running Tuscany in a JEE environment it can be useful to use JEE resource references to map local application resource names to global JNDI names. This can be done by using <resource-ref> elements in the application deployment descriptor. If a <resource-ref> exists for a JMS binding resource then Tuscany will use that instead of looking up the resource directly in the global JNDI.

+ +

For example, adding the following definitions to the helloworld JMS sample web.xml will enable mapping the 'ConnectionFactory' and 'HelloWorldService' names used by the JMS binding into names for the actual resources used on the Application Server. This will normally occur when the application is dployed with the deploy tool asking what real resource names the resourecs should be mapped to.

+
+
+<resource-ref>
+    <res-ref-name>ConnectionFactory</res-ref-name>
+    <res-type>javax.jms.ConnectionFactory</res-type>
+    <res-auth>Container</res-auth>
+    <res-sharing-scope>Shareable</res-sharing-scope>
+</resource-ref>
+
+<resource-ref>
+    <res-ref-name>HelloWorldService</res-ref-name>
+    <res-type>javax.jms.Queue</res-type>
+    <res-auth>Container</res-auth>
+    <res-sharing-scope>Shareable</res-sharing-scope>
+</resource-ref>
+
+
+ + +

Using an external JMS broker

+ +

When the Tuscany environment does not include a JMS broker then an external broker may be used by specifying the initialContextFactory and jndiURL attributes on the binding.jms element. Any JMS 1.1 compatible broker should work such as Apache ActiveMQ or any other proprietary broker. The Tuscany application classpath will need to include jars for the initial context factory and all of its dependencies.

+ +

An example of using the Tuscany JMS binding with an external ActiveMQ broker is as follows:

+
+
+<binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory" jndiURL="tcp://localhost:61616">
+   <destination name="DestQueueA"/>
+</binding.jms>  
+
+
+ +

Using the WebSphere client for JMS

+ +

The Tuscany JMS binding now (post Tuscany SCA 1.2) works the WebSphere client for JMS which enables Tuscany applications running outside of WebSphere to use JMS resources defined within WebSphere. You need to include the JMS client jars in the Tuscany classpath and ensure that the JMS connection factory has the "endpoint providers" field configured in WebSphere. See this email thread for more information.

+ +

JMS Message types and message body format

+ +

The SCA JMS specification only defines how to use JMS TextMessages which contain XML in the message body, however it is a common requirement to use alternative message types and body formats. Currently Tuscany defines an additional "messageProcessor" attribute on the binding.jms element to support additional message types and payload formats. For the time being this should be considered an interim solution which will be changed in future Tuscany releases.

+ +

The messageProcessor attribute value may be "XMLTextMessage", "TextMessage", "ObjectMessage", or the name of a Java class that implements the org.apache.tuscany.sca.binding.jms.provider.JMSMessageProcessor interface. For example:

+ +
+
+<reference name="serviceA" promote="HelloWorldClient/serviceA">
+    <binding.jms messageProcessor="my.TestMessageProcessor" />
+</reference>
+
+
+ +

For a complete example of using the messageProcessor attribute see the MessageProcessorTestCase itest.

+ +

Using policy to control the JMS binding

+

The JMS binding is aware of the following policy implementations.

+ +
    +
  • org.apache.tuscany.sca.binding.jms.policy.header.JMSHeaderPolicy +
      +
    • Used to set various JMS message headers including JMSType, JMSCorrelationID, JMSDeliveryMode, JMSTimeToLive, JMSPriority and arbitrary user defined header properties
    • +
    +
  • +
  • org.apache.tuscany.sca.binding.jms.policy.authentication.token.JMSTokenAuthenticationPolicy +
      +
    • Used to insert a user defined authentication property into the JMS header.
    • +
    +
  • +
+ + +

Intents and policy sets can be constructed to control the application of these policies. The following intents are defined by default

+
    +
  • pritority
  • +
  • deliveryMode
  • +
+ + +

New intents and policy sets can be designed are required to provide the level of control you need over your application.

+ +

Intent: priority

+

The priority intent provides a coarse grained approach to setting message priority. For example,

+ +
+
+ <reference name="serviceA" promote="HelloWorldClient/serviceA" requires="priotiry.meduim">
+    <binding.jms messageProcessor="my.TestMessageProcessor" />
+</reference>
+
+
+ +

The values "priority.high", "priority.medium", "priority.low" are supported. It is the responsibility of the user to define a policy set to support these intents. The following policy set could be used to support these priority values.

+ +
+
+    <policySet name="JMSPolicySet1"
+               provides="priority"
+               appliesTo="sca:binding.jms">
+        <intentMap provides="priority" default="medium">
+            <qualifier name="high">
+                <tuscany:jmsHeader JMSPriority="9"/>
+            </qualifier>
+            <qualifier name="medium">
+                <tuscany:jmsHeader JMSPriority="4"/>
+            </qualifier>
+            <qualifier name="low">
+                <tuscany:jmsHeader JMSPriority="0"/>
+            </qualifier>
+        </intentMap>
+    </policySet>
+
+
+ +

Intent: deliveryMode

+ +

The deliveryMode intent provides s simple way of specifying whether a message should be delivered persistently or non-persistently. For example,

+ +
+
+ <reference name="serviceA" promote="HelloWorldClient/serviceA" requires="deliveryMode.persistent">
+    <binding.jms messageProcessor="my.TestMessageProcessor" />
+</reference>
+
+
+ +

The values "deliveryMode.persistent" and "deliveryMode.nonPersistent" are supported. It is the responsibility of the user to define a policy set to support these intents. The following policy set could be used to support these delivery mode values.

+ +
+
+    <policySet name="JMSPolicySet2"
+               provides="deliveryMode"
+               appliesTo="sca:binding.jms">
+        <intentMap provides="deliveryMode" default="nonPersistent">
+            <qualifier name="persistent">
+                <tuscany:jmsHeader JMSDeliveryMode="PERSISTENT"/>
+            </qualifier>
+            <qualifier name="nonPersistent">
+                <tuscany:jmsHeader JMSDeliveryMode="NON_PERSISTENT"/>
+            </qualifier>
+        </intentMap>
+    </policySet>    
+
+
+ +

Other header values

+ +

TBD

+ + +

JMS binding schema

+ +

The complete JMS binding SCDL schema has the following format:

+ +
+
+<binding.jms correlationScheme="string"?
+             initialContextFactory="xs:anyURI"?
+             jndiURL="xs:anyURI"?
+             requestConnection="QName"?
+             responseConnection="QName"?
+             operationProperties="QName"?
+             ... >
+
+   <destination name="xs:anyURI" type="string"? create="string"?>
+      <property name="NMTOKEN" type="NMTOKEN">*
+   </destination>?
+
+   <connectionFactory name="xs:anyURI" create="string"?>
+      <property name="NMTOKEN" type="NMTOKEN">*
+   </connectionFactory>?
+
+   <activationSpec name="xs:anyURI" create="string"?>
+      <property name="NMTOKEN" type="NMTOKEN">*
+   </activationSpec>?
+
+   <response>
+      <destination name="xs:anyURI" type="string"? create="string"?>
+         <property name="NMTOKEN" type="NMTOKEN">*
+      </destination>?
+      <connectionFactory name="xs:anyURI" create="string"?>
+         <property name="NMTOKEN" type="NMTOKEN">*
+      </connectionFactory>?
+      <activationSpec name="xs:anyURI" create="string"?>
+         <property name="NMTOKEN" type="NMTOKEN">*
+      </activationSpec>?
+   </response>?
+
+   <complexType name="SubscriptionHeaders"> 
+      <attribute name="JMSSelector" type="string"/> 
+   </complexType>
+
+   <resourceAdapter name="NMTOKEN">?
+      <property name="NMTOKEN" type="NMTOKEN">*
+   </resourceAdapter>?
+
+   <headers JMSType="string"?
+            JMSCorrelationId="string"?
+            JMSDeliveryMode="string"?
+            JMSTimeToLive="int"?
+            JMSPriority="string"?>
+      <property name="NMTOKEN" type="NMTOKEN">*
+   </headers>?
+
+   <operationProperties name="string" nativeOperation="string"?>
+      <headers JMSType="string"?
+               JMSCorrelationId="string"?
+               JMSDeliveryMode="string"?
+               JMSTimeToLive="int"?
+               JMSPriority="string"?>
+         <property name="NMTOKEN" type="NMTOKEN">*
+      </headers>?
+   </operationProperties>*
+
+   <opertionSelector.jmsdefault/>? | <opertionSelector.jmsUserProp propertyName="somePropertyName"/>?
+   <wireFormat.jmsdefault sendFormat+"text|bytes"/>? | <wireFormat.jmsBytes/>? | <wireFormat.jmsBytesXML/>? | <wireFormat.jmsText/>? | <wireFormat.jmsTextXML/>? | <wireFormat.jmsObject/>?
+
+</binding.jms>
+
+
+ +

See the JMS Binding Specification 1.0 for full details of each of these configuration options.

+ +

Not all these elements are supported by Tuscany. Specifically, the <activationSpec> and <resourceAdapter> elements are not supported as Tuscany does not use JCA or MDBs for its JMS support.

+ +

The create attribute on the destination element is not supported in most environments and all JMS resources (connection factories, queues and topics) need to be pre-configured. An exception to this is when using Apache ActiveMQ as the JMS broker then Tuscany may be able to dynamically create queue and topic resources. This is mainly only useful for unit testing and it is recommended that user applications are designed with the expectation that JMS resources need to be preconfigured.

+ +

the "operationSelector" and "wireFormat" elements are declared in the tuscany namespace (http://tuscany.apache.org/xmlns/sca/1.0). The default operation selection and wire format behvaviour is defined in the JMS Binding Specification 1.0 but we have added a selection of other formats and selectors as alternatives.

+ +

Implementation Notes

+ +

The JMS binding is the first binding where we have started to exploit the binding wire concept. This affects how the JMS binding is implemented.

+ +

The addition of a binding wire to the infrastructure allows interceptors to be added that operate on message data in the context of the binding. This allows wire formats to be specified. This is important for bindings like JMS where the data format on the wire does not necessarily follow a well known specification. The default wire format in the Tuscany JMS binding is as described in the SCA JMS specification, i.e. a JMS text message containing XML. However JMS messages using any arbitrary format can be supported by constructing new wire format extensions.

+ +

The following diagram shows an overview of how a reference JMS binding may be configured to talk to a service JMS binding using the Text XML wire format.

+ +

+ +

In the above diagram,
+1) databinding interceptor normalizes the data into an intermediate format that the binding can understand
+2) wire format interceptor, that is called WireFormat.jmsTextXML, marshals the normalized data into the protocol-specific message, JMSMessage for binding.jms

+ +

An example of a composite file which results in this kind of configuration is as follows:

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	targetNamespace="http://helloworld"
+	xmlns:hw="http://helloworld"
+    name="helloworld">
+
+    <component name="HelloWorldReferenceComponent">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.format.jmstextxml.helloworld.HelloWorldReferenceImpl" />
+        <reference name="helloWorldService1" >
+            <binding.jms>
+                <destination name="HelloWorldService1"/>
+                <wireFormat.jmsTextXML/>
+            </binding.jms>
+        </reference>      
+    </component>
+    
+    <component name="HelloWorldServiceComponent1">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.format.jmstextxml.helloworld.HelloWorldServiceImpl" />
+        <service name="HelloWorldService">
+            <binding.jms>
+                <destination name="HelloWorldService1"/>
+            </binding.jms>
+        </service>
+    </component>     
+</composite>
+
+
+ +

Note that <wireFormat.jmsTextXML/> is explicitly specified on the reference binding. As this is the default wire format it can be omitted as is the case on the service binding.

+ +

Of course Tuscany already has a databinding framework that is able to transform between datatypes generically. So think of the wire format functionality as performing binding specific transformations.

+ +

The following diagram gives an overview of the difference between the databinding and wireformat transformations on the reference side:

+ +

+ +

The following diagram gives an overview of the difference between the databinding and wireformat transformations on the service side:

+ +

+ +

When looking at the code itself you will see the following structure:

+ +
+
+binding-jms
+  The jms binding model
+
+binding-jms-runtime
+  /org/apache/tuscany/sca/binding/jms/provider
+     The base JMS binding runtime implementation. Exploits the Tuscany provider pattern. 
+
+  /org/apache/tuscany/sca/binding/jms/context
+     A structure that passes the binding context with the message and allows the wire format and operation selection interceptors to do binding specific things
+  /org/apache/tuscany/sca/binding/jms/transport
+     JMS transport processing implmented as an interceptor
+  /org/apache/tuscany/sca/binding/jms/headers
+     JMS header processing implmented as an interceptor
+  /org/apache/tuscany/sca/binding/jms/wireformat
+     JMS wire format interceptors
+  /org/apache/tuscany/sca/binding/jms/operationselector
+     JMS operation selector interceptors
+      
+binding-jms-policy
+  Some base JMS policy implementations
+
+
+ +

The providers can be replaced in order to change the way that the JMS binding is constructed.

+ +


+

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjsonrpc.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingjsonrpc.html new file mode 100644 index 0000000000..8362ee137f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjsonrpc.html @@ -0,0 +1,329 @@ + + + + + + + + + + + + + + + SCA Java binding.jsonrpc : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.jsonrpc + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.jsonrpc + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

<binding.jsonrpc>

+ +

Tuscany supports JSON-RPC as a protcol for use with SCA services by using the <binding.jsonrpc> element in your Application composite. This enables remote web browser clients to easily make RPC style calls to server-side SCA components.

+ +

User Stories

+
    +
  • A client application invoke a remote SCA Service using JSON-RPC and the invocation return business objects in JSON format. +
      +
    • e.g. Retrieve catalog items
    • +
    +
  • +
  • A SCA component can define a reference to a remote SCA Service and use JSON-RPC for the invocation. +
      +
    • e.g. A catalog aggregator invoke various catalog services using JSON-RPC and aggregate the returned items into a single response
    • +
    +
  • +
  • A client application invoke a SCA Service using JSON-RPC and the invocation returns a business exception. +
      +
    • e.g. Empty catalog throws a Busines Exception. Business Exception should properly propagate and display nicely to client.
    • +
    +
  • +
  • A client application invoke a SCA Service using JSON-RPC and the invocation returns a runtime exception. +
      +
    • e.g. Try to retrieve catalog items from a catalog service that is un-available. Runtime exception properly propagate and display nicely to client.
    • +
    +
  • +
  • A client application needs to access a service exposed trough JSON-RPC binding that requires authentication. +
      +
    • e.g. make sure if nobody can get to the catalog if it's not authenticated
    • +
    +
  • +
+ + + +

Using the Tuscany JSON-RPC binding

+ +

You could use this binding without any configuration, or by providing a specific service URI.
+To include it on a SCA service or Reference, choose one of the examples below :

+ +
+
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903"
+           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+           ...
+
+	   <tuscany:binding.jsonrpc/>
+
+
+ +
+
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903"
+           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+           ...
+
+   <binding.jsonrpc uri="http://localhost:8080/store/catalog"/>
+
+
+ +

Consuming JSON-RPC services on the client application

+ +

Any JSON-RPC client may be used to access SCA services which use <binding.jsonrpc>, below we are going to describe different ways you could consume the Tuscany JSON-RPC services in your client application.

+ +

Utilizing Tuscany Implementation.widget

+ +

When your web client application is defined as an SCA component utilizing Tuscany Widgets, a JavaScript is generated which may be included within an HTML document to properly inject services references to SCA references defined on the same HTML document.

+ +

This script is used by simply including the following tag within the HTML page :

+ +
+
+<script type="text/javascript" src="html-page-name.js" />
+
+
+ +

This initializes the proxys for the SCA services which can then be injected into SCA references to make requests to the server-side components. For example, if there was a service named "myService" which had operations "aOnewayRequest" and "anRpcRequest" the scripts in the HTML page could now invoke these operations with the following:

+ +
+
+//@Reference
+var myService = new Reference("myService");
+myService.aOnewayRequest(args);
+
+
+

or

+
+
+//@Reference
+var myService = new JSONRpcClient("myService");
+myService.anRpcRequest(args, responseFunction);
+
+
+ +

Also see Tuscany Widgets for more details.

+ +

Utilizing a JavaScript Client Proxy

+ +

To simplify the task for web browsers developers Tuscany provides a 'binding-jsonrpc.js" JavaScript client proxy code that can be included in your application.

+ +

After copying the script to your application, it can be used bu simply including the following tag within the HTML page :

+ +
+
+<script type="text/javascript" src="binding-jsonrpc.js" />
+
+
+ +

This initializes the proxys for the SCA services which can then be used make requests to the server-side components. Based on the scenario described above, below are the to invoke these operations.

+ +
+
+var myService = new JSONRpcClient("Catalog").service;
+myService.aOnewayRequest(args);
+
+
+

or

+
+
+var myService = new JSONRpcClient("Catalog").service;
+myService.anRpcRequest(args, responseFunction);
+
+
+ +

Handling JSON-RPC Response with callbacks

+ +

In that example 'responseFunction' is the name of a function which is called to process the response and which gets called asynchronously on another thread when the response is avaialble. RPC requests are done this way instead of the simpler "answer = myService.anRpcRequest(args)" to avoid hanging the browser while the (potentially slow) request is being processed. An example of the responseFunction for the previous example is:

+
+
+function responseFunction(answer){
+  // do something with answer
+}
+
+
+ +

Handling errors

+ +
+
+//initialization code
+try{
+   myService.anRpcRequest(args, responseFunction);
+} catch(e) {
+   //handle error
+   alert(e);
+}
+
+function responseFunction(answer, exception){
+   //handle exception information
+   if(exception){
+      alert(exception.message);
+      return;
+   }
+  // do something with answer
+}
+
+
+
+ +

Using SCA JSON-RPC services with Dojo

+ +

Apache Tuscany JSON-RPC services provide built-in support for Dojo RPC. The Dojo toolkit is a popular framework for writing Ajax/Web 2.0 style browser client applications. Tuscany SCA services which use <binding.jsonrpc> will by default support the Simple Method Description (SMD) protocol. SMD is similar to ?wsdl for Web services, entering a service endpoint appended with ?smd will return a SMD descriptor for the service.

+ +

Using Tuscany SCA services with Dojo can therefore be as simple as the following:

+
+
+  var myService = new dojo.rpc.JsonService("myService?smd");
+
+
+ +

Supported data types

+ +

The JSON-RPC binding utilize the Databinding Framework to provide support for the following data transformations :

+ +
    +
  • Primitive Type <==> JSON <==> Primitive Type
  • +
  • Array of Primitive Type <==> JSON <==> Array of Primitive Type
  • +
  • Java bean <==> JSON <==> Java bean
  • +
  • List <==> JSON <==> List
  • +
  • Map <==> JSON <==> Map
  • +
  • Set <==> JSON <==> Set
  • +
+ + +

Some examples:

+ +

There are two samples showing using <binding.jsonrpc>, one which uses the Dojo Toolkit on the client, and another which uses the Tuscany scaDomain.js script. The samples are helloworld-dojo and helloworld-jsonrpc.

+ + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingrest.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingrest.html new file mode 100644 index 0000000000..5c7fa11f94 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingrest.html @@ -0,0 +1,515 @@ + + + + + + + + + + + + + + + SCA Java binding.rest : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.rest + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.rest + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

<binding.rest> Introduction

+ +

The Tuscany Java SCA runtime supports Representational State Transfer (REST) services invocations via the <binding.rest> extension. Tuscany REST binding leverage JAX-RS Standards based annotations to map business operations to HTTP operations such as POST, GET, PUT and DELETE and utilizes Tuscany Databindings to provide support for different wire formats such as JSON, XML, Binary, etc shielding the application developer from contaminating his business logic with code to handle payload production/transformation details.

+ +

Using the Tuscany REST binding

+ +

The primary use of the REST binding is to provide business services over HTTP in a distributed fashion. The simplest way to use the REST binding is to declare a business service that can be shared over the web and provide an HTTP address where one can access the service. This service is declared in an SCA composite file.

+ +
+
	
+    <component name="Catalog">
+	<implementation.java class="services.store.FruitsCatalogImpl"/> 
+        <service name="Catalog">
+	    <tuscany:binding.rest uri="http://localhost:8085/Catalog">
+    	        <tuscany:wireFormat.json />
+	        <tuscany:operationSelector.jaxrs />
+    	    </tuscany:binding.rest>
+   	</service>
+    </component>
+
+
+ + +

Another way of implementing a REST service is to use a collection interface that matches the actions of the HTTP protocol. In this case, the methods must be named post, get, put, and delete. Tuscany ensures that the proper method is invoked via the request and response protocol of HTTP:

+
+
+public class TestGetImpl {
+    
+    public InputStream get(String id) {
+        return new ByteArrayInputStream(("<html><body><p>This is the service GET method, item=" + id + "</body></html>").getBytes());
+
+    }
+}
+
+
+ +

So using the common verbs of HTTP and Java object serialization, one can implement services and run them anywhere the HTTP protocol is implemented. The service developer or implementer simply creates methods for post, get, put, and delete, and a business collection such as a shopping cart, telephone directory, insurance form, or blog sites can be created. See the Tuscany module binding-rest-runtime for complete examples.

+ + +

Mapping business interfaces to HTTP Operations using JAX-RS Standard Annotations

+ +

JAX-RS offers standards based annotations that allow properly configuration of the REST service endpoint and mappings of specific HTTP operations (e.g. get, put, post, delete) to java operations. The following subset of JAX-RS annotations are currently supported :

+ +

URI Mappings

+ +
+
+@Path
+@Path("{id}")
+@PathParam("id")
+
+
+ +

Operation Mappings

+ +
+
+@GET
+@PUT
+@POST
+@DELETE
+
+
+ +

Enabling JAX-RS annotation processing

+ +

In order to enable JAX-RS annotation processing, a component need to be configured to use JAX-RS Operation Selector.

+ +
+
+        <component name="Catalog">
+		<implementation.java class="services.store.FruitsCatalogImpl"/> 
+		<property name="currencyCode">USD</property>
+		<service name="Catalog">
+			<tuscany:binding.rest uri="http://localhost:8085/Catalog">
+    		            <tuscany:wireFormat.json />
+			    <tuscany:operationSelector.jaxrs />
+    		        </tuscany:binding.rest>
+   		</service>
+		<reference name="currencyConverter" target="CurrencyConverter"/>	
+	</component> 
+
+
+ +
Integration with a existent JAX-RS engine might help on processing the full set of JAX-RS annotations. I have started looking into leveraging Wink resourceProcessor or related code to help on this layer.
+ +

Mapping RPC style calls over HTTP GET

+ +

In some cases, there isn't a simple mapping of a business operation as resources, but there is still a desire to take advantage of HTTP caching and other benefits that HTTP GET type of operations provide. In order to accomplish this, binding.rest has built in functionality that allows you to map RPC style calls to HTTP GET operations.

+ + + +

Client Invocation

+ +

The URL schema follows a simple pattern :

+ +
    +
  • <base service URI> ?method=<operation name>&parm1=<value>&parm2=<value>
  • +
+ + +
+
+http://localhost:8085/EchoService?method=echo&msg=Hello RPC
+
+
+ +
+
+http://localhost:8085/EchoService?method=echoArrayString&msgArray=Hello RPC1&msgArray=Hello RPC2"
+
+
+ +

Mapping QueryStrings to Business Operation parameters

+ +

Standard JAX-RS annotation @QueryParam is used to map parameters sent over HTTP GET invocations using query string to business operation parameter

+ +
+
+@Remotable
+public interface Echo {
+
+    String echo(@QueryParam("msg") String msg);
+
+    int echoInt(int param);
+
+    boolean echoBoolean(boolean param);
+
+    String [] echoArrayString(@QueryParam("msgArray") String[] stringArray);
+
+    int [] echoArrayInt(int[] intArray);
+
+}
+
+
+ +

Enabling RPC to HTTP GET mapping

+ +

In order to enable automatically mapping, a component need to be configured to use RPC Operation Selector.

+ +
+
+        <component name="Catalog">
+		<implementation.java class="services.store.FruitsCatalogImpl"/> 
+		<property name="currencyCode">USD</property>
+		<service name="Catalog">
+			<tuscany:binding.rest uri="http://localhost:8085/Catalog">
+    		            <tuscany:wireFormat.json />
+                            <tuscany:response>
+                                <tuscany:operationSelector.rpc />
+                            </tuscany:response>
+    		        </tuscany:binding.rest>
+   		</service>
+		<reference name="currencyConverter" target="CurrencyConverter"/>	
+	</component> 
+
+
+ +

Wire Formats

+ +

This binding will support two styles of wire formats and will be used to control what type of payload will be generated by the service:

+ +
    +
  • hardWired : where you hard code the wire format expectations in the composite when configuring the binding. In the example below, service will be using JSON payload.
  • +
+ + +
+
+<binding...>
+   <wireFormat.json>
+</binding...>
+
+
+ +
    +
  • dynamic : based on Content-Type header for request and Accept header for response. In the case below, the request content will be parsed based on the Content-Type request header and the response payload will be based on the request Accept header.
  • +
+ + +
+
+<binding...>
+   <wireFormat.dynamic>
+</binding...>
+
+
+ +
In progress
+ +

Cache control using ETags, Last-Modified and other HTTP Headers

+ +

The HTTP specification provides a set of methods for HTTP clients and servers to interact. These methods form the foundation of the World Wide Web. Tuscany implements many of these methods a binding interface to a collection. The main methods are:

+ +
    +
  • GET - retrieves an item from a collection
  • +
  • POST - creates or adds an item to a collection
  • +
  • PUT - updates or replaces an item in a collection
  • +
  • DELETE - removes an item in a a collection
  • +
+ + +

The HTTP specification (HTTP 1.1 Chapter 13 - Caching) also provides a mechanism by which these methods may be executed conditionally. To perform conditional methods, an HTTP client puts 3 items in the HTTP request header:

+ +
    +
  • ETag - entity tag, a unique identifier to an item in a collection. Normally created and returned by the server when creating (POST) a new item.
  • +
  • LastModified - an updated field. Normally a string containing a date and time of the last modification of the item.
  • +
  • Predicate - a logical test (e.g. IfModified, IfUnmodified) to use with the ETag and LastModified to determine whether to act.
  • +
+ + +

The complete list of predicates is given in the HTTP specification.

+ +

The most common use of conditional methods is to prevent two requests to the server instead of one conditional request. For example, a common scenario is to check if an item has been modified, if not changed update it with a new version, if changed do not update it. With a conditional PUT method (using the IfUnmodifed predicate and a LastModified date), this can be done in one action. Another common use is to prevent multiple GETs of an item to ensure we have a valid copy. Rather than doing a second request of a large item, one can do a conditional GET request (using an IfModified predicate and a LastModified date), and avoid the second request if our object is still valid. The server responds with either a normal response body, or status code 304 (Not Modified), or status code 412 (precondition failed).

+ +

Default cache control is done by using generated ETags based on response content checksum. To avoid data to be overwriten during concurrent updates, include an HTTP If-Match header that contains the original content ETag value. If you want to force an update regardless of whether someone else has updated it since you retrieved it, then use If-Match: * and don't include the ETag.

+ +

Declarative cache control

+

In order to allow for better flexibility, and re-usability of the components exposed as REST services, there is an option to declare cache controls when configuring the REST Binding as show the example below :

+ +
+
+	<component name="CustomerService">
+		<implementation.java class="services.customer.CustomerServiceImpl"/> 
+		<service name="CustomerService">
+			<tuscany:binding.rest uri="http://localhost:8085/Customer">
+    		    <tuscany:wireFormat.xml />
+			    <tuscany:operationSelector.jaxrs />
+			    <tuscany:http-headers>
+			       <tuscany:header name="Cache-Control" value="no-cache"/>
+			       <tuscany:header name="Expires" value="-1"/>
+			       <tuscany:header name="X-Tuscany" value="tuscany"/> 
+			    </tuscany:http-headers>
+    		</tuscany:binding.rest>
+   		</service>
+	</component>
+
+
+ +
This could be enhanced to enable more complex injection of fields to cache control headers.
+ + + +

Store scenarios goes REST - Catalog Services using binding.rest

+ +

Below is our Store Catalog exposed as REST services utilizing the new binding.rest.

+ +

Let's start by looking on how the component gets defined and configured in the composite file, particularly the following details :

+ +
    +
  • binding.rest uri defines the Catalog service endpoint
  • +
  • wireFormat.json configure the service to use JSON as the payload
  • +
  • operationSelector.jaxrs configure the binding to use JAX-RS annotations to map the HTTP operations to business operations
  • +
+ + +
+
+<composite	xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+		xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+		targetNamespace="http://store"
+		name="store">
+		
+	<component name="Catalog">
+		<implementation.java class="services.store.FruitsCatalogImpl"/> 
+		<property name="currencyCode">USD</property>
+		<service name="Catalog">
+			<tuscany:binding.rest uri="http://localhost:8085/Catalog">
+    		            <tuscany:wireFormat.json />
+			    <tuscany:operationSelector.jaxrs />
+    		        </tuscany:binding.rest>
+   		</service>
+		<reference name="currencyConverter" target="CurrencyConverter"/>	
+	</component> 
+    
+	<component name="CurrencyConverter">
+		<implementation.java class="services.store.CurrencyConverterImpl"/>
+	</component>     
+
+</composite>
+
+
+ + +

Below is the Catalog Interface utilizing JAX-RS standard annotations to map HTTP operations to business operations.

+ +
+
+package services.store;
+
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+
+@Remotable
+public interface Catalog {
+    
+    @GET
+    Item[] getAll();
+    
+    @GET
+    @Path("{id}")
+    Item getItemById(@PathParam("id") String itemId);
+    
+    @POST
+    void addItem(Item item);
+    
+    @PUT
+    void updateItem(Item item);
+    
+    @DELETE
+    @Path("{id}")
+    void deleteItem(@PathParam("id") String itemId);
+}
+
+
+ +

Below is the Fuit catalog implementation

+ +
+
+@Scope("COMPOSITE")
+public class FruitsCatalogImpl implements Catalog {
+    
+    @Property
+    public String currencyCode = "USD";
+    
+    @Reference
+    public CurrencyConverter currencyConverter;
+    
+    private Map<String, Item> catalog = new HashMap<String, Item>();
+
+    @Init
+    public void init() {
+        String currencySymbol = currencyConverter.getCurrencySymbol(currencyCode);
+        catalog.put("Apple", new Item("Apple",  currencySymbol + currencyConverter.getConversion("USD", currencyCode, 2.99)));
+        catalog.put("Orange", new Item("Orange", currencySymbol + currencyConverter.getConversion("USD", currencyCode, 3.55)));
+        catalog.put("Pear", new Item("Pear", currencySymbol + currencyConverter.getConversion("USD", currencyCode, 1.55)));
+    }
+
+    public Item[] getAll() {
+        Item[] catalogArray = new Item[catalog.size()];
+        catalog.values().toArray(catalogArray);
+        return catalogArray;
+    }
+    
+    public Item getItemById(String itemId) {
+        return catalog.get(itemId);
+    }
+    
+    public void addItem(Item item) {
+        catalog.put(item.getName(),item);
+    }
+    
+    public void updateItem(Item item) {
+        if(catalog.get(item.getName()) != null) {
+            catalog.put(item.getName(), item);
+        }
+    }
+    
+    public void deleteItem(String itemId) {
+        if(catalog.get(itemId) != null) {
+            catalog.remove(itemId);
+        }        
+    }
+}
+
+
+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingrmi.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingrmi.html new file mode 100644 index 0000000000..db3ef6e3c6 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingrmi.html @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + SCA Java binding.rmi : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.rmi + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.rmi + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +

<binding.rmi>

+ +

Tuscany supports Remote Method Invocation (RMI) as a protocol for use with SCA services and references by using the <binding.rmi> SCDL extension.

+ +

The RMI binding enables SCA components to use or be used by any other application which uses the standard Java RMI protocol. One use of this is to easily integrate the Tuscany runtime with existing Java applications which use RMI.

+ +

This RMI binding SCDL has the following format:

+ +
+
+   <binding.rmi host="" port="" serviceName=""/>
+
+
+ + + + +

Some examples:

+ +

This example composite shows how to make an SCA component available as an RMI service:

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:rmi="http://tuscany.apache.org/xmlns/binding/rmi/1.0-SNAPSHOT"
+           name="HelloWorldRmiComposite">
+
+   <service name="HelloWorldRmiService" promote="HelloWorldServiceComponent">
+      <interface.java interface="helloworld.HelloWorldService"/>
+      <binding.rmi host="localhost" port="8099" serviceName="HelloWorldRemoteService"   />
+      <reference target="HelloWorldServiceComponent">HelloWorldServiceComponent</reference>
+   </service>
+      
+   <component name="HelloWorldServiceComponent">
+      <implementation.java class="helloworld.HelloWorldImpl"/>
+   </component>   
+  
+</composite>
+
+
+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingws.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingws.html new file mode 100644 index 0000000000..6f3d5a9946 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingws.html @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + SCA Java binding.ws : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.ws + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java binding.ws + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +

<binding.ws>

+ +

The Tuscany Java SCA runtime supports Web services by using the <binding.ws> SCDL extension. New Web service endpoints can be provided by using <binding.ws> within a SCA <service>, existing Web services can be invoked by using <binding.ws> within a SCA <reference>.

+ +

The Web service binding is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published specifications document.

+ +

The Web service binding SCDL has the following format:

+ +
+
+<binding.ws name="NCName"? uri="xs:anyURI"? wsdlElement="xs:anyURI"? wsdli:wsdlLocation="list of xs:anyURI"? >
+   <wsa:EndpointReference>...</wsa:EndpointReference>*
+</binding.ws>
+
+
+ +

simple use

+ +

All the attributes and elements of the Web service binding are optional, so the simplest way to use it is to use all the defaults:

+
+
<binding.ws/>
+
+ +

With that simplest form the endpoint which will be used is derived from the names of the component and binding. This works well for services but for references its likely not what you want, so with references the following is a more useful simplest form:

+
+
<binding.ws uri="http://someHost/someService"/>
+
+ +

wsdlElement

+ +

The wsdlElement attribute indicates that a WSDL document exists which should be used and it points to the element within that WSDL to use. The value of the wsdlElement attribute can have one of the following four forms:

+ +
    +
  1. Service:
    + <WSDL-namespace-URI>#wsdl.service(<service-name>)
    + In this case, all the endpoints in the WSDL Service that have equivalent PortTypes with the SCA service or reference must be available to the SCA service or reference.
  2. +
  3. Port (WSDL 1.1):
    + <WSDL-namespace-URI>#wsdl.port(<service-name>/<port-name>)
    + In this case, the identified port in the WSDL 1.1 Service must have an equivalent PortType with the SCA service or reference.
  4. +
  5. Endpoint (WSDL 2.0):
    + <WSDL-namespace-URI>#wsdl.endpoint(<service-name>/<endpoint-name>)
    + In this case, the identified endpoint in the WSDL 2.0 Service must have an equivalent PortType with the SCA service or reference.
  6. +
  7. Binding:
    + <WSDL-namespace-URI>#wsdl.binding(<binding-name>)
    + In this case, the identified WSDL binding must have an equivalent PortType with the SCA service or reference. In this case the endpoint address URI for the SCA service or reference must be provided via the URI attribute on the binding.
  8. +
+ + +
What will the endpoint be?
The actual Web service endpoint used depends on whether or not a WSDL port is being used, if the EndpointReference element or the uri attribute of the <binding.ws> has been specified, and the names of the component and binding. The actual alogrythim defined in the Web service binding specification is: + +
    +
  1. Either the URIs in the endpoint(s) of the referenced WSDL
    + or the URI specified by the wsa:Address element of the wsa:EndpointReference
  2. +
  3. The explicitly stated URI in the "uri" attribute of the binding.ws element, which may be relative,
  4. +
  5. The implicit URI as defined by the Assembly specification
  6. +
+ + +

The URI in the WSDL endpoint or in the wsa:Address of an EPR may be a relative URI, in which case it is relative to the URI defined in (2) or (3). The wsa:Address element can be the empty relative URI, in which case it uses the URI defined in (2) or (3) directly. This allows the EPR writer to specify reference parameters, metadata and other EPR contents while allowing the URI to be chosen by the deployer. To reference a WSDL document and also specify an EPR, the wsdlElement attribute must refer to a binding element in the WSDL and not an endpoint or service.

+ +

wsdlLocation

+ +

The wsdlLocation attribute enables defining the location of the WSDL document to be used. Using wsdlLocation is not normally necessary as the Tuscany contrabution service will have discovered all the WSDL documents within a deployed SCA contrabution.

+ +

wsa:EndpointReference

+ +

This attribute enables using a WS-Addressing EndpointReference that specifies the endpoint for the service or reference, or any WSA reference parameters, metadata and other EPR contents to be used.

+ +

Some examples:

+ +

This example shows making a HelloWorld component available as a Web service endpoint. All the Web service binding defaults are used so the endpoint of the Web service will be http://localhost:8080/HelloWorldComponent.

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           targetNamespace="http://helloworld"
+           xmlns:hw="http://helloworld"
+           name="helloworldws">
+
+    <service name="HelloWorldService" promote="HelloWorldComponent">
+       <interface.java interface="helloworld.HelloWorldService" />
+       <binding.ws />
+    </service>
+
+    <component name="HelloWorldComponent">
+        <implementation.java class="helloworld.HelloWorldImpl" />
+    </component>
+
+</composite>
+
+
+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-definitionsxml.html b/site/trunk/site-publish/documentation-2x/sca-java-definitionsxml.html new file mode 100644 index 0000000000..6474cfcd7f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-definitionsxml.html @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + SCA Java definitions.xml : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java definitions.xml + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java definitions.xml + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

definitions.xml

+ +

Section 1.8 describes the definitions.xml file as holding all of the artifacts that are useful for configuring an SCA domain but that are not specific to a particular composite or component. It goes on to say that "All of these artifacts within and SCA Domain are defined in a global, SCA Domain-wide file named definitions.xml". To achieve our extensibility goals we, in Tuscany, consider the SCA Domain wide definitions.xml file to be a logical concept that is constructed at runtime from the contents of definitions.xml files provided in contributions and in Tuscany extensions.

+ +

Each definitions.xml file may contain.

+ +
    +
  • Intents
  • +
  • Policy sets
  • +
  • Predefined binding specifications
  • +
  • Binding type descriptions
  • +
  • Implementation type descriptions
  • +
+ + +

Complete Features

+ +

Add Intents and Policy Sets with an Extension

+ +

An extension, such as the modules/policy-security extension relies on some policy sets and intents being available in the SCA Domain. The definitions.xml is the place to define these and hence if you look in this extension module you will find the following.

+ +
+
+<definitions xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ 			targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ 			xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ 			xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
+
+    <!-- POLICY SETS -->
+    <policySet name="runAs" appliesTo="sca:implementation.java"/>
+    <policySet name="allow" appliesTo="sca:implementation.java"/>
+    <policySet name="rolesAllowed" appliesTo="sca:implementation.java"/>
+    <policySet name="permitAll" appliesTo="sca:implementation.java"/>
+    <policySet name="denyAll" appliesTo="sca:implementation.java"/>
+    
+	<!-- Policy Intents Defined by the SCA Runtime -->
+	<intent name="authentication" 
+	 		constrains="sca:binding">
+		<description>
+			Specifying this intent on references requires necessary authentication information
+			to be sent along with outgoing messages. Specifying this intent on service requires
+			incoming messages to be authenticated
+		</description>
+	</intent>
+	
+	<intent name="confidentiality" 
+	 		constrains="sca:binding">
+		<description>
+			Specifying this intent requires message exchanged to be encrypted
+		</description>
+	</intent>
+	
+	<intent name="integrity" 
+	 		constrains="sca:binding">
+		<description>
+			Specifying this intent requires message exchanged to be signed
+		</description>
+	</intent>
+</definitions>
+
+
+ +

When this module is loaded at runtime the contents of this file are made generally available and hence in you composite you can use statements such at.

+ +
+
+
+<component name="CalculatorServiceComponent">
+    <implementation.java class="calculator.CalculatorServiceImpl"/>
+    <reference name="addService" >
+        <interface.java interface="calculator.AddService" />        
+        <binding.ws uri="http://localhost:8080/sample-calculator-ws-secure-webapp/AddServiceComponent"
+                    requires="authentication" />        
+    </reference>
+</component>
+
+
+ +

Where requires="authentication" refers to intent name="authentication" which is now available as an SCA Domain level definition.

+ +

TODO Features

+ +

Add Intents and Policy Sets with a Contribution

+ +

If contributionA provides a file such as:

+ +
+
+<sca:definitions xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ 			targetNamespace="http://tuscany.apache.org/xmlns/sca/1.0"
+ 			xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ 			xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
+
+<sca:intent name="specialAuthentication" 
+            constrains="sca:binding.ws">
+    <description>
+        Communitcation thro this binding required Authentication.
+    </description>
+</sca:intent>	
+ 
+</sca:definitions>
+
+
+ +

and ContributionB provides a file such as:

+ +
+
+<sca:policySet name="specialAuthenticationPolicy"
+ 	       provides="tuscany:wsAuthentication"
+ 	       appliesTo="//sca:binding.ws">
+    <tuscany:wsConfigParam>
+        <parameter name="OutflowSecurity">
+            <action>
+                <items>UsernameToken</items>
+                <user>TuscanyWsUser</user>
+                <passwordCallbackClass>my.PWCBHandler</passwordCallbackClass>"
+                <passwordType>PasswordText</passwordType>
+            </action>
+        </parameter>
+    </tuscany:wsConfigParam>
+</sca:policySet>
+
+
+ +

Then both the itent and the policySet should be available in the logical SCA Domain-wide definitions.xml and the policySet "specialAuthenticationPolicy" should successfully find the intent "tuscany:wsAuthentication". Composite files contributed to the domain will successfully be able to reference both the intent and the policy set.

+ +

See:

+ +

https://issues.apache.org/jira/browse/TUSCANY-2499
+http://www.mail-archive.com/dev%40tuscany.apache.org/msg01077.html

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/Contribution-ClassLoading.doc b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/Contribution-ClassLoading.doc new file mode 100644 index 0000000000..6787543f14 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/Contribution-ClassLoading.doc @@ -0,0 +1,508 @@ +{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1041{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;} +{\f11\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt ?l?r ??\'81\'66c};}{\f36\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}@MS Mincho;}{\f37\froman\fcharset238\fprq2 Times New Roman CE;} +{\f38\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f40\froman\fcharset161\fprq2 Times New Roman Greek;}{\f41\froman\fcharset162\fprq2 Times New Roman Tur;}{\f42\froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\f43\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f44\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f45\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f47\fswiss\fcharset238\fprq2 Arial CE;} +{\f48\fswiss\fcharset204\fprq2 Arial Cyr;}{\f50\fswiss\fcharset161\fprq2 Arial Greek;}{\f51\fswiss\fcharset162\fprq2 Arial Tur;}{\f52\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f53\fswiss\fcharset178\fprq2 Arial (Arabic);} +{\f54\fswiss\fcharset186\fprq2 Arial Baltic;}{\f55\fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f57\fmodern\fcharset238\fprq1 Courier New CE;}{\f58\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f60\fmodern\fcharset161\fprq1 Courier New Greek;} +{\f61\fmodern\fcharset162\fprq1 Courier New Tur;}{\f62\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f63\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f64\fmodern\fcharset186\fprq1 Courier New Baltic;} +{\f65\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f149\fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt ?l?r ??\'81\'66c};}{\f147\fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt ?l?r ??\'81\'66c};} +{\f148\fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt ?l?r ??\'81\'66c};}{\f150\fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt ?l?r ??\'81\'66c};}{\f151\fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt ?l?r ??\'81\'66c};} +{\f154\fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt ?l?r ??\'81\'66c};}{\f399\fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f397\fmodern\fcharset238\fprq1 @MS Mincho CE;}{\f398\fmodern\fcharset204\fprq1 @MS Mincho Cyr;} +{\f400\fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f401\fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f404\fmodern\fcharset186\fprq1 @MS Mincho Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; +\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128; +\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 \snext0 Normal;}{\*\cs10 \additive +\ssemihidden Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af11\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\*\cs15 \additive \ul\cf2 +\sbasedon10 \styrsid10050314 Hyperlink;}{\s16\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 +\sbasedon0 \snext16 \styrsid10161153 Normal (Web);}}{\*\listtable{\list\listtemplateid1580348194\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1261573102 +\'01\u-4051 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691 +\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689 +\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691 +\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689 +\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691 +\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid314066308}{\list\listtemplateid-523760100\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace360\levelindent0{\leveltext\leveltemplateid546055038\'01\u-3913 ?;}{\levelnumbers;}\f3\cf0\fbias0\hres0\chhres0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6120\jclisttab\tx6120\lin6120 }{\listname ;}\listid715159185}{\list\listtemplateid-1763118866{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fs20\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid731079578}{\list\listtemplateid1667669574\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace360\levelindent0{\leveltext\leveltemplateid546055038\'01\u-3913 ?;}{\levelnumbers;}\f3\cf0\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid891424629}{\list\listtemplateid-2081029930{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fs20\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid891693059}{\list\listtemplateid292338260{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'01o;}{\levelnumbers;}\f2\fs20\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1116608126}{\list\listtemplateid-1536026092\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0 +{\leveltext\leveltemplateid546055038\'01\u-3913 ?;}{\levelnumbers;}\f3\cf0\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0 +{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext +\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext +\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext +\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext +\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext +\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1181050274}{\list\listtemplateid1701054940{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-4051 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0 +{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880 +\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel +\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace360\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1313297007}{\list\listtemplateid1701054940\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace360\levelindent0{\leveltext\leveltemplateid1261573102\'01\u-4051 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1378965984}{\list\listtemplateid-2073944638{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fs20\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1460950139}{\list\listtemplateid-1418542954{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'01o;}{\levelnumbers;}\f2\fs20\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;} +\f10\fs20\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1871453387}}{\*\listoverridetable{\listoverride\listid891693059\listoverridecount0\ls1}{\listoverride\listid731079578\listoverridecount0\ls2} +{\listoverride\listid1116608126\listoverridecount0\ls3}{\listoverride\listid1871453387\listoverridecount0\ls4}{\listoverride\listid1460950139\listoverridecount0\ls5}{\listoverride\listid1378965984\listoverridecount0\ls6}{\listoverride\listid1313297007 +\listoverridecount0\ls7}{\listoverride\listid1181050274\listoverridecount0\ls8}{\listoverride\listid891424629\listoverridecount0\ls9}{\listoverride\listid715159185\listoverridecount0\ls10}{\listoverride\listid314066308\listoverridecount0\ls11}}{\*\pgptbl +{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid28757\rsid329786\rsid485903\rsid539137\rsid548600\rsid548764\rsid664037\rsid672375\rsid723666\rsid861443\rsid861593\rsid1127291\rsid1316508\rsid1455334\rsid1466653 +\rsid1575154\rsid1705583\rsid1932963\rsid2051197\rsid2174974\rsid2235070\rsid2296172\rsid2313813\rsid2439906\rsid2441954\rsid2501940\rsid2629112\rsid2635705\rsid2713663\rsid2758865\rsid2769575\rsid2780748\rsid2822041\rsid2843319\rsid2888904\rsid2960142 +\rsid3038408\rsid3107992\rsid3482368\rsid3826780\rsid3877851\rsid3891453\rsid4027380\rsid4073862\rsid4260013\rsid4344555\rsid4391115\rsid4462937\rsid4608592\rsid4618129\rsid4720541\rsid4731966\rsid4734635\rsid4738754\rsid4999167\rsid5056151\rsid5243868 +\rsid5314898\rsid5389511\rsid5452951\rsid5468238\rsid5580748\rsid5703112\rsid5724989\rsid5794882\rsid5854839\rsid5917115\rsid5927568\rsid5971993\rsid6121198\rsid6189819\rsid6357399\rsid6448318\rsid6517470\rsid6585698\rsid6643333\rsid6911675\rsid6973915 +\rsid7020819\rsid7030027\rsid7031409\rsid7109352\rsid7153642\rsid7209946\rsid7217972\rsid7348812\rsid7434793\rsid7437856\rsid7549295\rsid7741077\rsid7955637\rsid8015483\rsid8067903\rsid8069675\rsid8078383\rsid8091336\rsid8132030\rsid8215713\rsid8396446 +\rsid8475943\rsid8543011\rsid8733147\rsid8748637\rsid8995845\rsid9051788\rsid9177086\rsid9188473\rsid9199563\rsid9270497\rsid9306821\rsid9372065\rsid9399793\rsid9401222\rsid9468978\rsid9469928\rsid9519892\rsid9532276\rsid9635826\rsid9665659\rsid9708269 +\rsid9774965\rsid9796414\rsid9915706\rsid10050314\rsid10161153\rsid10355341\rsid10435185\rsid10494592\rsid10582935\rsid10637518\rsid10701367\rsid10754746\rsid10755770\rsid10955544\rsid10973461\rsid11015475\rsid11163266\rsid11172638\rsid11288764 +\rsid11304604\rsid11425526\rsid11470771\rsid11566354\rsid11946342\rsid11952921\rsid12022509\rsid12063004\rsid12075301\rsid12090221\rsid12210718\rsid12280750\rsid12324527\rsid12333177\rsid12468982\rsid12548043\rsid12792170\rsid12859467\rsid12918761 +\rsid13198821\rsid13325517\rsid13333265\rsid13396628\rsid13517596\rsid13593376\rsid13701908\rsid13713842\rsid13830030\rsid13983957\rsid13991654\rsid14158236\rsid14169179\rsid14180275\rsid14434127\rsid14439776\rsid14830590\rsid14879766\rsid14892148 +\rsid14952634\rsid14952839\rsid14972237\rsid15012329\rsid15290583\rsid15420045\rsid15475977\rsid15559859\rsid15622462\rsid15669620\rsid15809868\rsid15889451\rsid15947457\rsid15957589\rsid16001292\rsid16266353\rsid16278179\rsid16387045\rsid16453325 +\rsid16454606\rsid16464510\rsid16519714\rsid16523468\rsid16589844\rsid16650932\rsid16670320\rsid16719075\rsid16724526}{\*\generator Microsoft Word 10.0.6854;}{\info{\operator Ramkumar Ramalingam}{\creatim\yr2009\mo12\dy17\hr17\min8} +{\revtim\yr2010\mo1\dy5\hr16\min25}{\version199}{\edmins585}{\nofpages3}{\nofwords812}{\nofchars4629}{\nofcharsws5431}{\vern16393}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 urn:schemas-microsoft-com:office:smarttags}} +\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0 \widowctrl\ftnbj\aenddoc\grfdocevents0\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3 +\jcompress\viewkind1\viewscale115\nolnhtadjtbl\rsidroot10050314 \fet0{\*\wgrffmtfilter 013f}\sectd \linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}} +{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (} +{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain +\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid8067903 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\f1\insrsid8067903\charrsid11566354 \hich\af1\dbch\af11\loch\f1 SCA Contribution Framework: + +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\lang1024\langfe1024\noproof\insrsid8067903 +\par }{\lang1024\langfe1024\noproof\insrsid28757 {\shpgrp{\*\shpinst\shpleft21\shptop64\shpright8181\shpbottom9424\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk1\shpfblwtxt0\shpz0\shplid1026 +{\sp{\sn groupLeft}{\sv 1821}}{\sp{\sn groupTop}{\sv 2056}}{\sp{\sn groupRight}{\sv 9981}}{\sp{\sn groupBottom}{\sv 11416}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}} +{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shpgrp{\*\shpinst\shplid1027{\sp{\sn groupLeft}{\sv 1941}}{\sp{\sn groupTop}{\sv 6184}}{\sp{\sn groupRight}{\sv 5661}} +{\sp{\sn groupBottom}{\sv 8584}}{\sp{\sn relLeft}{\sv 1821}}{\sp{\sn relTop}{\sv 2104}}{\sp{\sn relRight}{\sv 5541}}{\sp{\sn relBottom}{\sv 4504}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn posh}{\sv 0}}{\sp{\sn posv}{\sv 0}} +{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1028{\sp{\sn relLeft}{\sv 1941}}{\sp{\sn relTop}{\sv 6184}}{\sp{\sn relRight}{\sv 5661}} +{\sp{\sn relBottom}{\sv 8584}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 65536}}{\sp{\sn hspNext}{\sv 1028}} +{\sp{\sn lidRegroup}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid2822041\charrsid15290583 \hich\af0\dbch\af11\loch\f0 ContributionScannerExtensionPoint +\par }}}}{\shp{\*\shpinst\shplid1029{\sp{\sn relLeft}{\sv 2065}}{\sp{\sn relTop}{\sv 6564}}{\sp{\sn relRight}{\sv 5417}}{\sp{\sn relBottom}{\sv 6944}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 131072}}{\sp{\sn hspNext}{\sv 1029}}{\sp{\sn lidRegroup}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0 +Jar Contribution Scanner +\par }}}}{\shp{\*\shpinst\shplid1030{\sp{\sn relLeft}{\sv 2065}}{\sp{\sn relTop}{\sv 7039}}{\sp{\sn relRight}{\sv 5417}}{\sp{\sn relBottom}{\sv 7419}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 196608}}{\sp{\sn hspNext}{\sv 1030}}{\sp{\sn lidRegroup}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0 +Directory Contribution Scanner +\par }}}}{\shp{\*\shpinst\shplid1031{\sp{\sn relLeft}{\sv 2065}}{\sp{\sn relTop}{\sv 7514}}{\sp{\sn relRight}{\sv 5417}}{\sp{\sn relBottom}{\sv 7894}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 262144}}{\sp{\sn hspNext}{\sv 1031}}{\sp{\sn lidRegroup}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0 +OSGiBundle Contribution Scanner +\par }}}}{\shp{\*\shpinst\shplid1032{\sp{\sn relLeft}{\sv 2065}}{\sp{\sn relTop}{\sv 7989}}{\sp{\sn relRight}{\sv 5417}}{\sp{\sn relBottom}{\sv 8369}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 327680}}{\sp{\sn hspNext}{\sv 1032}}{\sp{\sn lidRegroup}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \loch\af0\dbch\af11\hich\f0 \'85\'85\'85\'85 +\'85 +\par }}}}}}{\shpgrp{\*\shpinst\shplid1033{\sp{\sn groupLeft}{\sv 6261}}{\sp{\sn groupTop}{\sv 2056}}{\sp{\sn groupRight}{\sv 9981}}{\sp{\sn groupBottom}{\sv 4624}}{\sp{\sn relLeft}{\sv 6261}} +{\sp{\sn relTop}{\sv 2056}}{\sp{\sn relRight}{\sv 9981}}{\sp{\sn relBottom}{\sv 4624}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}} +{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1034{\sp{\sn relLeft}{\sv 6261}}{\sp{\sn relTop}{\sv 2056}}{\sp{\sn relRight}{\sv 9981}}{\sp{\sn relBottom}{\sv 4624}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}} +{\sp{\sn lTxid}{\sv 393216}}{\sp{\sn hspNext}{\sv 1034}}{\sp{\sn lidRegroup}{\sv 6}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid14879766\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Artifact}{\b\fs20\insrsid539137\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Processor}{ +\b\fs20\insrsid14879766\charrsid4731966 \hich\af0\dbch\af11\loch\f0 ExtentionPoint}{\b\fs20\insrsid539137\charrsid4731966 +\par }{\insrsid14879766 +\par }}}}{\shp{\*\shpinst\shplid1035{\sp{\sn relLeft}{\sv 6381}}{\sp{\sn relTop}{\sv 2536}}{\sp{\sn relRight}{\sv 9741}}{\sp{\sn relBottom}{\sv 2896}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 458752}}{\sp{\sn hspNext}{\sv 1035}}{\sp{\sn lidRegroup}{\sv 6}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 XSD}{\fs20\insrsid8132030 +\hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 Document}{\fs20\insrsid6911675\charrsid8015483 \hich\af0\dbch\af11\loch\f0 Processor}{\fs20\insrsid12468982\charrsid8015483 +\par }}}}{\shp{\*\shpinst\shplid1036{\sp{\sn relLeft}{\sv 6381}}{\sp{\sn relTop}{\sv 3016}}{\sp{\sn relRight}{\sv 9741}}{\sp{\sn relBottom}{\sv 3376}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 524288}}{\sp{\sn hspNext}{\sv 1036}}{\sp{\sn lidRegroup}{\sv 6}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8015483 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 WSDL}{ +\fs20\insrsid8132030 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid8015483\charrsid8015483 \hich\af0\dbch\af11\loch\f0 DocumentProcessor +\par }\pard \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\insrsid12468982 +\par }}}}{\shp{\*\shpinst\shplid1037{\sp{\sn relLeft}{\sv 6381}}{\sp{\sn relTop}{\sv 3496}}{\sp{\sn relRight}{\sv 9741}}{\sp{\sn relBottom}{\sv 3904}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 589824}}{\sp{\sn hspNext}{\sv 1037}}{\sp{\sn lidRegroup}{\sv 6}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4999167 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 +Composite}{\fs20\insrsid4999167 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 DocumentProcessor}{\fs20\insrsid12468982\charrsid4999167 +\par }}}}{\shp{\*\shpinst\shplid1038{\sp{\sn relLeft}{\sv 6381}}{\sp{\sn relTop}{\sv 4024}}{\sp{\sn relRight}{\sv 9741}}{\sp{\sn relBottom}{\sv 4384}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 655360}}{\sp{\sn hspNext}{\sv 1038}}{\sp{\sn lidRegroup}{\sv 6}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid6585698 \hich\af0\dbch\af11\loch\f0 Java Import/Export Processor}{ +\fs20\insrsid6585698\charrsid13198821 +\par }}}}}}{\shpgrp{\*\shpinst\shplid1039{\sp{\sn groupLeft}{\sv 1941}}{\sp{\sn groupTop}{\sv 9414}}{\sp{\sn groupRight}{\sv 3861}}{\sp{\sn groupBottom}{\sv 11934}}{\sp{\sn relLeft}{\sv 1821}} +{\sp{\sn relTop}{\sv 5104}}{\sp{\sn relRight}{\sv 3741}}{\sp{\sn relBottom}{\sv 7624}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn posh}{\sv 0}} +{\sp{\sn posv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1040{\sp{\sn relLeft}{\sv 1941}}{\sp{\sn relTop}{\sv 9414}}{\sp{\sn relRight}{\sv 3861}} +{\sp{\sn relBottom}{\sv 11934}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 720896}}{\sp{\sn hspNext}{\sv 1040}} +{\sp{\sn lidRegroup}{\sv 3}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid5468238\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Artifact}{\b\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 s}{\b\fs20\insrsid5468238\charrsid4731966 + +\par }{\insrsid5468238 +\par }}}}{\shp{\*\shpinst\shplid1041{\sp{\sn relLeft}{\sv 2061}}{\sp{\sn relTop}{\sv 9894}}{\sp{\sn relRight}{\sv 3621}}{\sp{\sn relBottom}{\sv 10254}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 786432}}{\sp{\sn hspNext}{\sv 1041}}{\sp{\sn lidRegroup}{\sv 3}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238\charrsid5468238 \hich\af0\dbch\af11\loch\f0 XSD + +\par }}}}{\shp{\*\shpinst\shplid1042{\sp{\sn relLeft}{\sv 2061}}{\sp{\sn relTop}{\sv 10374}}{\sp{\sn relRight}{\sv 3621}}{\sp{\sn relBottom}{\sv 10734}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 851968}}{\sp{\sn hspNext}{\sv 1042}}{\sp{\sn lidRegroup}{\sv 3}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 WSDL}{ +\fs20\insrsid5468238\charrsid5468238 +\par }}}}{\shp{\*\shpinst\shplid1043{\sp{\sn relLeft}{\sv 2061}}{\sp{\sn relTop}{\sv 10854}}{\sp{\sn relRight}{\sv 3621}}{\sp{\sn relBottom}{\sv 11214}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 917504}}{\sp{\sn hspNext}{\sv 1043}}{\sp{\sn lidRegroup}{\sv 3}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238\charrsid5468238 \hich\af0\dbch\af11\loch\f0 +SCDL +\par }}}}{\shp{\*\shpinst\shplid1044{\sp{\sn relLeft}{\sv 2061}}{\sp{\sn relTop}{\sv 11334}}{\sp{\sn relRight}{\sv 3621}}{\sp{\sn relBottom}{\sv 11694}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 983040}}{\sp{\sn hspNext}{\sv 1044}}{\sp{\sn lidRegroup}{\sv 3}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 Java Classes}{ +\fs20\insrsid5468238\charrsid13198821 +\par }}}}}}{\shpgrp{\*\shpinst\shplid1045{\sp{\sn groupLeft}{\sv 6261}}{\sp{\sn groupTop}{\sv 5776}}{\sp{\sn groupRight}{\sv 9861}}{\sp{\sn groupBottom}{\sv 8296}}{\sp{\sn relLeft}{\sv 6381}} +{\sp{\sn relTop}{\sv 5464}}{\sp{\sn relRight}{\sv 9981}}{\sp{\sn relBottom}{\sv 7984}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn posh}{\sv 0}} +{\sp{\sn posv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1046{\sp{\sn relLeft}{\sv 6261}}{\sp{\sn relTop}{\sv 5776}}{\sp{\sn relRight}{\sv 9861}} +{\sp{\sn relBottom}{\sv 8296}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1048576}}{\sp{\sn hspNext}{\sv 1046}} +{\sp{\sn lidRegroup}{\sv 7}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 Model Resolvers}{\b\fs20\insrsid2713663\charrsid4731966 +\par }{\insrsid2713663 +\par }}}}{\shp{\*\shpinst\shplid1047{\sp{\sn relLeft}{\sv 6464}}{\sp{\sn relTop}{\sv 6256}}{\sp{\sn relRight}{\sv 9621}}{\sp{\sn relBottom}{\sv 6616}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1114112}}{\sp{\sn hspNext}{\sv 1047}}{\sp{\sn lidRegroup}{\sv 7}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663\charrsid5468238 \hich\af0\dbch\af11\loch\f0 XSD +}{\fs20\insrsid548600 \hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid5468238 +\par }}}}{\shp{\*\shpinst\shplid1048{\sp{\sn relLeft}{\sv 6464}}{\sp{\sn relTop}{\sv 6736}}{\sp{\sn relRight}{\sv 9621}}{\sp{\sn relBottom}{\sv 7096}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1179648}}{\sp{\sn hspNext}{\sv 1048}}{\sp{\sn lidRegroup}{\sv 7}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 WSDL}{\fs20\insrsid548600 +\hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid5468238 +\par }}}}{\shp{\*\shpinst\shplid1049{\sp{\sn relLeft}{\sv 6464}}{\sp{\sn relTop}{\sv 7216}}{\sp{\sn relRight}{\sv 9621}}{\sp{\sn relBottom}{\sv 7576}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1245184}}{\sp{\sn hspNext}{\sv 1049}}{\sp{\sn lidRegroup}{\sv 7}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 +Composite}{\fs20\insrsid15669620 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid4999167 +\par }}}}{\shp{\*\shpinst\shplid1050{\sp{\sn relLeft}{\sv 6464}}{\sp{\sn relTop}{\sv 7696}}{\sp{\sn relRight}{\sv 9621}}{\sp{\sn relBottom}{\sv 8056}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1310720}}{\sp{\sn hspNext}{\sv 1050}}{\sp{\sn lidRegroup}{\sv 7}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 Java }{\fs20\insrsid15809868 +\hich\af0\dbch\af11\loch\f0 Import/Export ModelResolver}{\fs20\insrsid2713663\charrsid13198821 +\par }}}}}}{\shp{\*\shpinst\shplid1051{\sp{\sn relLeft}{\sv 2901}}{\sp{\sn relTop}{\sv 4504}}{\sp{\sn relRight}{\sv 4341}}{\sp{\sn relBottom}{\sv 5104}}{\sp{\sn fRelFlipH}{\sv 1}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 20}}{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn lineEndArrowhead}{\sv 1}} +{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}}{\shp{\*\shpinst\shplid1052{\sp{\sn relLeft}{\sv 3741}}{\sp{\sn relTop}{\sv 4264}} +{\sp{\sn relRight}{\sv 6261}}{\sp{\sn relBottom}{\sv 6304}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 1}}{\sp{\sn shapeType}{\sv 20}}{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn lineEndArrowhead}{\sv 1}} +{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}}{\shp{\*\shpinst\shplid1053{\sp{\sn relLeft}{\sv 8061}}{\sp{\sn relTop}{\sv 4624}} +{\sp{\sn relRight}{\sv 8901}}{\sp{\sn relBottom}{\sv 5464}}{\sp{\sn fRelFlipH}{\sv 1}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 20}}{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn lineEndArrowhead}{\sv 1}} +{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}}{\shp{\*\shpinst\shplid1054{\sp{\sn relLeft}{\sv 7821}}{\sp{\sn relTop}{\sv 7984}} +{\sp{\sn relRight}{\sv 8301}}{\sp{\sn relBottom}{\sv 8944}}{\sp{\sn fRelFlipH}{\sv 1}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 20}}{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn lineEndArrowhead}{\sv 1}} +{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}}{\shpgrp{\*\shpinst\shplid1055{\sp{\sn groupLeft}{\sv 4221}}{\sp{\sn groupTop}{\sv 8896}} +{\sp{\sn groupRight}{\sv 8181}}{\sp{\sn groupBottom}{\sv 11416}}{\sp{\sn relLeft}{\sv 4221}}{\sp{\sn relTop}{\sv 8896}}{\sp{\sn relRight}{\sv 8181}}{\sp{\sn relBottom}{\sv 11416}} +{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1056{\sp{\sn relLeft}{\sv 4221}} +{\sp{\sn relTop}{\sv 8896}}{\sp{\sn relRight}{\sv 8181}}{\sp{\sn relBottom}{\sv 11416}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}} +{\sp{\sn lTxid}{\sv 1376256}}{\sp{\sn hspNext}{\sv 1056}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid5724989 \hich\af0\dbch\af11\loch\f0 Domain: sca://1.1/domain/default}{\b\fs20\insrsid12280750\charrsid4731966 +\par }{\insrsid12280750 +\par }}}}{\shp{\*\shpinst\shplid1057{\sp{\sn relLeft}{\sv 4401}}{\sp{\sn relTop}{\sv 9304}}{\sp{\sn relRight}{\sv 7821}}{\sp{\sn relBottom}{\sv 11224}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1441792}}{\sp{\sn hspNext}{\sv 1057}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid10355341 \hich\af0\dbch\af11\loch\f0 s}{ +\fs20\insrsid10355341\charrsid10355341 \hich\af0\dbch\af11\loch\f0 ca://1.1/domain/default/contribution1}{\fs20\insrsid6973915\charrsid10355341 +\par }}}}{\shp{\*\shpinst\shplid1058{\sp{\sn relLeft}{\sv 4569}}{\sp{\sn relTop}{\sv 9712}}{\sp{\sn relRight}{\sv 7569}}{\sp{\sn relBottom}{\sv 11032}}{\sp{\sn fRelFlipH}{\sv 0}} +{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1507328}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt {\listtext\pard\plain\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab} +\pard\plain \ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls10\adjustright\rin0\lin360\itap0\pararsid7348812 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 { +\fs20\insrsid3038408\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Contribution }{\fs20\insrsid7348812\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Deployable}{\fs20\insrsid7348812 \hich\af0\dbch\af11\loch\f0 s}{\fs20\insrsid10355341\charrsid3038408 +\par {\listtext\pard\plain\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\fs20\insrsid3038408\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Imports +\par {\listtext\pard\plain\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af0\dbch\af11\loch\f0 Exports}{\fs20\insrsid3038408 +\par {\listtext\pard\plain\f3\fs20\insrsid1127291 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\fs20\insrsid1127291 \loch\af0\dbch\af11\hich\f0 \'85\loch\f0 .}{\fs20\insrsid1127291\charrsid3038408 +\par }\pard \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\insrsid3038408 +\par }}}}}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8192\dpgroup\dpcount10\dpx21\dpy64\dpxsize8160\dpysize9360\dpgroup\dpcount6\dpx0\dpy48\dpxsize3720\dpysize2400\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid2822041\charrsid15290583 \hich\af0\dbch\af11\loch\f0 +ContributionScannerExtensionPoint +\par }}\dpx0\dpy0\dpxsize3720\dpysize2400\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0 +Jar Contribution Scanner +\par }}\dpx124\dpy380\dpxsize3352\dpysize380\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0 +Directory Contribution Scanner +\par }}\dpx124\dpy855\dpxsize3352\dpysize380\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0 +OSGiBundle Contribution Scanner +\par }}\dpx124\dpy1330\dpxsize3352\dpysize380\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \loch\af0\dbch\af11\hich\f0 \'85\'85\'85\'85 +\'85 +\par }}\dpx124\dpy1805\dpxsize3352\dpysize380\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0 +\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0\dpgroup\dpcount6\dpx4440\dpy0\dpxsize3720\dpysize2568\dptxbx\dptxlrtb{\dptxbxtext\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid14879766\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Artifact}{\b\fs20\insrsid539137\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Processor}{ +\b\fs20\insrsid14879766\charrsid4731966 \hich\af0\dbch\af11\loch\f0 ExtentionPoint}{\b\fs20\insrsid539137\charrsid4731966 +\par }{\insrsid14879766 +\par }}\dpx0\dpy0\dpxsize3720\dpysize2568\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 XSD}{\fs20\insrsid8132030 +\hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 Document}{\fs20\insrsid6911675\charrsid8015483 \hich\af0\dbch\af11\loch\f0 Processor}{\fs20\insrsid12468982\charrsid8015483 +\par }}\dpx120\dpy480\dpxsize3360\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8015483 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 WSDL}{ +\fs20\insrsid8132030 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid8015483\charrsid8015483 \hich\af0\dbch\af11\loch\f0 DocumentProcessor +\par }\pard \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\insrsid12468982 +\par }}\dpx120\dpy960\dpxsize3360\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4999167 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 +Composite}{\fs20\insrsid4999167 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 DocumentProcessor}{\fs20\insrsid12468982\charrsid4999167 +\par }}\dpx120\dpy1440\dpxsize3360\dpysize408\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid6585698 \hich\af0\dbch\af11\loch\f0 Java Import/Export Processor}{ +\fs20\insrsid6585698\charrsid13198821 +\par }}\dpx120\dpy1968\dpxsize3360\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0 +\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0\dpgroup\dpcount6\dpx0\dpy3048\dpxsize1920\dpysize2520\dptxbx\dptxlrtb{\dptxbxtext\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid5468238\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Artifact}{\b\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 s}{\b\fs20\insrsid5468238\charrsid4731966 + +\par }{\insrsid5468238 +\par }}\dpx0\dpy0\dpxsize1920\dpysize2520\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238\charrsid5468238 \hich\af0\dbch\af11\loch\f0 XSD + +\par }}\dpx120\dpy480\dpxsize1560\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 WSDL}{ +\fs20\insrsid5468238\charrsid5468238 +\par }}\dpx120\dpy960\dpxsize1560\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238\charrsid5468238 \hich\af0\dbch\af11\loch\f0 +SCDL +\par }}\dpx120\dpy1440\dpxsize1560\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 Java Classes}{ +\fs20\insrsid5468238\charrsid13198821 +\par }}\dpx120\dpy1920\dpxsize1560\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0 +\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0\dpgroup\dpcount6\dpx4560\dpy3408\dpxsize3600\dpysize2520\dptxbx\dptxlrtb{\dptxbxtext\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 Model Resolvers}{\b\fs20\insrsid2713663\charrsid4731966 +\par }{\insrsid2713663 +\par }}\dpx0\dpy0\dpxsize3600\dpysize2520\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663\charrsid5468238 \hich\af0\dbch\af11\loch\f0 XSD +}{\fs20\insrsid548600 \hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid5468238 +\par }}\dpx203\dpy480\dpxsize3157\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 WSDL}{\fs20\insrsid548600 +\hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid5468238 +\par }}\dpx203\dpy960\dpxsize3157\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 +Composite}{\fs20\insrsid15669620 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid4999167 +\par }}\dpx203\dpy1440\dpxsize3157\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 Java }{\fs20\insrsid15809868 +\hich\af0\dbch\af11\loch\f0 Import/Export ModelResolver}{\fs20\insrsid2713663\charrsid13198821 +\par }}\dpx203\dpy1920\dpxsize3157\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0 +\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0\dpline\dpptx1440\dppty0\dpptx0\dppty600\dpastartsol\dpastartw2\dpastartl2\dpx1080\dpy2448\dpxsize1440\dpysize600\dplinew15\dplinecor0\dplinecog0\dplinecob0 +\dpline\dpptx2520\dppty0\dpptx0\dppty2040\dpaendsol\dpaendw2\dpaendl2\dpx1920\dpy2208\dpxsize2520\dpysize2040\dplinew15\dplinecor0\dplinecog0\dplinecob0\dpline\dpptx840\dppty0\dpptx0\dppty840\dpastartsol\dpastartw2\dpastartl2 +\dpx6240\dpy2568\dpxsize840\dpysize840\dplinew15\dplinecor0\dplinecog0\dplinecob0\dpline\dpptx480\dppty0\dpptx0\dppty960\dpastartsol\dpastartw2\dpastartl2\dpx6000\dpy5928\dpxsize480\dpysize960\dplinew15\dplinecor0\dplinecog0\dplinecob0 +\dpgroup\dpcount4\dpx2400\dpy6840\dpxsize3960\dpysize2520\dptxbx\dptxlrtb{\dptxbxtext\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid5724989 \hich\af0\dbch\af11\loch\f0 Domain: sca://1.1/domain/default}{\b\fs20\insrsid12280750\charrsid4731966 +\par }{\insrsid12280750 +\par }}\dpx0\dpy0\dpxsize3960\dpysize2520\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid10355341 \hich\af0\dbch\af11\loch\f0 s}{ +\fs20\insrsid10355341\charrsid10355341 \hich\af0\dbch\af11\loch\f0 ca://1.1/domain/default/contribution1}{\fs20\insrsid6973915\charrsid10355341 +\par }}\dpx180\dpy408\dpxsize3420\dpysize1920\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext{\listtext\pard\plain +\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\pard\plain \ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls10\adjustright\rin0\lin360\itap0\pararsid7348812 +\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid3038408\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Contribution }{\fs20\insrsid7348812\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Deployable}{ +\fs20\insrsid7348812 \hich\af0\dbch\af11\loch\f0 s}{\fs20\insrsid10355341\charrsid3038408 +\par {\listtext\pard\plain\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\fs20\insrsid3038408\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Imports +\par {\listtext\pard\plain\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af0\dbch\af11\loch\f0 Exports}{\fs20\insrsid3038408 +\par {\listtext\pard\plain\f3\fs20\insrsid1127291 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\fs20\insrsid1127291 \loch\af0\dbch\af11\hich\f0 \'85\loch\f0 .}{\fs20\insrsid1127291\charrsid3038408 +\par }\pard \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\insrsid3038408 +\par }}\dpx348\dpy816\dpxsize3000\dpysize1320\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0 +\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0}}}}{\lang1024\langfe1024\noproof\insrsid10435185 +\par }{\f1\fs20\insrsid539137 +\par }{\f1\fs20\insrsid16724526 +\par }{\f1\fs20\insrsid2235070 +\par }{\f1\fs20\insrsid548764 +\par }{\f1\fs20\insrsid672375 +\par }{\f1\fs20\insrsid2235070 +\par }{\b\f1\fs20\insrsid2822041 +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par }{\b\f1\fs20\insrsid539137 +\par +\par +\par }{\b\f1\fs20\insrsid5468238 +\par +\par +\par +\par +\par }{\b\f1\fs20\insrsid6121198 +\par +\par +\par +\par +\par +\par +\par +\par +\par }{\b\f1\fs20\insrsid6448318 +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par }\pard\plain \s16\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10161153 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 { +\fs21\insrsid10161153\charrsid6517470 \hich\af0\dbch\af11\loch\f0 The {\*\xmlopen\xmlns1{\factoidname place}}{\*\xmlopen\xmlns1{\factoidname State}}\hich\af0\dbch\af11\loch\f0 Tuscany{\*\xmlclose}{\*\xmlclose} + runtime provides a framework to support SCA contributions. The framework can be extended against the following two extension points: +\par }{\b\fs21\insrsid4462937\charrsid6517470 \hich\af0\dbch\af11\loch\f0 ContributionScannerExtensionPoin}{\b\fs21\insrsid10161153\charrsid6517470 \hich\af0\dbch\af11\loch\f0 t:}{\fs21\insrsid10161153\charrsid6517470 \hich\af0\dbch\af11\loch\f0 + It accepts extensions that can handle\~different packaging\~format/archives s\hich\af0\dbch\af11\loch\f0 uch as a directory, a JAR, an OSGi bundle, an EAR, a WAR and a ZIP.\~ +\par }{\b\fs21\insrsid10161153\charrsid6517470 \hich\af0\dbch\af11\loch\f0 ArtifactProcessorExtensionPoint:}{\fs21\insrsid10161153\charrsid6517470 \hich\af0\dbch\af11\loch\f0 It accepts extensions that can handle specific types of artifacts}{ +\fs21\insrsid8475943\charrsid6517470 \hich\af0\dbch\af11\loch\f0 such as WSDL, XSD, composite and}{\fs21\insrsid16453325\charrsid6517470 \hich\af0\dbch\af11\loch\f0 J}{\fs21\insrsid8475943\charrsid6517470 \hich\af0\dbch\af11\loch\f0 ava classes.}{ +\fs21\insrsid10161153\charrsid6517470 +\par }\pard\plain \ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11172638 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 { +\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 Contribution Scanner scans the contributi\hich\af0\dbch\af11\loch\f0 on being installed and generates a list of artifacts that needs to be processed. Currently there is}{ +\fs21\insrsid11425526\charrsid6517470 \hich\af0\dbch\af11\loch\f0 support for folder/file system, JAR and OSGi bundle c}{\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 +ontribution packages. In order to be available to the contribution service, a }{\fs21\insrsid4027380\charrsid6517470 {\*\bkmkstart OLE_LINK1}\hich\af0\dbch\af11\loch\f0 contribution {\*\bkmkend OLE_LINK1}\hich\af0\dbch\af11\loch\f0 scanners}{ +\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 needs to register itself with the }{\fs21\insrsid4027380\charrsid6517470 \hich\af0\dbch\af11\loch\f0 contribution scanner}{\fs21\insrsid11172638\charrsid6517470 +\hich\af0\dbch\af11\loch\f0 extension. +\par \hich\af0\dbch\af11\loch\f0 Artifact processors are used to process each artifact available on the contribution. In order to be available to the contribution service, a artifact process\hich\af0\dbch\af11\loch\f0 +or needs to register itself with the artifact processor extension. An artifact processor will be called for each artifact in two phases: +\par {\listtext\pard\plain\f3\fs21\insrsid11172638\charrsid6517470 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ql \fi-360\li720\ri0\sb100\sa100\sbauto1\saauto1\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin720\itap0\pararsid11566354 {\b\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 read }{\b\fs21\insrsid12792170\charrsid6517470 \hich\af0\dbch\af11\loch\f0 phase:}{ +\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 This is where you read an artifact (a document, an XML element, classes etc.), populate a model represent\hich\af0\dbch\af11\loch\f0 +ing the artifact and return it. The SCA contribution service calls ArtifactProcessor.read() on all artifacts that have an ArtifactProcessor registered for them. If your model points to other models, instead of trying to load these other models right away, +\hich\af0\dbch\af11\loch\f0 \hich\af0\dbch\af11\loch\f0 +you should just keep the information representing that reference, which you'll turn into a pointer to the referenced model in the resolve() phase. Note that you don't necessarily need to fully read and populate your model at this point, you can choose to +\hich\af0\dbch\af11\loch\f0 c\hich\af0\dbch\af11\loch\f0 omplete it later. +\par {\listtext\pard\plain\f3\fs21\insrsid11172638\charrsid6517470 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\b\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 resolve }{\b\fs21\insrsid12792170\charrsid6517470 \hich\af0\dbch\af11\loch\f0 phase:}{ +\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 + This phase gives you the opportunity to resolve references to other models (a WSDL, a class, another composite, a componentType). At this point, all models representing the artifacts in your SCA contribution have been rea\hich\af0\dbch\af11\loch\f0 +d, registered in the contribution's ArtifactResolver, and are ready to be resolved. +\par }\pard \ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11172638 {\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 +All deployable composites should be now ready to get deployed to the SCA Domain +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid12324527 {\b\f1\fs22\insrsid16464510\charrsid2313813 +\par }{\b\fs22\insrsid2501940 +\par }{\b\fs22\insrsid5794882 +\par }{\b\fs22\insrsid12324527\charrsid2313813 \hich\af0\dbch\af11\loch\f0 Path Taken to }{\b\fs22\insrsid14830590\charrsid2313813 \hich\af0\dbch\af11\loch\f0 Read}{\b\fs22\insrsid12324527\charrsid2313813 \hich\af0\dbch\af11\loch\f0 the Contribution:}{ +\b\fs22\insrsid9665659\charrsid2313813 \hich\af0\dbch\af11\loch\f0 (2.x)}{\b\fs22\insrsid12324527\charrsid2313813 +\par }{\f1\fs20\insrsid12324527 +\par }{\b\fs20\insrsid12063004\charrsid2769575 \hich\af0\dbch\af11\loch\f0 Step 1:}{\fs20\insrsid12063004 \hich\af0\dbch\af11\loch\f0 Using the NodeContribution \hich\af0\dbch\af11\loch\f0 information, a new contribution}{\fs20\insrsid2769575 +\hich\af0\dbch\af11\loch\f0 (i.e., ContributionImpl)}{\fs20\insrsid12063004 \hich\af0\dbch\af11\loch\f0 is loaded }{\fs20\insrsid13325517 \hich\af0\dbch\af11\loch\f0 by }{\fs20\insrsid8995845 \hich\af0\dbch\af11\loch\f0 scanning the list }{ +\fs20\insrsid4073862 \hich\af0\dbch\af11\loch\f0 of available}{\fs20\insrsid13325517 \hich\af0\dbch\af11\loch\f0 artifacts found in the contribution. The following classes and its methods are responsible for doing this job.}{\fs20\insrsid12063004 +\par }{\fs20\insrsid13325517 +\par }{\fs20\insrsid7109352 \hich\af0\dbch\af11\loch\f0 NodeImpl.start() line: 131}{\fs20\insrsid3482368\charrsid7109352 +\par }{\fs20\insrsid12324527\charrsid6517470 \hich\af0\dbch\af11\loch\f0 NodeFactoryImpl.\hich\af0\dbch\af11\loch\f0 loadContributions(NodeConfiguration, ProcessorContext) line: 295 +\par \hich\af0\dbch\af11\loch\f0 DefaultDeployer(DeployerImpl).loadContribution(URI, URL, Monitor) line: 549 +\par \hich\af0\dbch\af11\loch\f0 DefaultURLArtifactProcessorExtensionPoint$LazyURLArtifactProcessor.read(URL, URI, URL, ProcessorContext) line: 288 +\par }{\fs20\lang1040\langfe1041\langnp1040\insrsid12324527\charrsid6517470 \hich\af0\dbch\af11\loch\f0 ContributionContentProcessor.read(URL, URI, URL, ProcessorContext) line: 135 +\par }{\fs20\insrsid12324527\charrsid6517470 \hich\af0\dbch\af11\loch\f0 JarContributionScanner.scan(Contribution) line: 70}{\fs20\insrsid12324527 +\par }{\fs20\insrsid16266353 +\par }{\b\fs20\insrsid16266353\charrsid16266353 \hich\af0\dbch\af11\loch\f0 Step 2: }{\b\fs20\insrsid9399793 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid12022509 \hich\af0\dbch\af11\loch\f0 After scanning the contribution for the list of artifacts}{ +\fs20\insrsid9399793\charrsid9399793 \hich\af0\dbch\af11\loch\f0 , the}{\fs20\insrsid12022509 \hich\af0\dbch\af11\loch\f0 se}{\fs20\insrsid9399793\charrsid9399793 \hich\af0\dbch\af11\loch\f0 individual artifacts identified}{\fs20\insrsid8396446 +\hich\af0\dbch\af11\loch\f0 from the contributions are }{\fs20\insrsid9399793\charrsid9399793 \hich\af0\dbch\af11\loch\f0 read using their }{\fs20\insrsid7437856 \hich\af0\dbch\af11\loch\f0 corresponding}{\fs20\insrsid9399793\charrsid9399793 +\hich\af0\dbch\af11\loch\f0 artifactProcessors}{\b\fs20\insrsid9399793 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid8748637\charrsid9051788 \hich\af0\dbch\af11\loch\f0 and artifact models are created at this point of time.}{ +\fs20\insrsid9270497\charrsid9051788 \hich\af0\dbch\af11\loch\f0 The below class and its method is responsible for doing this job.}{\b\f1\fs20\insrsid16266353\charrsid16266353 +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid9399793 {\fs20\insrsid9399793\charrsid9399793 +\par }{\fs20\lang1040\langfe1041\langnp1040\insrsid9399793\charrsid6517470 \hich\af0\dbch\af11\loch\f0 ContributionContentProcessor.read(URL, URI, URL, Process\hich\af0\dbch\af11\loch\f0 orContext) line: 1}{\fs20\lang1040\langfe1041\langnp1040\insrsid9051788 +\hich\af0\dbch\af11\loch\f0 51}{\fs20\lang1040\langfe1041\langnp1040\insrsid9399793\charrsid6517470 +\par }\pard \ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11172638 {\lang1040\langfe1041\langnp1040\insrsid12324527\charrsid9399793 +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14830590 {\b\fs22\insrsid14830590\charrsid14952839 \hich\af0\dbch\af11\loch\f0 Path Taken to Resolve the Contribution:}{\b\fs22\insrsid12090221\charrsid14952839 +\hich\af0\dbch\af11\loch\f0 (2.x)}{\b\fs22\insrsid14830590\charrsid14952839 +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\f1\fs20\insrsid10637518 +\par }{\b\fs20\insrsid9915706\charrsid2769575 \hich\af0\dbch\af11\loch\f0 Step 1:}{\fs20\insrsid9915706 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid2441954 \hich\af0\dbch\af11\loch\f0 After loading / scanning the }{\fs20\insrsid1575154 +\hich\af0\dbch\af11\loch\f0 contributions}{\fs20\insrsid9915706 \hich\af0\dbch\af11\loch\f0 , }{\fs20\insrsid9372065 \hich\af0\dbch\af11\loch\f0 now }{\fs20\insrsid2441954 \hich\af0\dbch\af11\loch\f0 the Node Manager }{\fs20\insrsid1575154 +\hich\af0\dbch\af11\loch\f0 configure}{\fs20\insrsid9372065 \hich\af0\dbch\af11\loch\f0 s}{\fs20\insrsid2441954 \hich\af0\dbch\af11\loch\f0 the node with the }{\fs20\insrsid9372065 \hich\af0\dbch\af11\loch\f0 available contribution. This step involves }{ +\fs20\insrsid15012329 \hich\af0\dbch\af11\loch\f0 initiating the process of }{\fs20\insrsid9372065 \hich\af0\dbch\af11\loch\f0 resolving the various artifacts available in the contribution using their respective }{\fs20\insrsid1932963 +\hich\af0\dbch\af11\loch\f0 ModelResolvers}{\fs20\insrsid9372065 \hich\af0\dbch\af11\loch\f0 . }{\fs20\insrsid2629112 \hich\af0\dbch\af11\loch\f0 The following classes and its methods are responsible for doing this job.}{\fs20\insrsid9915706 +\par }{\f1\fs20\insrsid9915706 +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid2960142 {\fs20\insrsid2960142\charrsid2960142 \hich\af0\dbch\af11\loch\f0 NodeImpl.start() line: 133}{\f1\fs20\insrsid2960142\charrsid5971993 \tab +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\fs20\insrsid2960142\charrsid2960142 \hich\af0\dbch\af11\loch\f0 NodeFactoryImpl.configureNode(NodeConfiguration, Lis\hich\af0\dbch\af11\loch\f0 +t, ProcessorContext) line: 274}{\fs20\insrsid2960142 +\par }{\fs20\insrsid4734635\charrsid2960142 \hich\af0\dbch\af11\loch\f0 DefaultDeployer(DeployerImpl).build(List, Map>, Monitor) line: 440}{\fs20\insrsid2960142 +\par }{\fs20\insrsid7217972\charrsid2960142 \hich\af0\dbch\af11\loch\f0 DefaultURLArtifactProcessorExtensionPoint$LazyURLArtifactProcessor.resolve(Object, ModelResolver, ProcessorCont\hich\af0\dbch\af11\loch\f0 ext) line: 305}{\f1\fs20\insrsid10637518 +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid5971993 {\fs20\insrsid5971993\charrsid2960142 \hich\af0\dbch\af11\loch\f0 ContributionContentProcessor.resolve(Contribution, ModelResolver, ProcessorContext) line: }{ +\fs20\insrsid14892148 \hich\af0\dbch\af11\loch\f0 252}{\fs20\insrsid5971993\charrsid2960142 +\par }{\fs20\insrsid5971993 +\par }{\b\fs20\insrsid8091336 +\par }{\b\fs20\insrsid4720541\charrsid2769575 \hich\af0\dbch\af11\loch\f0 Step }{\b\fs20\insrsid4720541 \hich\af0\dbch\af11\loch\f0 2: }{\fs20\insrsid14180275\charrsid1316508 \hich\af0\dbch\af11\loch\f0 +In this step, the contribution artifacts are resolved using their registered ModelResolvers.}{\fs20\insrsid329786 \hich\af0\dbch\af11\loch\f0 Some examples of artifacts and their corresponding ModelResovlers are shown below}{\fs20\insrsid16519714 +\loch\af0\dbch\af11\hich\f0 \'85\loch\f0 .}{\fs20\insrsid4720541 +\par }{\fs20\insrsid16519714 +\par }{\b\fs20\insrsid5580748 \hich\af0\dbch\af11\loch\f0 Artifacts\tab }{\b\fs20\insrsid5580748\charrsid5580748 \hich\af0\dbch\af11\loch\f0 ModelResolver +\par }{\fs20\insrsid16278179 \hich\af0\dbch\af11\loch\f0 Java Classes \tab }{\fs20\insrsid16001292 \hich\af0\dbch\af11\loch\f0 - }{\fs20\insrsid16278179 \hich\af0\dbch\af11\loch\f0 ClassLoaderModelResolver}{\fs20\insrsid16519714 +\par }{\fs20\insrsid16278179 \hich\af0\dbch\af11\loch\f0 XSD\tab \tab - XSDModelResolver +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\fs20\insrsid16278179 \hich\af0\dbch\af11\loch\f0 WSDL\tab \tab - WSDLModelResolver}{\f1\fs20\insrsid16650932 +\par +\par }{\b\fs22\insrsid861443 +\par }{\b\fs22\insrsid16650932\charrsid11304604 \hich\af0\dbch\af11\loch\f0 How 2.x is different from 1.x }{\b\fs22\insrsid10701367 \hich\af0\dbch\af11\loch\f0 in terms of Contribution ClassLoaders}{\b\fs22\insrsid16650932\charrsid11304604 +\hich\af0\dbch\af11\loch\f0 :}{\b\fs22\insrsid16650932 +\par }{\b\fs22\insrsid8078383 +\par }{\b\fs21\insrsid3826780\charrsid11470771 \hich\af0\dbch\af11\loch\f0 In 1.x }{\b\fs21\insrsid2888904\charrsid11470771 \hich\af0\dbch\af11\loch\f0 code}{\b\fs21\insrsid2888904 \hich\af0\dbch\af11\loch\f0 :}{\b\fs21\insrsid3826780\charrsid11470771 +\hich\af0\dbch\af11\loch\f0 }{\b\fs21\insrsid9188473\charrsid11470771 \hich\af0\dbch\af11\loch\f0 +\par {\listtext\pard\plain\f3\fs20\insrsid9188473\charrsid9188473 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}\pard \ql \fi-360\li720\ri0\nowidctlpar\jclisttab\tx720\wrapdefault\faauto\ls11\rin0\lin720\itap0\pararsid11470771 {\fs20\insrsid9188473\charrsid9188473 +\hich\af0\dbch\af11\loch\f0 A ContributionClassLoaderProvider is registered using ContributionClassLoaderProviderExtensionPoint, which provides the ContributionClassLoader for the contributions.}{\fs20\insrsid8078383 +\par {\listtext\pard\plain\f3\fs20\insrsid11470771 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}\pard \ql \fi-360\li720\ri0\nowidctlpar\jclisttab\tx720\wrapdefault\faauto\ls11\rin0\lin720\itap0 {\fs20\insrsid11470771 \hich\af0\dbch\af11\loch\f0 A }{ +\fs20\insrsid11470771\charrsid11470771 \hich\af0\dbch\af11\loch\f0 ContributionClassLoader}{\fs20\insrsid11470771 \hich\af0\dbch\af11\loch\f0 instance is created for the contribution }{\fs20\insrsid1455334 \hich\af0\dbch\af11\loch\f0 +by the provider, and this instance is set as a classloader in the ContributionImpl.}{\b\fs22\insrsid7209946\charrsid13830030 +\par {\listtext\pard\plain\f3\fs20\insrsid1705583 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}{\fs20\insrsid1705583 \hich\af0\dbch\af11\loch\f0 For}{\fs20\insrsid13830030 \hich\af0\dbch\af11\loch\f0 + the Java Class artifacts, the ClassLoaderModelResolver uses the class loader instance available from the contribution }{\fs20\insrsid1705583 \hich\af0\dbch\af11\loch\f0 as the parent class loader while resolving}{\fs20\insrsid13830030 +\hich\af0\dbch\af11\loch\f0 the Class References.}{\b\fs22\insrsid7209946 +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\b\fs22\insrsid7209946 +\par }{\b\fs21\insrsid7209946\charrsid11470771 \hich\af0\dbch\af11\loch\f0 In 2.x }{\b\fs21\insrsid2888904\charrsid11470771 \hich\af0\dbch\af11\loch\f0 code}{\b\fs21\insrsid2888904 \hich\af0\dbch\af11\loch\f0 :}{\b\fs21\insrsid7209946 +\par {\listtext\pard\plain\f3\fs20\insrsid16719075 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}\pard \ql \fi-360\li720\ri0\nowidctlpar\jclisttab\tx720\wrapdefault\faauto\ls11\rin0\lin720\itap0\pararsid13396628 {\fs20\insrsid16719075 \hich\af0\dbch\af11\loch\f0 No }{ +\fs20\insrsid13396628\charrsid9188473 \hich\af0\dbch\af11\loch\f0 ContributionClassLoaderProvider }{\fs20\insrsid16719075 \hich\af0\dbch\af11\loch\f0 and C}{\fs20\insrsid13396628\charrsid9188473 \hich\af0\dbch\af11\loch\f0 +ontributionClassLoaderProviderExtensionPoint}{\fs20\insrsid16719075 \hich\af0\dbch\af11\loch\f0 is used.}{\fs20\insrsid13396628 +\par {\listtext\pard\plain\f3\fs20\insrsid2780748 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}{\fs20\insrsid2780748 \hich\af0\dbch\af11\loch\f0 T}{\fs20\insrsid13396628 \hich\af0\dbch\af11\loch\f0 he }{\fs20\insrsid6643333 \hich\af0\dbch\af11\loch\f0 +classloader field in the }{\fs20\insrsid13396628 \hich\af0\dbch\af11\loch\f0 ContributionImpl}{\fs20\insrsid2780748 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid6643333 \hich\af0\dbch\af11\loch\f0 is always null.}{\b\fs22\insrsid13396628\charrsid13830030 + +\par {\listtext\pard\plain\f3\fs20\insrsid6189819 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}\pard \ql \fi-360\li720\ri0\nowidctlpar\jclisttab\tx720\wrapdefault\faauto\ls11\rin0\lin720\itap0\pararsid7549295 {\fs20\insrsid6189819 \hich\af0\dbch\af11\loch\f0 For}{ +\fs20\insrsid13396628 \hich\af0\dbch\af11\loch\f0 the Java Class artifacts, the ClassLoaderModelResolver uses the }{\fs20\insrsid6189819\charrsid6189819 \hich\af0\dbch\af11\loch\f0 Thread.currentThrea}{\fs20\insrsid6189819 \hich\af0\dbch\af11\loch\f0 +d().getContextClassLoader() }{\fs20\insrsid5243868 \hich\af0\dbch\af11\loch\f0 as the parent class loader }{\fs20\insrsid13396628 \hich\af0\dbch\af11\loch\f0 to resolve the Class References.}{\b\fs22\insrsid7549295 +\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\b\fs21\insrsid13396628 +\par }{\b\fs21\insrsid28757\charrsid11470771 +\par }} \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg new file mode 100644 index 0000000000..c11b718731 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg.jpeg new file mode 100644 index 0000000000..b4847c822c Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png new file mode 100644 index 0000000000..709eb07ac3 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png.jpeg new file mode 100644 index 0000000000..3678c735b7 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg new file mode 100644 index 0000000000..76f073c813 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg.jpeg new file mode 100644 index 0000000000..2822e6c252 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png new file mode 100644 index 0000000000..4c4a3e152d Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png.jpeg new file mode 100644 index 0000000000..f91d6a74a6 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.html b/site/trunk/site-publish/documentation-2x/sca-java-deployment.html new file mode 100644 index 0000000000..819e47cc2c --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.html @@ -0,0 +1,410 @@ + + + + + + + + + + + + + + + SCA Java Deployment : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > SCA Java Deployment + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > SCA Java Deployment + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Overview

+

+ + +

Deployer Implementation

+ +

The Deployer is available in multiple modules in Tuscany Java SCA 2.x

+ +

Contribution Modules

+ +

+ +
    +
  • Deployer +
      +
    • Responsible to process contribution lifecycle
    • +
    +
  • +
  • Contribution Extensions +
      +
    • Extension point to add imports/exports +
        +
      • Currently available : namespace and java import/export
      • +
      +
    • +
    +
  • +
  • Contribution Processors +
      +
    • Extension point to add contribution artifact processors
    • +
    +
  • +
  • Contribution Scanners +
      +
    • Extension point to add package scanners to process contribution contents +
        +
      • Currently available : directory, zip and jar
      • +
      +
    • +
    +
  • +
  • Contribution Model Resolvers +
      +
    • Extension point to add artifact model resolvers
    • +
    +
  • +
+ + +

Deployer life cycle

+ +
    +
  • Initialize +
      +
    • Load definitions.xml and store in a system contribution
    • +
    +
  • +
+ + +
    +
  • Load +
      +
    • Read contribution artifacts utilizing the Contribution Scanner
    • +
    +
  • +
+ + +
    +
  • Build +
      +
    • Pre-resolve the contribution artifacts
    • +
    • Build contribution dependencies by processing contribution imports/exports
    • +
    • Resolve contribution artifacts
    • +
    +
  • +
+ + +

Deployer Interface

+ +
+
+/**
+ * A utility that provides system functions to handle Tuscany SCA application deployment
+ */
+public interface Deployer extends LifeCycleListener {
+    /**
+     * Attach a deployment composite to the given contribution 
+     * @param contribution The target contribution
+     * @param composite The deployment composite
+     * @param appending A flag to indicate if existing deployable composites in the contribution should be appended or replaced
+     */
+    void attachDeploymentComposite(Contribution contribution, Composite composite, boolean appending);
+
+    /**
+     * Configure a list of contributions to create a composite representing a view of the domain
+     * @param contributions
+     * @param bindingBaseURIs
+     * @param monitor
+     * @return
+     * @throws ContributionResolveException
+     * @throws CompositeBuilderException
+     */
+    Composite build(List<Contribution> contributions, Map<QName, List<String>> bindingBaseURIs, Monitor monitor)
+        throws ContributionResolveException, CompositeBuilderException;
+
+    /**
+     * Load an artifact from the given location
+     * @param uri
+     * @param location
+     * @param monitor
+     * @return
+     * @throws ContributionReadException
+     */
+    Artifact loadArtifact(URI uri, URL location, Monitor monitor) throws ContributionReadException;
+
+    /**
+     * Load a contribution from the given location
+     * @param uri
+     * @param location
+     * @param monitor
+     * @return
+     * @throws ContributionReadException
+     */
+    Contribution loadContribution(URI uri, URL location, Monitor monitor) throws ContributionReadException;
+
+    /**
+     * @param <T>
+     * @param uri
+     * @param location
+     * @param monitor
+     * @return
+     * @throws ContributionReadException
+     */
+    <T> T loadDocument(URI uri, URL location, Monitor monitor) throws ContributionReadException;
+
+    /**
+     * @param <T>
+     * @param reader
+     * @param monitor
+     * @return
+     * @throws XMLStreamException
+     * @throws ContributionReadException
+     */
+    <T> T loadXMLDocument(Reader reader, Monitor monitor) throws XMLStreamException, ContributionReadException;
+
+    /**
+     * @param <T>
+     * @param location
+     * @param monitor
+     * @return
+     * @throws XMLStreamException
+     * @throws ContributionReadException
+     */
+    <T> T loadXMLDocument(URL location, Monitor monitor) throws XMLStreamException, ContributionReadException;
+
+    /**
+     * @param <T>
+     * @param reader
+     * @param monitor
+     * @return
+     * @throws ContributionReadException
+     * @throws XMLStreamException
+     */
+    <T> T loadXMLElement(XMLStreamReader reader, Monitor monitor) throws ContributionReadException, XMLStreamException;
+
+    /**
+     * Save the model as XML
+     * @param model
+     * @param writer
+     * @param monitor
+     * @throws XMLStreamException
+     * @throws ContributionWriteException
+     */
+    void saveXMLDocument(Object model, Writer writer, Monitor monitor) throws XMLStreamException,
+        ContributionWriteException;
+
+    /**
+     * Save the model as XML
+     * @param model
+     * @param writer
+     * @param monitor
+     * @throws XMLStreamException
+     * @throws ContributionWriteException
+     */
+    void saveXMLElement(Object model, XMLStreamWriter writer, Monitor monitor) throws XMLStreamException,
+        ContributionWriteException;
+
+    /**
+     * @return
+     */
+    boolean isSchemaValidationEnabled();
+    /**
+     * @param schemaValidationEnabled
+     */
+    void setSchemaValidationEnabled(boolean schemaValidationEnabled);
+    
+    /**
+     * 
+     * @return
+     */
+    Monitor createMonitor();
+    
+    /**
+     * Create an instance of {@link BuilderContext}
+     * @return
+     */
+    BuilderContext createBuilderContext();
+
+    /**
+     * Create an instance of {@link ProcessorContext}
+     * @return
+     */
+    ProcessorContext createProcessorContext();
+
+    /**
+     * Get the {@link ExtensionPointRegistry}
+     * @return
+     */
+    ExtensionPointRegistry getExtensionPointRegistry();
+    
+    /* 
+     * @see org.apache.tuscany.sca.core.LifeCycleListener#start()
+     */
+    void start();
+
+    /* 
+     * @see org.apache.tuscany.sca.core.LifeCycleListener#stop()
+     */
+    void stop();
+    
+}
+
+
+ +

Deploying a contribution using the Node API

+ +
+
+
+/**
+ * This client program shows how to create an SCA runtime, start it,
+ * and locate and invoke a SCA component
+ */
+public class CalculatorClient {
+    public static void main(String[] args) throws Exception {
+
+        String contribution = ContributionLocationHelper.getContributionLocation(CalculatorClient.class);
+        Node node = NodeFactory.newInstance().createNode("Calculator.composite", new Contribution("calculator", contribution));
+
+        node.start();
+        
+        CalculatorService calculatorService = ((Client)node).getService(CalculatorService.class, "CalculatorServiceComponent");
+        
+        // Calculate
+        System.out.println("3 + 2=" + calculatorService.add(3, 2));
+        System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
+        System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
+        System.out.println("3 / 2=" + calculatorService.divide(3, 2));
+
+        node.stop();
+    }
+
+}
+
+
+
+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-development-guide.html b/site/trunk/site-publish/documentation-2x/sca-java-development-guide.html new file mode 100644 index 0000000000..1eea6ce884 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-development-guide.html @@ -0,0 +1,524 @@ + + + + + + + + + + + + + + + SCA Java Development Guide : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > SCA Java Development Guide + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > SCA Java Development Guide + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

This document is the development guideline for SCA Java 2.x project.

+ + + + +

OSGi Overview and Approach

+ +

OSGI & Tuscany

+ +

General Guide

+ +

Welcome to the Tuscany SCA Java subproject project. We look forward to your participation and try to help you get on board. Feel free to ask your questions on the mailing list.

+ +

Here are some general guidelines we use in this project.

+
    +
  • Java SCA sub-project aims to provide enterprise-grade service infrastructure based on SCA.
  • +
  • Tuscany SCA is not just a reference implementation. We encourage innovation based on the tenets of SCA. A lot of work we do provides feedback to the specifications.
  • +
  • The Java SCA infrastructure should provide flexibility and choice. It should not dictate programming models but support many.
  • +
  • The Java SCA infrastructure is very modularized and is designed to be highly extensible so users can customize it to fit their needs.
  • +
+ + +

Prerequisites

+ +

Java SCA requires the following:

+ + + +

Checking out code from Subversion

+ +

Use the command as follows:

+
+
+svn checkout https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/
+
+
+ +

Setting up your Development Environment

+ +

top-down build (recommended approach)

+ +

Check out all of the java source code.

+
+
+svn checkout https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/
+
+
+

Building the SCA source code :

+
+
+cd trunk
+mvn -fae clean install
+
+
+

It should work even if you start with an empty Maven local repository, and it should always work, however when you are building for Tuscany for the first time there are a lot of dependencies which must be downloaded so the first build can take a long time and it may fail with problems retrieving the dependencies.

+ +

There can be occasional problems downloading artifacts from remote Maven repositories so if mvn fails with network related sounding messages sometimes just trying again can fix the problem.

+ +

The trunk code sometimes has SNAPSHOT dependencies which can get out of date in your local repository so if you see odd build failures try updating the SNAPSHOT jars by using the "-U" parameter in the mvn command.

+ +

Once you have done a top-down build, and your local maven repository is populated, you can start using the maven off line option to speed up the build process by using the "-o" parameter in the mvn command.

+ +
The SCA build consumes a good amount of memory, in case you are seeing issues during the build, set a MAVEN_OPTS environment variable to allocate more memory for the build process. + +

Windows : SET MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"
+ Unix : export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"

+ +
If you are using MAC OS, please see 'Special instructions for MAC OS users' section below
+ +

Importing SCA modules into your Development IDE

+ + +

Using Eclipse

+ +

If this is the first time you are using your workspace with maven m2 local repository, you will need to tell your Eclipse workspace the location of the directory, and you can do this with the following command :

+
+
+mvn -Declipse.workspace=[path-to-eclipse-workspace] eclipse:add-maven-repo
+
+
+

In order to generate the necessary project files to import the SCA modules to Eclipse, you can use the maven eclipse plugin

+ +
+
+mvn eclipse:eclipse
+
+
+ +

Now launch your Eclipse IDE, select File->Import->Existing projects into Workplace, and then import the project from SCA Modules into your Eclipse Workspace.

+ +

Using Eclipse PDE

+ +

To help with development in an OSGi environment Tuscany also has a build profile to setup the Eclipse Plugin Development Environment:

+
+
+mvn -fae -Peclipse
+
+
+ +

Now set the "Target Platform" in your Eclipse IDE by following the steps below :

+ +
    +
  • Inside eclipse, select File->Open File" and open "distribution/all/target/features/tuscany.target" +
      +
    • click "Set as target platform" on the upper-right side of the overview window that opened
    • +
    +
  • +
+ + +

Then as when using eclipse:eclipse launch your Eclipse IDE, select File->Import->Existing projects into Workplace, and then import the project from SCA Modules into your Eclipse Workspace.

+ +

There are also some Tuscany Eclipse code templates available:
+Eclipse Style Formatter
+Eclipse Templates

+ +

Eclipse Build Troubleshooting

+ +

Sometimes a Maven build will work from the command line, yet the same component will not build in the Eclipse environment. Of course, developers try to prevent this from happening, but it does happen and makes for a valid Jira. In the meantime, here are some steps that might help correct build issues in the Eclipse environment:

+ +
    +
  • Missing classpath variables - Sometimes Java build classpath variables are incorrect or missing, for instance "Unbound classpath variable: 'M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.9/jaxb-impl-2.1.9.jar'". Add the classpath variable 'M2_REPOS' to your workspace. Window > Preferences > Java > Build Path > Classpath variables. Create variables for any missing variables and point them to the appropriate place in your file system. Do a complete rebuild.
  • +
+ + +
    +
  • Missing projects - Sometimes developers add or remove project dependencies. These show up with error message "The project cannot be built until build path errors are resolved". This is often a sign that your Eclipse workspace is out of sync with your local repository or the svn repository. The full remedy is to refresh your local repos (svn update), rebuild your local repos (mvn clean install -U), regenerate Eclipse projects (mvn -Declipse), reimport projects in Eclipse, and clean/rebuild your projects. You may be able to do less than this full refresh with simple changes, but the full refresh is often needed for major changes.
  • +
+ + +
    +
  • Project won't build - Sometimes a particular project will not build despite repeated efforts. Consider if this project is necessary to the task at hand. You may be able to delete the problematic Eclipse project and continue with other work.
  • +
+ + + +

Special instructions for MAC OS users

+ +

Some plugins used in the Tuscany build requires a explicit dependency on some classes from JDK tools.jar, which is in a different place in the MAC OS environment.

+ +

We have created duplicate profiles in Tuscany to accommodate the most used user tasks

+ +
    +
  • Running a build : there is a default profile for the mac environment properly configuring the tools.jar property +
    +
    +   mvn clean install
    +
    +
  • +
+ + +
    +
  • Creating Eclipse IDE project files : there is a "eclipse-mac" profile +
    +
    +   mvn -Peclipse-mac
    +
    +
  • +
+ + +

Update your maven settings.xml (%user_home%/.m2/settings.xml)

+ +

Updating your settings.xml with proper property configuration will make all profiles work in a MAC OS environment.

+ +
+
+<settings>
+
+  <profiles>
+     <profile>
+        <id>mac-os-configuration</id>
+        <properties>
+           <tools.jar>${java.home}/../Classes/classes.jar</tools.jar>
+        </properties>
+     </profile>
+  </profiles>
+  
+  <activeProfiles>
+    <activeProfile>mac-os-configuration</activeProfile>
+  </activeProfiles>
+
+</settings>
+
+
+ +

Coding Guidelines

+ +

There are a few simple guidelines when developing for JAVA SCA:

+
    +
  • The basic coding style used is the described at Sun Java coding standards but the main thing is to be consistent with the existing code you're updating, so for example, if you're updating a method that uses the braces on the same line style don't add code with the hanging braces style.
  • +
+ + +
    +
  • Always include the Apache License Headers on all files (both source code files and resource files such as xml documents)
  • +
+ + +
    +
  • Include a descriptive log message for checkins, for example "fixed such and such problem".
  • +
+ + +

While Tuscany does not yet have an official style or template, here are some templates that folks have been using and have been checked into the build which are stored at https://svn.apache.org/repos/asf/tuscany/java/etc/

+ +

Naming conventions to increase consistency

+ +

Folder Names: Please use all lowercases and dashes in folder names (like in the jar names)

+
    +
  • Maven artifact id = tuscany-<folder name>
  • +
+ + +

Package names: Package names within modules should include the module name so that source code can be located in the source tree easily. So, for example, java/sca/module/implementation-java would be in package structure org.apache.tuscany.implementation.java.*

+ +

Testing

+ +

Tuscany uses plain junit test cases to perform unit and integration testing, below is an example that can also be used as a template for writing new test cases; it demonstrates how to bootstrap the Tuscany SCA runtime in your test case, and because they are based on junit, you can run it from your IDE of choice or from Maven.

+ +
Note that we are using JUnit 4.2 code style in OSGI development stream
+ +
+
+/**
+ * Description of your test case and necessary details you find necessary
+ */
+@Scope("COMPOSITE") @EagerInit
+public class CalculatorTestCase {
+
+    private static CalculatorService calculatorService;
+    private static NodeLauncher launcher;
+    private static Node node;
+
+    @Reference
+    public void setCalculatorService(CalculatorService calculatorService) {
+        CalculatorTestCase.calculatorService = calculatorService;
+    }
+    
+    
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+        launcher = NodeLauncher.newInstance();
+        String location = ContributionLocationHelper.getContributionLocation(CalculatorClient.class);
+        node = launcher.createNode("Calculator.composite", new Contribution("test", location));
+        System.out.println("SCA Node API ClassLoader: " + node.getClass().getClassLoader());
+        node.start();
+    }
+
+    @AfterClass
+    public static void tearDownAfterClass() throws Exception {
+        if (node != null) {
+            node.stop();
+            node.destroy();
+        }
+        if (launcher != null) {
+            launcher.destroy();
+        }
+    }
+
+    @Test
+    public void testCalculator() throws Exception {
+        // Calculate
+        assertEquals(calculatorService.add(3, 2), 5.0);
+        assertEquals(calculatorService.subtract(3, 2), 1.0);
+        assertEquals(calculatorService.multiply(3, 2), 6.0);
+        assertEquals(calculatorService.divide(3, 2), 1.5);
+    }
+}
+
+
+

Note that we use surefire maven plugin to run the unit and integration tests, and in most cases, they are configured to match a **/*TestCase.java file name pattern. Because of this, if your test case has a different file name pattern, you might execute it from your IDE of choice, but the maven build won't execute the test.

+ +

Client Applications as SCA Components

+ +

Below is how you can build client applications as an SCA component.

+ +
+
+@Scope("COMPOSITE") @EagerInit
+public class CalculatorClient {
+    
+    private CalculatorService calculatorService;
+
+    @Reference
+    public void setCalculatorService(CalculatorService calculatorService) {
+        this.calculatorService = calculatorService;
+    }
+    
+    @Init
+    public void calculate() {
+
+        // Calculate
+        System.out.println("SCA API ClassLoader: " + print(Reference.class.getClassLoader()));
+        System.out.println("3 + 2=" + calculatorService.add(3, 2));
+        System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
+        System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
+        System.out.println("3 / 2=" + calculatorService.divide(3, 2));
+    }
+    
+    private static String print(ClassLoader cl) {
+        StringBuffer buf = new StringBuffer();
+        for (; cl != null;) {
+            buf.append(cl.toString());
+            buf.append(' ');
+            cl = cl.getParent();
+        }
+        return buf.toString();
+    }
+
+}
+
+
+ +

Maven Build Structure

+ +

We use the term Module to refer to the leaf of maven tree.

+
    +
  • sca/pom.xml's parent will be pom/parent/pom.xml
  • +
  • Other poms will use the pom from the parent folder as parent pom
  • +
  • Group id: org.apache.tuscany.sca
  • +
  • Version of our modules will be specified once in java/sca/pom.xml, child poms don't need specify a version as they get it from their parent
  • +
  • pom names begin Apache Tuscany SCA
  • +
  • Eclipse projects are generated for all built modules using mvn eclipse:eclipse
  • +
+ + +

Adding a new module and not ready to integrate?

+ +

'work-in-progress' modules can be worked on in the same source tree and yet not break the top-down build. You can do this by not listing your module(s) in java/sca/modules/pom.xml.

+ +

Development Hints

+ +

Importing existing Tuscany SCA projects into Eclipse

+ +

This section has talked about how to get set up ready to develop Tuscany. If you need to import existing samples into Eclipse to work on there are some instructions here. These are instructions for 1.x but should work OK on 2.x.

+ +

Generating Eclipse WTP Web Projects for Webapp samples

+ +

If you're using Eclipse WTP and want to get WTP Web Projects generated
+for our Webapp samples you can simply pass a -Dwtpversion=1.5 option to
+the usual mvn eclipse:eclipse command, like this:
+mvn -Dwtpversion=1.5 -Peclipse eclipse:eclipse

+ +

The magic -Dwtpversion=1.5 option will add the WTP Web project nature to
+all the Eclipse projects with <packaging>war</packaging> in their Maven
+pom.xml. You'll then be able to add these projects to a WTP Tomcat or
+Geronimo Server configuration, to publish and run them straight from
+your Eclipse workspace.

+ +

Generating Dependencies for Ant in Samples

+ +

Figuring out the package dependency to include in Ant build.xml can be a pain. Here is a quick
+script which works in Linux environment for war files.

+
+
+jar tvf sample-feed-aggregator-webapp.war | grep .jar | awk '{ printf "%s\n", $8 }' |
+   sed -e "s/WEB-INF\/lib\///" | awk '{ printf "<include name=\"%s\"/>\n", $1 }' | grep -v tuscany
+
+
+
+ + + + + + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-extensions-guide.html b/site/trunk/site-publish/documentation-2x/sca-java-extensions-guide.html new file mode 100644 index 0000000000..018b89bf96 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-extensions-guide.html @@ -0,0 +1,432 @@ + + + + + + + + + + + + + + + SCA Java Extensions Guide : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Tuscany Extensions

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Release Introduced OASIS Compliance Status Description
implementation.composite 2.0-M1 Stable Support for SCA components implemented with SCA composites (Assembly spec)
implementation.java 2.0-M1 80% pass Stable Support for SCA components implemented with Java classes (Java CI spec)
implementation.spring 2.0-M3   ? Support for Spring Framework
implementation.bpel 2.0-M1   Stable Support for components implemented in BPEL
implementation.osgi   N/A Stable Support for osgi
implementation.widget   N/A Stable  
implementation.web 2.0-M4
  ? Support JEE web apps as implementation types
binding.sca 2.0-M1 Stable SCA default binding (Assembly spec)
binding.ws 2.0-M1   Stable SOAP/HTTP web services
binding.rmi 2.0-M1   Stable The Java RMI protocol
binding.jms 2.0-M4
  ? Asynchronous JMS messaging
binding.ejb 2.0-M4
  ? EJB Binding
binding.http 2.0-M4   ? Supports binding of methods over standard Hyper Text Transfer Protocol (HTTP), allowing you to create, retrieve, update, delete items. Also supports conditional creates, retrieves, updates, and deletes using the ETag and LastModified caching protocol described in HTTP.
binding.rest ?
  Work in Progress
Supports RESTFull services
binding.jsonp ? N/A ? The JSON protocol over HTTP
binding.jsonrpc 2.0-M4 N/A Stable The JSON-RPC protocol
binding.atom 2.0-M4 N/A Stable supports Atom-publishing protocol, allowing you to create, retrieve, update, delete Atom entries
binding.comet 2.0-Beta1 N/A Waiting for community feedback
Support for communication between browser client and SCA components via Comet techniques
binding.websocket 2.0-Beta3 N/A Waiting for community feedback
Support for communication between browser client and SCA components via websockets
databinding-axiom ? N/A Stable Support for AXIOM data binding
databinding-jaxb ? N/A Stable Support for JAXB data binding
databinding-json 2.0-M4
N/A Stable Support for JSON data binding
interface-java 2.0-M1   Stable Interfaces described with java interfaces
interface.wsdl 2.0-M1   Stable Interfaces described with WSDL definitions
http-jetty 2.0-M2
N/A Stable The integration between Tuscany and the Jetty web container
definitions.xml 2.0-M4
  Work in Progress Defined intents, policy sets and binding defaults
+
+ + +

Non-extension OASIS specification support

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Release Introduced OASIS Compliance Status Description
Assembly 2.0-M1 Stable SCA Assembly specification
Java CAA 2.0-M1 Stable SCA Java Common Annotations and APIs specification
Policy 2.0-M1 50% passing In pogress SCA Policy specification
+
+ +
+ +
+ Children + + Show Children + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationbpel.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationbpel.html new file mode 100644 index 0000000000..1d824bb1af --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationbpel.html @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + SCA Java implementation.bpel : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.bpel + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.bpel + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Introduction

+ +

This is a initial WS-BPEL component implementation that allows SCA runtime to invoke WS-BPEL executable processes in a SCA composition.
+We are still working to finalize the Reference support, to allow your BPEL process to have partnerLinks pointing to SCA components.

+ +

As for creating a SCA component, below is an sample SCDL

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	targetNamespace="http://bpel"
+    xmlns:hns="http://tuscany.apache.org/implementation/bpel/example/helloworld"
+    name="bpel">
+    
+    <component name="BPELHelloWorldComponent">
+        <implementation.bpel process="hns:HelloWorld"/>
+    </component>
+
+</composite>
+
+
+ + +

WS-BPEL Engine

+ +

As for a WS-BPEL engine, we are using Apache ODE. In order to properly deploy a WS-BPEL process in ODE, a deployment descriptor like the one below should be suplied with your application :

+ +
+
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+	xmlns:tns="http://tuscany.apache.org/implementation/bpel/example/helloworld" 
+	xmlns:wns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl">
+
+
+	<process name="tns:HelloWorld">
+		<active>true</active>
+		<provide partnerLink="helloPartnerLink">
+			<service name="wns:HelloService" port="HelloPort"/>
+		</provide>
+	</process>
+</deploy>
+
+
+ +

For more information on these deployment descriptors, see documentation on Deploying a process in ODE

+ + +

References

+ +

SCA & BPEL white paper

+ +

SCA Client Implementation Model for BPEL v1.00

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationjava.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationjava.html new file mode 100644 index 0000000000..5bf0190806 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationjava.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + SCA Java implementation.java : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.java + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.java + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

<implementation.java>

+ + +

The Tuscany Java SCA runtime supports components implemented in Java by using the <implementation.java> SCDL extension.

+ +

The Java component implementation SCDL has the following format:

+ +
+
+   <implementation.java class="NCName" />
+
+
+ +

Where the class attribute is the fully qualified name of the Java class of the implementation.

+ +

The Java component implementtaion is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published specifications document.

+ +

some examples

+ +

This example shows a simple composite with a component that uses <implemantation.java>:

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+    targetNamespace="http://sample"
+    xmlns:sample="http://sample"
+    name="SampleComposite">
+
+    <component name="SampleComponent">
+       <implementation.java class="sample.SampleImpl"/>
+    </component>
+    
+</composite>
+
+
+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationosgi.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationosgi.html new file mode 100644 index 0000000000..2d5f0d8b44 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationosgi.html @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + SCA Java implementation.osgi : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.osgi + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.osgi + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +

<implementation.osgi>

+ +

Tuscany enables OSGi bundles to be used as the implementation of SCA components by using the <implementation.osgi/> SCDL extension. OSGi services registered in the OSGi service registry either using OSGi declarative services or  through the OSGi procedural services API can be exposed as services of the SCA component.

+ +

The OSGi component implementation SCDL has the following format:

+
+
+<implementation.osgi
+        bundleSymbolicName=""
+        [bundleVersion=""]
+        [classes=""]
+        [imports=""]>
+    <properties service="">...</properties>*
+    <properties reference="">...</properties>*
+    <properties serviceCallback="">...</properties>*
+    <properties referenceCallback="">...</properties>*
+</implementation.osgi>
+
+
+

The bundle is identified by its symbolic name, which is used to locate the bundle in the SCA contribution. The version of the bundle can be optionally specified if multiple versions of the bundle are present in the contribution.

+ +

The list of classes in the bundle which contain SCA annotations that should be processed by the SCA runtime can be specified in the classes attribute of <implementation.osgi/>. If this list is not provided, only the implementation classes of service instances will be scanned for SCA annotations. A list of dependent bundles can also be specified in the imports attribute. If provided, these bundles are installed and started before the implementation bundle.

+ +

OSGi services registered in the OSGi registry can have properties associated with the service registration. These properties can be used to lookup services in the registry. The properties of services, references and callbacks associated with OSGi services can be optionally specified. These will be used to create the filter for locating these services in the OSGi registry. 

+ +

A component type file should be provided for SCA components using an OSGi bundle as its implementation. This file should have the same base name and location as the bundle.

+ +

Example:

+ +

This example shows a simple composite with two components that use <implementation.osgi/>:

+
+
+<composite xmlns=http://www.osoa.org/xmlns/sca/1.0
+    targetNamespace=http://helloworld
+    name="HelloWorld">
+
+    <component name="HelloWorldClient">
+        <implementation.osgi xmlns=http://tuscany.apache.org/xmlns/sca/1.0
+             bundleSymbolicName="helloworld.HelloWorldClient"                   
+             bundleVersion="1.0.0">
+            <properties reference="helloWorldService">
+                <property name="language">English</property>
+            </properties>
+        </implementation.osgi>
+        <reference name="helloWorldService" target="HelloWorldService"/>
+   </component>
+   <component name="HelloWorldService">
+        <implementation.osgi xmlns=http://tuscany.apache.org/xmlns/sca/1.0
+             bundleSymbolicName="helloworld.HelloWorldService"                         
+             bundleVersion="1.0.0">
+            <properties service="HelloWorldService">
+                <property name="language">English</property>
+            </properties>
+        </implementation.osgi>
+      </component>
+</composite>
+
+
+

This example shows two components which use OSGi implementation. Each component implementation is an OSGi bundle, and one of the services from each bundle is exposed through SCA. The bundles are identified using their symbolic name and version which are values of the manifest attributes Bundle-SymbolicName and Bundle-Version respectively in the bundle jar files. The bundle jar files can either be a contribution in the SCA domain, or contained in a contribution in the SCA domain.

+ +

The properties specified for the reference of HelloWorldClient are used to lookup HelloWorldService in the OSGi registry. These properties should match the properties specified for the service of HelloWorldService. 

+ +

The OSGi bundles should register the services exposed through SCA when the bundle is activated. Services are registered using standard OSGi service registration mechanism. References should be looked up in the OSGi service registry using registry lookup. SCA runtime does not perform reference injection for OSGi-based component implementation. Reference lookup should always use the service registered with the highest ranking to ensure that SCA wiring and scope are maintained. When OSGi declarative services are used, service registration and reference binding are performed by the OSGi declarative services runtime. References from components using <implementation.osgi/> can be wired to non-OSGi services, and non-OSGi components can access OSGi services. For example, either of the two components in this example can use <implementation.java/> as their implementation.

+ +

Default scope for OSGi-based components is COMPOSITE. For scopes other than composite scope, a service factory should be registered in the OSGi service registry. Service factories should also be used for OSGi services which are used in multiple SCA components with different component properties.

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.data/Spring Tuscany.pptx b/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.data/Spring Tuscany.pptx new file mode 100644 index 0000000000..ce80319c20 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.data/Spring Tuscany.pptx differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.html new file mode 100644 index 0000000000..50948d1cf4 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.html @@ -0,0 +1,461 @@ + + + + + + + + + + + + + + + SCA Java implementation.spring : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.spring + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.spring + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

<implementation.spring>

+ +

The Tuscany Java SCA runtime supports components implemented with Spring Framework by using the <implementation.spring> SCDL extension.

+ +

The Spring specification defines how Spring and SCA work with one another. The Spring Component implementation is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published specifications document.

+ +

In Spring Framework an ApplicationContext is the main interface to the Spring IoC container. It is used to look up objects. It can be viewed as the Java object representation of the application-Context.xml file that contains the bean definitions.

+ +

The integration with Spring will be at the SCA Composite level, where a Spring application context provides a complete composite, exposing services and using references via SCA. This means that a Spring application context defines the internal structure of a SCA composite implementation.

+ +

Tuscany uses Spring Framework 3.0.x-RELEASE (requires Java 1.4+)

+ +

How Spring Application Context is used as SCA Composite Implementation?

+ +
    +
  • A Spring Application Context is used as an implementation within an SCA composite component.
  • +
  • A component that uses Spring for an implementation can wire SCA services and references without introducing SCA metadata into the Spring configuration.
    +The Spring context knows very little about the SCA environment.
  • +
  • SCA runtime enforces SCA policies and Spring Application Context is unaware of it.
  • +
  • It should be possible to generate an SCA Composite from any Spring context and use that composite within an SCA assembly.
    +This feature is under review by the OASIS Specs Team, yet to be implemented in Tuscany
  • +
+ + +

How to Use Spring Component Implementation?

+ +

The Spring component implementation SCDL has the following format:

+ +
+
   <implementation.spring location="targetURI" />
+
+
+ +

Where the location attribute of that element specifies the target uri of an archive file or directory or the fully qualified path that contains the Spring application context files.

+ +

An example of all the three ways of specifying the target uri in the location attribute is shown below

+ +

a) Specifying Fully Qualified Path:

+
+
   <implementation.spring location="./spring/application-context.xml" />
+
+
+ +

b) Specifying a Directory:

+
+
   <implementation.spring location="./spring" />
+
+
+ +

Here the target uri specifies the resource as a directory named "spring", where all the spring related files are available.

+ +

c) Specifying an Archive file:

+
+
   <implementation.spring location="./spring.jar" />
+
+
+ +

Here the target uri specifies the resource as an archive file name "spring.jar", where all the spring related files are available.

+ +

In case of b) and c), If the resource identified by the location attribute is an archive file then the file META-INF/MANIFEST.MF is read from the archive. If the location URI identifies a directory, then META-INF/MANIFEST.MF must exist underneath that directory.

+ +

If the manifest file contains a header "Spring-Context" of the format: Spring-Context ::= path ( ';' path )*

+ +

Where path is a relative path with respect to the location URI, then the set of paths specified in the header identify the context configuration files. If there is no MANIFEST.MF file or no Spring-Context header within that file, then the default behavior is to build an application context using application-context.xml file in the META-INF/spring directory.

+ +

How Spring Application Context is Aware of Beans used in SCA composition?

+ +

Your existing Spring Application context should define the http://www.springframework.org/schema/sca namespace in order to make the Spring aware of the SCA related beans. This is shown below.

+ +
+
<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:sca="http://www.springframework.org/schema/sca"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+       http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
+
+    <sca:service name="StockQuoteService"
+        type="bigbank.stockquote.StockQuoteService" target="StockQuoteServiceBean"/>
+
+    <bean id="StockQuoteServiceBean" class="bigbank.stockquote.StockQuoteImpl">
+    </bean>
+</beans>
+
+
+ + +

Handling multiple Spring Application Contexts

+ +

Tuscany supports the following configurations to handle multiple Spring Application Context XML files.

+ +

Using <import> Element:

+ +

Each import element points to an application context xml file.

+
+
<beans>
+    <import resource="services.xml"/>
+    <import resource="resources/messageSource.xml"/>
+
+    <import resource="/resources/themeSource.xml"/>
+
+    <bean id="bean1" class="..."/>
+    <bean id="bean2" class="..."/>
+</beans>
+
+
+ +

Using ClassPathXmlApplicationContext Bean Definition:

+ +

Each list value points to an application context xml file.

+
+
<bean id="beanRefFactory" class="org.springframework.context.support.ClassPathXmlApplicationContext">
+    <constructor-arg>
+        <list>
+            <value>services.xml</value>
+            <value>resources/messageSource.xml</value>
+        </list>
+    </constructor-arg>
+</bean>
+
+
+ +

Some Examples:

+ +

Spring BigBank Sample

+ +

The spring-bigbank sample demonstrates most of the functionality that is specified in the specifications .

+ +

See the simple-bigbank-spring sample for a complete example.

+ +

Direct use of SCA references within a Spring configuration

+ +

See the spring-bigbank-calculator sample for a complete example of using direct SCA references within Spring configuration.

+ +

The properties like addService, subtractService, multiplyService and divideService defined in the Spring configuration as shown below

+ +
+
<beans>
+
+    <sca:service name="CalculatorService"
+        type="bigbank.calculator.CalculatorService" target="CalculatorServiceBean"/>
+
+    <bean id="CalculatorServiceBean" class="bigbank.calculator.CalculatorServiceImpl">
+        <!-- Here are some implicit references - a property with a ref not satisifed within the
+         * Spring application context.
+         -->
+        <property name="addService" ref="addService"/>
+        <property name="subtractService" ref="subtractService"/>
+        <property name="multiplyService" ref="multiplyService"/>
+        <property name="divideService" ref="divideService"/>
+    </bean>
+
+</beans>
+
+
+ +

are the direct representation of the SCA references defined in the composite file.

+ +

Explicit declaration of SCA related beans inside a Spring Application Context

+ +

It is also possible to explicitly declare SCA-related beans inside a Spring configuration to proxy SCA references. The primary reason you may do this is to enable the Spring container to decorate the bean (using Spring AOP for example).

+ +

The properties checkingAccountService, calculatorService and stockQuoteService defined in the Spring configuration as shown below

+ +
+
<beans>
+   <bean id="AccountServiceBean" class="bigbank.account.AccountServiceImpl">
+        <property name="calculatorService" ref="calculatorService"/>
+        <property name="stockQuoteService" ref="stockQuoteService"/>
+        <property name="checkingAccountService" ref="checkingAccountService"/>
+
+        <!-- Here are some implicit references & properties - a property with a ref not satisifed
+        * within the Spring application context.
+         -->
+        <property name="savingsAccountService" ref="savingsAccountService"/>
+        <property name="stockAccountService" ref="stockAccountService"/>
+        <property name="currency" value="EURO"/>
+    </bean>
+
+    <sca:reference name="checkingAccountService" type="bigbank.account.checking.CheckingAccountService"/>
+
+    <sca:reference name="calculatorService" type="bigbank.calculator.CalculatorService"/>
+
+    <sca:reference name="stockQuoteService" type="bigbank.stockquote.StockQuoteService"/>
+</beans>
+
+
+ +

can be declared explicit as SCA beans in Spring Application Context using the <sca:reference> element.

+ +

See the simple-bigbank-spring sample for a complete example of using explicit declaration of SCA related beans.

+ +

Using SCA Bindings for Spring Implementation

+ +

We know that a component that uses Spring for an implementation can wire SCA services and references without introducing SCA metadata into the Spring configuration. The Spring context knows very little about the SCA environment. Hence the SpringComponent implementation remains the same as shown from some of the examples above but different bindings are chosen at the SCA Composite level as shown below.

+ +

All kind of bindings supported by SCA can be used for Spring Implementation as the bindings are independent of Spring context. Few examples can be seen below.

+ +
Working with SCA WebServices Binding
+ +

Declaring Service

+ +
+
<composite name="StockQuote">
+
+    <service name="StockQuoteService" promote="StockQuoteServiceComponent">
+        <interface.java interface="bigbank.stockquote.StockQuoteService"/>
+        <binding.ws uri="http://localhost:8081/services/StockQuoteWebService"/>
+    </service>
+
+    <component name="StockQuoteServiceComponent">
+        <implementation.spring location="META-INF/spring/StockQuoteService-context.xml"/>
+    </component>
+
+</composite>
+
+
+ +

Declaring Reference in a component which consumes the Service declared above

+ +
+
<component name="AccountServiceComponent">
+    <implementation.spring location="spring-context/Account-spring-context.xml"/>
+
+    <reference name="stockQuoteService">
+       <binding.ws uri="http://localhost:8081/services/StockQuoteWebService"/>
+    </reference>
+</component>
+
+
+ +

See the spring-bigbank-stockquote sample for a complete example of using SCA Web Service binding.

+ +
Working with SCA RMI Binding
+ +

See the spring-bigbank-calculator sample for a complete example of using SCA RMI binding.

+ +

Access the Spring-ApplicationContext from everywhere in your Application

+ +

Tuscany creates an custom Application context with an implementation logic for all SCA related beans like <sca:service>, <sca:reference> and <sca:properties> available in the Spring Application Context.

+ +

To access the application context in your application we recommend to use the suggested approach in this article.
+http://blog.jdevelop.eu/2008/07/06/access-the-spring-applicationcontext-from-everywhere-in-your-application/

+ + +

Non-Supported Features in Tuscany

+ +

Currently Tuscany does not support implicit SCA references and properties for scenario 1 & 2 in spring context as shown below.

+ +
Scenario 1: Using implicit SCA References & Properties for Constructors
+
+
<constructor-arg><ref bean="mySCAService1"/></constructor-arg>
+<constructor-arg><ref bean="mySCAService2"/></constructor-arg>
+
+
+ +

In the above scenario, particularly in cases where the spring bean has defined only one constructor, implicit references / properties can be supported when the contructor-arg element specifies the type of the SCA reference/property that its trying to consume by specifying a type attribute in the contructor-arg OR when the appropriate index attribute is specified in the constructor-arg element.

+ +

In cases where the spring bean has defined multiple contructors, its mandatory that all the SCA references / properties used by the constructors should be defined explicitly. And when the constructor-arg uses SCA reference/property within collections, those should be defined explicitly.

+ +
Scenario 2: Using implicit SCA References & Properties in List, Map and Set of bean properties.
+ +

Using implicit SCA references and properties within collection as shown in the below code sample will not be supported by Tuscany. Instead we recommed to use explicit SCA references/properties in such cases.

+ +
+
<bean id="moreComplexObject" class="example.ComplexObject">
+  <!-- results in a setSomeList(java.util.List) call -->
+  <property name="someList">
+    <list>
+        <value>a list element followed by a reference</value>
+        <ref bean="mySCAService1" />
+    </list>
+  </property>
+  <!-- results in a setSomeMap(java.util.Map) call -->
+  <property name="someMap">
+    <map>
+        <entry>
+            <key>
+                <value>an entry</value>
+            </key>
+            <value>just some string</value>
+        </entry>
+        <entry>
+            <key>
+                <value>a ref</value>
+            </key>
+            <ref bean="mySCAService2" />
+        </entry>
+    </map>
+  </property>
+  <!-- results in a setSomeSet(java.util.Set) call -->
+  <property name="someSet">
+    <set>
+        <value>just some string</value>
+        <ref bean="mySCAService3" />
+    </set>
+  </property>
+</bean>
+
+
+ +
Scenario 3: Exposing SCA Service from Spring Bean that implements multiple interfaces.
+ +

Raised as Specification Issue: http://www.osoa.org/jira/browse/JAVA-59

+ + +

Integration with Spring for Web Applications (including Spring MVC)

+ + + +

Presentation

+ + +

Spring SCA Namespace schema

+ +

The spring-sca.xsd can be found at the following location: http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd

+ + +

References

+ +

Spring Framework - http://static.springframework.org/spring/docs/2.5.5/reference/index.html

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationweb.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationweb.html new file mode 100644 index 0000000000..4c4911c090 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationweb.html @@ -0,0 +1,364 @@ + + + + + + + + + + + + + + + SCA Java implementation.web : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.web + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.web + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +

<implementation.web>

+ +

The Tuscany Java SCA runtime supports components implemented as JEE web modules by using the <implementation.web> SCDL extension. Implementation.web is one of the SCA extensions being formalized in the OASIS Open Composite Services Architecture with a published specification document.

+ +

The web component implementation SCDL has the following format:

+ +
+
+   <implementation.web web-uri="<module name>" />
+
+
+ +

Implementation.web can be used by components such as Servlets, JSPs, and Web 2.0 style html pages. How it works depends on the way the Tuscany runtime is being used.

+ +

Using implementation.web with Servlets, Filters, and Event listeners

+ +

JEE Servlets, Filters, and Event listeners may acquire references to the services wired to a component which use implementation.web as shown in the following code snippets.

+ +
+
+<component name="WebClient">
+   <implementation.web web-uri=""/>
+   <reference name="service" target="HelloworldService"/>
+</component>
+
+
+ +

Then when using a JEE container with SCA integration Servlets, Filters, and Event listeners can use annotations to acquire references to the services wired to the component as shown in the following Servlet code snippet (note the Servlet field name 'service' matches the reference name in the SCDL):

+ +
+
+public class HelloworldServlet extends HttpServlet {
+
+    @Reference
+    protected HelloworldService service;
+
+  . . .
+}
+
+
+ +

When the container does not have SCA integration then injection via annotations does not work, so to work around this the services need to be manually got from the ComponentContext which may be obtained from the application context. This is shown in the following code snippet:

+ +
+
+public class HelloworldServlet extends HttpServlet {
+
+    public void init(ServletConfig config) {
+       ComponentContext context = (ComponentContext)config.getServletContext().getAttribute("org.osoa.sca.ComponentContext");
+       HelloworldService service = context .getService(HelloworldService.class, "service");
+       . . .
+    }
+
+  . . .
+}
+
+
+ +

See the helloworld-servlet sample for the complete code of the above Servlet example.

+ +

Using implementation.web with JSPs

+ +

A JSP tag library is available to expose SCA components in JSP pages. To use SCA references within a JSP use a taglib to include the SCA tags and define the reference field with the reference tag.

+ +
+
+<component name="WebClient">
+   <implementation.web web-uri=""/>
+   <reference name="service" target="HelloworldService"/>
+</component>
+
+
+ +

In the .jsp file:

+
+
+<%@ taglib uri="http://www.osoa.org/sca/sca_jsp.tld" prefix="sca" %>
+<sca:reference name="service" type="sample.HelloworldService" />
+
+<html>
+  <body >
+    <%= service.sayHello("world") %>
+  </body>
+</html>
+
+
+ +

See the helloworld-jsp sample for the complete code of the above JSP example.

+ +

Using implementation.web with Web 2.0 style browser clients

+ +

Web 2.0 style pages can invoke SCA services by making RPC calls from the remote browser client to the service-side SCA service. To do this the HTML page includes Javascript code to import the SCA ComponentContext and then gets service proxys from that ComponentContext. The org.osoa.sca.componentContext.js script is generated by Tuscany when a component uses implementation.web.

+ +

In the SCDL the reference needs to specify one of the Tuscany Web2.0 bindings such as binding.jsonrpc or binding.dwr.
+(TODO: could this be avoided - something like make binding.jsonrpc the default sca binding for web2.0 clients?)

+ +
+
+<component name="WebClient">
+   <implementation.web web-uri=""/>
+   <reference name="service" target="HelloworldService">
+      <tuscany:binding.jsonrpc />
+   </reference>
+</component>
+
+
+ +

In the html page:

+
+
+<html>
+  <head>
+
+    <script type="text/javascript" src="org.osoa.sca.componentContext.js"></script>
+
+    <script language="JavaScript">
+    
+       function callSayHello() {
+          componentContext.getService("service").sayHello(
+             document.getElementById('name').value, 
+             function(reply) {
+                document.getElementById('result').innerHTML=reply;
+             });
+       }
+
+    </script>
+
+  </head>
+  <body >
+
+    . . . 
+
+     <input type="text" id="name" width="10">
+
+     <button name="submit" onclick="callSayHello()">Say hello</button>
+
+     <div id='result'></div>
+
+    . . . 
+
+  </body>
+</html>
+
+
+ +

See the helloworld-web sample for the complete code of the above example.

+ +

The following on Web 2.0 callbacks is not yet fully implemented, describing here to encourage feedback

+ +

Tuscany Web 2.0 clients using implementation.web support SCA asynchronous callbacks using what is known as Comet or Reverse Ajax. The only Tuscany binding that currently supports this in binding.dwr.

+ +

The following shows the previous sample changed to use callbacks to receive the replies. A callback binding is added to the reference in the SCDL and the callback function is defined as a seperate Javascript function defined by the client and attached to the service proxy object.

+ +
+
+<component name="WebClient">
+    <implementation.web web-uri=""/>
+    <reference name="service" target="HelloworldService">
+        <tuscany:binding.dwr />
+        <callback>
+            <tuscany:binding.dwr />
+        </callback>
+    </reference>
+</component>
+
+
+ +

In the html page:

+
+
+<html>
+  <head>
+
+    <script type="text/javascript" src="org.osoa.sca.componentContext.js"></script>
+
+    <script language="JavaScript">
+
+       componentContext.getService("service").sayHelloCallback = 
+          function(reply) {
+             document.getElementById('result').innerHTML=reply;
+          };
+    
+       function callSayHello() {
+          componentContext.getService("service").sayHello(document.getElementById('name').value);
+       }
+
+    </script>
+
+  </head>
+  <body >
+
+    . . . 
+
+     <input type="text" id="name" width="10">
+
+     <button name="submit" onclick="callSayHello()">Say hello</button>
+
+     <div id='result'></div>
+
+    . . . 
+
+  </body>
+</html>
+
+
+ +

See the helloworld-web-callback sample for the complete code of the above example.

+ +

Using implementation.web with the Tuscany runtime embedded within a webapp

+ +

This is the style all the current Tuscany webapp samples use. When using implementation.web with the Tuscany runtime embedded within a webapp the implementation.web web-uri attribute is ignored.

+ +

Using implementation.web with the Tuscany runtime integrated into a JEE server such as Tomcat or Geronimo

+ +

The only code that is currently working is some prototype code in the Tuscany runtime-tomcat module that supports injecting references into Servlets, Filters and Event listeners using the @Reference annotation.

+ +

Using implementation.web with the Tuscany standalone runtime

+ +

Nothing implemented yet

+ +

Using implementation.web with the Tuscany distributed domain runtime

+ +

Nothing implemented yet

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationwidget.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationwidget.html new file mode 100644 index 0000000000..58e98f3d3b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationwidget.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + SCA Java implementation.widget : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.widget + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java implementation.widget + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Introduction

+ +

The Tuscany Widget Implementation extends the SCA programing model to HTML and/or Web 2.0 client applications.

+ + +

Using Implementation.Widget to model your Web 2.0 component

+ +

This component type allows you to model your HTML and/or Web 2.0 as an SCA component, the implementation artifact would be html resource that represents the application, and you can define SCA References, that would be wired to server side services.

+ +
+
+<composite	xmlns="http://www.osoa.org/xmlns/sca/1.0"
+		xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+		targetNamespace="http://store"			
+		name="store">
+		
+       <component name="store">
+           <t:implementation.widget location="contents/store.html"/>
+           <service name="Widget">
+               <t:binding.http/> 
+           </service>
+	   <reference name="catalog" target="Catalog">
+               <t:binding.jsonrpc/>
+	   </reference>
+	   <reference name="shoppingCart" target="ShoppingCart">
+	       <t:binding.atom/>
+	   </reference>
+        </component>
+    
+        .....
+</composite>
+
+
+ + +

Defining references in HTML resources

+ +

The widget implementation introduces SCA annotations to JavaScript code using the syntax below. These references will get properly introspected by the implementation.widget and wired to the proper server side services.

+ +
+
+//@Reference
+var catalog = new Reference("catalog");
+
+//@Reference
+var shoppingCart = new Reference("shoppingCart");
+
+
+ + +

Including generated JavaScript client proxy

+ +

The client application will need to include a generated JavaScript that will contain the necessary client proxy used to access the server side services. The name of the generated JavaScript is the same as the HTML resource being specified as the implementation artifact.

+ + +
+
+<!-- one js include per sca component -->
+<script type="text/javascript" src="store.js"></script>
+
+
+ +

Supported binding types

+ +

Currently, you can define references to remote services using the following bindings :

+ + + +

References

+

http://incubator.apache.org/tuscany/getting-started-with-tuscany.html

+ + + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-interfacewsdl.html b/site/trunk/site-publish/documentation-2x/sca-java-interfacewsdl.html new file mode 100644 index 0000000000..7affdd61d2 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-interfacewsdl.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + SCA Java interface.wsdl : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java interface.wsdl + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Java Extensions Guide > SCA Java interface.wsdl + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +

<interface.wsdl>

+ +

The Tuscany Java SCA runtime supports interfaces that are described by Web Services Description Lanuage (WSDL) files. The files contain a description of the service interface, services, references, method requests and responses, and the data types. The implementation of this WSDL interface can be generated with the Java SDK tool wsimport. The wsimport tool generates a skeleton of the service interface, along with all associated request and response classes, and any complex data types passed on the interface. The user can augment the skeleton by putting implementation code in the approproate spot.

+ +

The following snippet shows how the WSDL interface and the Java implementation are used in an SCA composite file and publicised as a component.

+
+
+    <component name="OrderServiceComponent">
+        <implementation.java class="org.example.orderservice.OrderServiceImpl" />
+	    <service name="OrderService">
+	        <interface.wsdl interface="http://www.example.org/OrderService/#wsdl.interface(OrderService)" />
+	        <binding.ws uri="http://localhost:8085/OrderService"/>
+	    </service>
+    </component>
+
+
+ +

Examples

+ +

This example shows a component with its interface described via WSDL. The web service binding defaults are used so the endpoint of the Web service will be http://localhost:8085/OrderService. (Note that this full sample is available in Tuscany 1.x branch under the samples/holder-ws-service sample).

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	targetNamespace="http://orderservice"
+	xmlns:hw="http://orderservice"
+    name="orderws">
+
+    <component name="OrderServiceComponent">
+        <implementation.java class="org.example.orderservice.OrderServiceImpl" />
+	    <service name="OrderService">
+	        <interface.wsdl interface="http://www.example.org/OrderService/#wsdl.interface(OrderService)" />
+	        <binding.ws uri="http://localhost:8085/OrderService"/>
+	    </service>
+    </component>
+
+</composite>
+
+
+ +

WSDL files can be generated with many tools and development environment plugins. This snippet shows a portion of the WSDL file that describes the business service data types and the assoicated method calls and responses:

+
+
+    <wsdl:portType name="OrderService">
+        <wsdl:operation name="reviewOrder">
+            <wsdl:input message="tns:reviewOrderRequest"/>
+            <wsdl:output message="tns:reviewOrderResponse"/>
+        </wsdl:operation>
+    </wsdl:portType>
+    <wsdl:message name="reviewOrderRequest">
+        <wsdl:part element="tns:reviewOrder" name="myParameters"/>
+    </wsdl:message>
+    <wsdl:message name="reviewOrderResponse">
+        <wsdl:part element="tns:reviewOrderResponse" name="myResult"/>
+    </wsdl:message>
+    <wsdl:types>
+        <xsd:schema targetNamespace="http://www.example.org/OrderService/">
+            <xsd:complexType name="order">
+                <xsd:sequence>
+                    <xsd:element name="customerId" type="xsd:string"    minOccurs="0" />
+                    <xsd:element name="status" type="tns:status" minOccurs="0" />
+                    <xsd:element name="total" type="xsd:double" />
+                    <xsd:element name="orderId" type="xsd:int" />
+                </xsd:sequence>
+            </xsd:complexType>
+
+            <xsd:simpleType name="status">
+                <xsd:restriction base="xsd:string">
+                    <xsd:enumeration value="Created" />
+                    <xsd:enumeration value="Submitted" />
+                    <xsd:enumeration value="Approved" />
+                    <xsd:enumeration value="Rejected" />
+                </xsd:restriction>
+            </xsd:simpleType>
+
+            <xsd:element name="reviewOrder">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:element name="myData" type="tns:order"
+                            minOccurs="1" maxOccurs="1" />
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+            <xsd:element name="reviewOrderResponse">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:element name="myData" type="tns:order"
+                            minOccurs="1" maxOccurs="1" />
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+
+        </xsd:schema>
+    </wsdl:types>
+
+
+ +

The Java implementation for this web service can be generated with the Java SDK tool wsimport. Full documentation is in the Java SDK JavaDocs, but basically one specifies the source WSDL and the output directory for generated files.

+
+
+    wsimport -d orderservice -keep orderservice.wsdl
+
+
+ +

The generated implementation files can be augmented with code that operates on provided business objects.

+ +

Web Services Holder Pattern

+ +

A pattern known as the Web Services Holder Pattern is supported by Tuscany in the 1.5 and later releases. WSDL files support a parameter mode known as INOUT. The INOUT mode is used for service interface parameters that are passed into a business interface and returned
+on the same interface.

+ +

The advantages of the INOUT mode are:

+
    +
  • supports a well known pattern of parameter pass by reference. Normally SCA parameters are always passed by value.
  • +
  • saves instantiation and initialization for large or complex objects.
  • +
  • simplifies the signature of business interfaces
  • +
  • saves the user the cost of boxing and returning multiple return objects.
  • +
+ + +

The Holder pattern is created by the Java SDK wsimport tool whenever data type is both input and output to a given operation>

+
+
+      <xsd:element name="myOperation">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="myData" type="tns:myDataType" minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="myOperationResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="myData" type="tns:myDataType" minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+
+
+ +

The generated implemenation code contains annotations that mark the parameter data as an input output parameter. Also notice that the business object Order is passed in as a data type javax.xml.ws.Holder<Order>. This Holder class allows the input object to be returned as an output object, i.e. pass by reference.

+
+
+    @WebMethod(action = "http://www.example.org/OrderService/reviewOrder")
+    @RequestWrapper(localName = "reviewOrder", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrder")
+    @ResponseWrapper(localName = "reviewOrderResponse", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrderResponse")
+    public void reviewOrder(
+        @WebParam(name = "myData", targetNamespace = "", mode = WebParam.Mode.INOUT)
+        javax.xml.ws.Holder<Order> myData);
+
+
+ +

The Java implemenation code can access the wrapped Holder object, perform updates on the object, and leave it in place to return the object as shown here with the Java object Order :

+
+
+    @WebMethod(action = "http://www.example.org/OrderService/reviewOrder")
+    @RequestWrapper(localName = "reviewOrder", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrder")
+    @ResponseWrapper(localName = "reviewOrderResponse", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrderResponse")
+    public void reviewOrder(
+        @WebParam(name = "myData", targetNamespace = "", mode = WebParam.Mode.INOUT)
+        Holder<Order> myData) {
+        Order order = myData.value;
+        double total = order.getTotal();
+        if ( total < 100.0 ) {
+            order.setStatus( Status.APPROVED );
+        }
+    }
+
+
+ +

Tuscany, as of version 1.5 supports this input/output Holder pattern. At this point there is a limitation of only one in/out parameter, and this is only supported on methods with void return types.

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png new file mode 100644 index 0000000000..1f47db146a Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png.jpeg new file mode 100644 index 0000000000..e3bd257c92 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png new file mode 100644 index 0000000000..7369e70546 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png.jpeg new file mode 100644 index 0000000000..2d2ab7e8ea Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png new file mode 100644 index 0000000000..dc6e373373 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png.jpeg new file mode 100644 index 0000000000..e4630b0b5f Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png new file mode 100644 index 0000000000..3d4e2c9509 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png.jpeg new file mode 100644 index 0000000000..2f60b2b09d Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png new file mode 100644 index 0000000000..e55da1b706 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png.jpeg new file mode 100644 index 0000000000..71d7c00313 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png new file mode 100644 index 0000000000..3323bc1f3b Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png.jpeg new file mode 100644 index 0000000000..3e79ae12c6 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png new file mode 100644 index 0000000000..0f1251b821 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png.jpeg new file mode 100644 index 0000000000..1ba4b541e2 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png new file mode 100644 index 0000000000..7052a9be1d Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png.jpeg new file mode 100644 index 0000000000..ebc31a599d Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png new file mode 100644 index 0000000000..3b573540d3 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png.jpeg new file mode 100644 index 0000000000..b25911389c Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png new file mode 100644 index 0000000000..913361a706 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png.jpeg new file mode 100644 index 0000000000..b44bc4c7d8 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png new file mode 100644 index 0000000000..91950718ad Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png.jpeg new file mode 100644 index 0000000000..55b08faa09 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png new file mode 100644 index 0000000000..b495ada823 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png.jpeg new file mode 100644 index 0000000000..49bb3d22a0 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png new file mode 100644 index 0000000000..bd6128d209 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png.jpeg new file mode 100644 index 0000000000..b4a58af954 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.html b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.html new file mode 100644 index 0000000000..9a2dc55c16 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.html @@ -0,0 +1,833 @@ + + + + + + + + + + + + + + + SCA Java Runtime Overview : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > SCA Java Runtime Overview + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > SCA Java Runtime Overview + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Software Organization

+

Source Code Locations

+

If you take a Tuscany SCA Java source distribution or look in the Tuscany subversion repository (http://svn.apache.org/repos/asf/tuscany/java/sca/) you'll see the code layed out as follows:

+ +
+
+BUILDING
+CHANGES
+LICENSE
+NOTICE
+README
+RELEASE_NOTES
+
+distribution           - the code that defines and build Tuscany distributions
+features               - Maven projects that collect together Tuscany modules 
+maven         
+  archetypes           - Maven archetypes for creating Tuscany project templates
+  maven-tuscany-plugin - ???
+modules                - the source code for the runtime and the SCA extensions
+samples                - project samples
+testing
+  itest                - project integration tests
+  compliance-tests     - OASIS compliance tests
+pom.xml  
+
+
+ +

There is some related source code that's worth mentioning up front. Firstly the project Maven build relies on a set of Maven plugins that have been written specifically for Tuscany. They can also be found in the Tuscany subversion repository (http://svn.apache.org/repos/asf/tuscany/maven-plugins/trunk/) and are as follows:

+ +
+
+maven-bundle-plugin     - Creates Tuscany OSGi bundles based on the Tuscany modules and their dependencies
+                          also generates eclipse PDE projects for Tuscany modules
+maven-eclipse-compiler  - Compiles using the Eclipse compiler and performs OSGi validation
+maven-java2wsdl-plugin  - TBD
+maven-osgi-junit        - Runs Junit tests in an OSGi environment
+maven-tuscany-plugin    - TBD
+maven-wsdl2java-plugin  - TBD
+
+
+ +

Secondly there are a set of tests that the OASIS SCA specifications define called otests. These test the Tuscany SCA runtime for compliance with the specifications. The tests themselves are stored in the OASIS subversion system (http://tools.oasis-open.org/version-control/browse/). Tuscany has a set of modules that retrieve these tests automatically and configure the Tuscany environment to run them (http://svn.apache.org/repos/asf/tuscany/otest/) as follows:

+ +
+
+README
+build.xml                    - Ant utility script
+pom.xml
+sca-assembly                 - Generated automatically by svn externals when you check this directory out
+sca-java-caa                 - Generated automatically by svn externals when you check this directory out
+sca-java-ci                  - Generated automatically by svn externals when you check this directory out
+sca-policy                   - Generated automatically by svn externals when you check this directory out
+tuscany-java-caa-test-runner - Java Common Annotations and APIs test runner
+tuscany-java-ci-test-runner  - Java Component Implementation test runner
+tuscany-policy-test-runner   - Policy test runner
+tuscany-test-runner          - Assembly test runner
+
+
+ +

SCA Java Modules

+

All of the functional code in Tuscany Java SCA can be found under the modules directory. There are a lot of sub-directories here but they basically fall into one of two categories, core function or extensions. We are using the term extension here in the sense that the SCA Assembly specification talks about and extension model You always have to have the core functions but most of the extensions are optional (we say most here because without some of the basic extensions the runtime won't do anything) Finding extension modules is easy. Modules that start with the following words are extensions.

+ +
+
+binding
+databinding
+implementation
+interface
+policy
+
+
+ +

As you can see SCA extensions relate to the extensible parts of the SCA composite file. For example, if you want to use <binding.jms/> in you SCA composite files then you need to include the Tuscany modules for this extension in you installation. In this case that would mean the modules binding-jms and binding-jms-runtime.

+ +

All of the other modules in the modules directory are core modules and are generally required to be present in you Tuscany runtime installation. The use of the word "generally" here sounds a bit vague. This is because the Tuscany runtime itself is based on an extensibility mechanism which means that many parts of the runtime (as well as the SCA extensions) are pluggable. In this way, for example, different hosting environments can be supported. Well talk about runtime extensibility further down this article but for the time being consider all core modules to be mandatory.

+ +

Runtime Building Blocks

+ +

As you may have realized the Tuscany SCA Java runtime is just a Java program that, once started listens for incoming messages (via SCA component services) and, sometimes responds with outgoing messages (via SCA component references).

+ +

+ +

The runtime then provides the context within which SCA composite applications run. If we crack open the Tuscany Runtime box we see the following structure.

+ +

+ +

We'll take a high level look at these different blocks in turn starting with Core.

+ +

Tuscany Core

+

The Tuscany core is made up of several modules that provide basic runtime and extensibility support to the extensions that provide the real SCA functions. If you look in the modules directory of a Tuscany distribtuion (2.0-M4 at the time of writing - this list may change in subsequent releases) the modules that make up the Tuscany core are as follows:

+ +
+
+assembly                - The in-memory model of an OASIS SCA composite application (sometimes called an assembly)
+assembly-xml            - The Tuscany processors that translate to and from XML and the in-memory model
+assembly-xsd            - The schema used to validate the contents of various SCA files, e.g. the composite file
+builder                 - Process the in-memory model to build a complete SCA application representation
+common-java             - General Java utilities
+common-xml              - General XML utilities
+contribution            - Read and process SCA contributions
+core                    - The core Tuscany SCA Java runtime functions
+core-databinding        - The core databinding functions
+core-spi                - The Java interfaces that extension developers use to create and register extensions
+databinding             - Builds on the core databinding functions to provide features common to all databindings???
+deployment              - Loads the runtime and orchestrates the loading of SCA contributions 
+extensibility           - Reads META-INF/services files and manages Tuscany extensibility
+extensibility-equinox   - Manages Tuscany extensibility in an OSGi environment
+host-http               - Base interfaces for providing integration with a servlet container
+interface-java          - Java interface model and instrospection
+interface-java-jaxws    - Process JAX-WS annotations from a Java interface
+interface-wsdl          - WSDL interface model 
+launcher                - Command line Tuscany runtime launcher
+monitor                 - Collects errors as they occur in the Tuscany runtime
+node-api                - API for accessing an embedded Tuscany node (A node loads/runs contributions)
+node-impl               - The JSE implementation for the node API
+node-impl-osgi          - The OSGi implementation for the node API ????
+node-launcher           - The JSE based command line launcher for a Tuscany node
+node-launcher-equinox   - The OSGi based command line launcher for a Tuscany node
+sca-api                 - The OASIS defined SCA API
+sca-client-impl         - The Tuscany implementation of the OASIS defined SCA client
+xsd                     - The in-memory model of an XSD file, along with the processors to read it
+
+
+ +

We have already said that there are a set of extensions that, while in theory they are are optional, are in practice required to do anything useful. These are are follows:

+ +
+
+binding-sca-runtime          - The implementation for the local version of binding.sca
+binding-sca-axis2-runtime    - The implementation for the remote version of binding.sca based on web services
+binding-ws                   - The in-memory model for binding.ws 
+binding-ws-axis2             - TBD - should be called runtime
+binding-ws-axis2-policy      - TBD
+binding-ws-wsdlgen           - TBD
+databinding-axiom            - The databinding for Axiom 
+databinding-jaxb             - The databinding for JAXB
+databinding-jaxb-axiom       - TBD
+endpoint-tribes              - The distributed endpoint registry based on tribes
+host-jetty                   - Allows Jetty to be started automatically to support HTTP based bindings
+host-webapp                  - Allows Tuscany to be embedded in a WAR
+implementation-java          - The in-memory model for implementation.java
+implementation-java-runtime  - The runtime artifacts for implementation.java
+
+
+ +

The rest of the modules are optional and can be omitted. In practice the easiest way to get started is to keep all of the modules. By default this is what you get when you install the binding distribution. In the future you're free to remove the extensions you don't use to reduce the size of the installation. The Tuscany project may even make releases in the future that package sets of extensions targeted at particular types of application.

+ +

Tuscany SCA API

+ +

The Tuscany SCA API is used by SCA applications to access various information from the runtime. It's not mandatory to use the API but it can be useful in some circumstances.

+ +
+
+launcher  
+  Tuscany API                          
+node-api   
+  Tuscany API             
+node-launcher           
+  Tuscany API
+node-launcher-equinox   
+  Tuscany API 
+sca-api    
+  OASIS API             
+sca-client-impl        
+  OASIS API
+
+
+ +

Tuscany SPI

+ +

The Tuscany SPI is generally used for building extensions. Extensions come in two flavours SCA extensions, like implementation and binding types, and Tuscany runtime extensions, like builders and binders. Both of these types of extension are discussed a little later in this article. The modules and module packages that describe the Tuscany SPI are as follows:

+ +
+
+assembly    
+  org.apache.tuscany.sca.assembly
+  org.apache.tuscany.sca.definitions
+  org.apache.tuscany.sca.interfacedef
+  org.apache.tuscany.sca.policy
+assembly-xsd            
+  sca-core-1.1.xsd
+  sca-policy-1.1.xsd
+contribution        
+  org.apache.tuscany.sca.contribution
+  org.apache.tuscany.sca.contribution.java
+  org.apache.tuscany.sca.contribution.namespace
+  org.apache.tuscany.sca.contribution.processor
+  org.apache.tuscany.sca.contribution.resolver
+  org.apache.tuscany.sca.contribution.scanner
+core        
+  org.apache.tuscany.sca.core.assembly    
+  org.apache.tuscany.sca.core.context
+  org.apache.tuscany.sca.core.factory
+  org.apache.tuscany.sca.core.invocation
+  org.apache.tuscany.sca.core.scope
+core-databinding   
+  org.apache.tuscany.sca.core.databinding.processor
+core-spi (why not extension SPI?)
+  org.apache.tuscany.sca.context
+  org.apache.tuscany.sca.invocation
+  org.apache.tuscany.sca.provider
+  org.apache.tuscany.sca.runtime
+  org.apache.tuscany.sca.work
+databinding             
+  org.apache.tuscany.sca.databinding
+  org.apache.tuscany.sca.databinding.annotation
+  org.apache.tuscany.sca.databinding.javabeans
+  org.apache.tuscany.sca.databinding.util
+  org.apache.tuscany.sca.databinding.xml
+deployment            
+  org.apache.tuscany.sca.deployment
+extensibility  
+  org.apache.tuscany.sca.core
+  org.apache.tuscany.sca.extensibility            
+monitor   
+  org.apache.tuscany.sca.monitor              
+xsd                    
+  org.apache.tuscany.sca.xsd
+
+
+ +

More detail on extension points and SPIs can be found here

+ +

Tuscany Runtime Extensibility and Extensions

+ +

As we've already mentioned the Tuscany core doesn't do much on it's own apart from providing basic features and support the plugging in of extensions which do the real work. Extensions come in two forms. Extension types defined by the OASIS SCA specifications and those that are particular to Tuscany. In the first category are the extension types defined by the OASIS Assembly specification:

+ +
    +
  • interface
  • +
  • implementation
  • +
  • binding
  • +
  • import
  • +
  • export
  • +
+ + +

The Tuscany runtime defines it's own extension types which exploit the core runtimes extensibility features

+ +
    +
  • policy
  • +
  • databinding
  • +
  • contribution
  • +
  • host
  • +
+ + +

The Tuscany extensibility framework is based on two simple ideas. Firstly that the Tuscany runtime provides extension points into which extension functions can be plugged. Secondly that the the Java META-INF/services mechanism provides a way for extension developers to register new extension functions with these extension points.

+ +

The Tuscany extensibility framework exposes quite a few extension points, for example,(o.a.t.s = org.apache.tuscany)

+ +
+
+org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint
+  org.apache.tuscany.sca.assembly.builder.BindingBuilder
+  org.apache.tuscany.sca.assembly.builder.CompositeBuilder
+  org.apache.tuscany.sca.assembly.builder.ContractBuilder
+  org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
+
+org.apache.tuscany.sca.core.FactoryExtensionPoint
+  org.apache.tuscany.sca.assembly.AssemblyFactory
+  org.apache.tuscany.sca.assembly.SCABindingFactory
+  org.apache.tuscany.sca.binding.atom.AtomBindingFactory
+  org.apache.tuscany.sca.binding.comet.CometBindingFactory
+  org.apache.tuscany.sca.binding.corba.CorbaBindingFactory
+  org.apache.tuscany.sca.binding.ejb.EJBBindingFactory
+  org.apache.tuscany.sca.binding.http.HTTPBindingFactory
+  org.apache.tuscany.sca.binding.jsonp.JSONPBindingFactory
+  org.apache.tuscany.sca.binding.jsonrpc.JSONRPCBindingFactory
+  org.apache.tuscany.sca.binding.rest.operationselector.jaxrs.JAXRSOperationSelectorFactory
+  org.apache.tuscany.sca.binding.rest.operationselector.rpc.RPCOperationSelectorFactory
+  org.apache.tuscany.sca.binding.rest.RESTBindingFactory
+  org.apache.tuscany.sca.binding.rest.wireformat.json.JSONWireFormatFactory
+  org.apache.tuscany.sca.binding.rest.wireformat.xml.XMLWireFormatFactory
+  org.apache.tuscany.sca.binding.rmi.RMIBindingFactory
+  org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory
+  org.apache.tuscany.sca.contribution.ContributionFactory
+  org.apache.tuscany.sca.contribution.java.JavaImportExportFactory
+  org.apache.tuscany.sca.contribution.namespace.NamespaceImportExportFactory
+  org.apache.tuscany.sca.contribution.processor.ValidatingXMLInputFactory
+  org.apache.tuscany.sca.definitions.DefinitionsFactory
+  org.apache.tuscany.sca.implementation.bpel.BPELFactory
+  org.apache.tuscany.sca.implementation.java.JavaImplementationFactory
+    org.apache.tuscany.sca.implementation.java.introspect.JavaClassVisitor
+    org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor
+  org.apache.tuscany.sca.implementation.jaxrs.JAXRSImplementationFactory
+  org.apache.tuscany.sca.implementation.script.ScriptImplementationFactory
+  org.apache.tuscany.sca.implementation.web.WebImplementationFactory
+  org.apache.tuscany.sca.implementation.widget.WidgetImplementationFactory
+  org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory
+  org.apache.tuscany.sca.invocation.MessageFactory
+  org.apache.tuscany.sca.node.configuration.NodeConfigurationFactory
+  org.apache.tuscany.sca.policy.PolicyFactory
+
+org.apache.tuscany.sca.context.ContextFactoryExtensionPoint
+  org.apache.tuscany.sca.context.ComponentContextFactory
+  org.apache.tuscany.sca.context.PropertyValueFactory
+  org.apache.tuscany.sca.context.RequestContextFactory
+
+org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint
+  org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
+
+org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessorExtensionPoint
+  org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor
+
+org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint
+  org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor
+
+org.apache.tuscany.sca.contribution.processor.ValidationSchemaExtensionPoint
+  org.apache.tuscany.sca.contribution.processor.ValidationSchema
+
+org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint
+  org.apache.tuscany.sca.contribution.resolver.ModelResolver
+
+org.apache.tuscany.sca.contribution.scanner.ContributionScannerExtensionPoint
+
+org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint
+
+org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint
+  org.apache.tuscany.sca.core.ModuleActivator
+
+org.apache.tuscany.sca.databinding.DataBindingExtensionPoint
+  org.apache.tuscany.sca.databinding.DataBinding
+
+org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint
+
+org.apache.tuscany.sca.databinding.TransformerExtensionPoint
+  org.apache.tuscany.sca.databinding.PullTransformer
+  org.apache.tuscany.sca.databinding.PushTransformer
+
+org.apache.tuscany.sca.definitions.xml.DefinitionsExtensionPoint
+  org.apache.tuscany.sca.definitions.xml.Definitions
+
+org.apache.tuscany.sca.host.corba.CorbaHostExtensionPoint
+
+org.apache.tuscany.sca.host.http.ServletHostExtensionPoint
+  org.apache.tuscany.sca.host.http.ServletHost
+
+org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory
+
+org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint
+  org.apache.tuscany.sca.provider.BindingProviderFactory
+  org.apache.tuscany.sca.provider.ImplementationProviderFactory
+  org.apache.tuscany.sca.provider.PolicyProviderFactory
+  org.apache.tuscany.sca.provider.WireFormatProviderFactory
+  org.apache.tuscany.sca.provider.OperationSelectorProviderFactory
+
+org.apache.tuscany.sca.runtime.DomainRegistryFactoryExtensionPoint
+  org.apache.tuscany.sca.runtime.DomainRegistryFactory
+
+org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint
+  org.apache.tuscany.sca.runtime.RuntimeWireProcessor
+
+org.apache.tuscany.sca.core.UtilityExtensionPoint
+  org.apache.tuscany.sca.databinding.Mediator
+  org.apache.tuscany.sca.databinding.SimpleTypeMapper
+  org.apache.tuscany.sca.core.scope.ScopeRegistry
+  org.apache.tuscany.sca.binding.sca.provider.SCABindingMapper
+  org.apache.tuscany.sca.deployment.Deployer
+  org.apache.tuscany.sca.interfacedef.FaultExceptionMapper
+  org.apache.tuscany.sca.interfacedef.InterfaceContractMapper
+  org.apache.tuscany.sca.monitor.MonitorFactory
+  org.apache.tuscany.sca.runtime.CompositeActivator
+  org.apache.tuscany.sca.runtime.EndpointReferenceBinder
+  org.apache.tuscany.sca.runtime.EndpointSerializer
+  org.apache.tuscany.sca.runtime.RuntimeProperties
+  org.apache.tuscany.sca.work.WorkScheduler
+
+org.apache.tuscany.sca.node.NodeFactory
+org.apache.tuscany.sca.xsd.XSDFactory
+
+
+ +

Extension points are usually used in groups. You have to populate the right extension points when implementing say an implementation or a binding extensions. The best way to get a grip on how this works is to look at existing extensions and see what they do. As an example, if you look at how the implementation.java extension registers an extension to read the <implemenation.java/> element from a composite file and turn it into an in-memory Java model you will see the following file:

+ +

modules/implementation-java/src/main/resources/META-INF/services/o.a.t.s.contribution.processor.StAXArtifactProcessor

+ +

Which contains a single line as follows:

+ +

org.apache.tuscany.sca.implementation.java.xml.JavaImplementationProcessor;qname=http://docs.oasis-open.org/ns/opencsa/sca/200903#implementation.java,model=org.apache.tuscany.sca.implementation.java.JavaImplementation

+ +

This tells the Tuscany runtime to register and extension in the StAXArtifactProcessorExtensionPoint with the follwing properties:

+ +
    +
  • org.apache.tuscany.sca.implementation.java.xml.JavaImplementationProcessor +
      +
    • The name of the process that turns the XML <implementation.java> element into a Java model
    • +
    +
  • +
  • qname=http://docs.oasis-open.org/ns/opencsa/sca/200903#implementation.java +
      +
    • The QName of the <implementation.java/> element to look for in incoming composite files
    • +
    +
  • +
  • model=org.apache.tuscany.sca.implementation.java.JavaImplementation +
      +
    • The name of the Java model interface that will be used to represent the XML element in-memory.
    • +
    +
  • +
+ + +

The full set of extension points required to represent the implementation.java extension is spread across the implemenation-java and implementation-java-runtime modules as follows:

+ +

implementation-java

+ +
    +
  • resources/META-INF/services/ +
      +
    • o.a.t.s.contribution.processor.StAXArtifactProcessor - Converts <implementation.java/> to/from JavaImplementation model
    • +
    • o.a.t.s.implementation.java.JavaImplementationFactory - Creates JavaImplementation model objects
    • +
    • o.a.t.s.implementation.java.introspect.JavaClassVisitor - Registers visitors used to introspect Java classes
    • +
    +
  • +
+ + +

implementation-java-runtime

+ +
    +
  • resources/META-INF/services/ +
      +
    • o.a.t.s.context.PropertyValueFactory - ???
    • +
    • o.a.t.s.definitions.xml.Definitions - Registers a definitions.xml file for implementation.java
    • +
    • o.a.t.s.provider.ImplementationProviderFactory - Creates a runtime provider for implementation.java
    • +
    • o.a.t.s.runtime.RuntimeWireProcessor - Registers a processor for endpoint and endpoint reference interceptor chains
    • +
    +
  • +
+ + +

All of these extension point entries come together at runtime to allow Tuscany to process implementation.java elements that appear in composite files.

+ +

Most extension are packaged in a least two modules. For example the implementation.java extension is provided in the following modules:

+ +
+
+modules/implementation-java            - the implementation.java model classes and XML processor
+modules/implementation-java-runtime    - the runtime artifacts such as the runtime providers 
+
+
+ +

You will currently see extension that don't match this pattern. Often this is because the extension has been moved into 2.x from 1.x but has not been tidied up yet.

+ +

More detail on extension points and SPIs can be found here

+ +

Runtime hosting and containers, OSGi, JSE, Webapps etc.

+ +

The Tuscany runtime will work in the JSE environment and when deployed to an OSGi runtime like Felix or Equinox. Since 1.x we have been through an exercise of refactoring all of the runtime modules into OSGi bundles and providing consistent OSGi manifest files. See (http://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/OSGi+Enablement+for+Tuscany+Runtime) for more details on how we OSGi-igfied the Tuscany runtime.

+ +

A launcher is provided to each environment. For JSE use the following class from modules/node-launcher:

+ +
+
+org.apache.tuscany.sca.node.launcher.NodeLauncher
+
+
+ +

For in OSGi in the Equinoz framework use the following class from modules/node-launcher-equinox:

+ +
+
+org.apache.tuscany.sca.node.equinox.launcher.NodeLauncher
+
+
+ +

In both cases you use the launcher to create a node instance as follows:

+ +
+
+Node node = launcher.createNode(new Contribution("contrib1", "./contrib1.jar"),                    
+                                new Contribution("contrib2", "./contrib2.jar"));
+node.start();
+
+
+ +

When you use the JSE launcher the runtime starts and creates a classpath to load the Tuscany runtime. It uses the following algorithm (coded in the NodeLauncherUtil.runtimeClassloader method) to create the classpath:

+ +
    +
  • Check to see if the runtime has been added to the current classpath already. If it has don't do anything more
  • +
  • Determine where the launcher class was loaded from and load all the Tuscany classes from that location
  • +
  • Look for an environment variable called TUSCANY_HOME which should point to a distribution. Load jars from there and from lib and modules sub directories
  • +
  • Look for an environment variable called TUSCANY_PATCH which contains a list of Jars to load?
  • +
+ + +

When you use the OSGI launcher the algorithm is similar but of course this time the Tuscany bundles are loaded into the OSGi framework. The node launcher starts up the Equinox framework and then goes looking for bundles to load using the following algorithm:

+ +
    +
  • TBD
  • +
+ + +

There is no single classpath that gives access to the Tuscany runtime.

+ +

TODO what features of the OSGi integration do we need to cover in this overview?
+(In the OSGi runtime special processing is applied to collect together all the META-INF/services information so that it is all accessible without having to delve inside each bundle. See the runtime enviroments section for more information)

+ +

You can of course use the launchers from the command line in various guises.

+ +
+
+TBD
+
+
+ +

TODO - what other ways are we actually going to support for starting the runtime?

+ + +

SCA Domain and Nodes

+ +

The design for the 2.x SCA domain is based on a registry that is accessible from all nodes that are running composites in the domain. There is also the intention to add a management mechanism to allow for central control of the nodes. This is not in place yet.

+ +

+ +

It is out intention to bring the Domain Manager function over from the 1.x code base to provide a central place for adding contributions and assigning them to nodes. This time though it won't be mandatory to run a Domain Manager to have nodes run a distributed SCA application. If you are happy to configure nodes directly and start them individually you are able to do that. The domain manager will just be one of a number of applications that can sit on top of and exploit the distributed registry.

+ +

The registry holds information that is common across the domain including:

+ +
    +
  • available endpoints (the result of specifying a binding on a component services)
  • +
  • policy model
  • +
  • extension type model
  • +
+ + +

The following diagram shows an example of domain data populating the registry and two nodes, in separate JVMs, running separate composites from the SCA application

+ +

+ +

With no domain manager each node is started with a set of contributions. A node reads the contributions and processes deployed composites ready to run. As part of this processing domain level information, such as deployed endpoints and available policies, is published to the registry for other nodes to find. When domain level information is required by a node, for example, when a component reference targets a service running on a different node in the domain, the information can be obtained by looking in the registry.

+ +

If a domain manager is present it can pre-process all available contributions and pre-populate the registry as required. This is however not mandatory.

+ +

Runtime Lifecycle

+

Create

+

Runtime creation is contrilled by the environment in which the runtime is being started. For example, if you are running Tuscany from the runtime then using the node launcher will start the runtime. Alternatively if you are deploying Tuscany embedded in a web app then the runtime will not be started until the WAR file is deployed. See the previous hosting section for more details.

+

Read

+

When a node is started and configured with the location of a contribution, for example,

+ +
+
+Node node = launcher.createNode(new Contribution("contrib1", "./contrib1.jar"),                    
+                                new Contribution("contrib2", "./contrib2.jar"));
+
+
+ +

the node will look at each contribution and identify all of the aritifacts that it holds. Artifacts can be anything from XML, XSD, WSDL and Java .class files to the SCA .composite files. Once the node knows what artifacts are available in all of its input contributions it will read the composite files. It does this using the extension processors that are provided with each extension. The output of reading the composite file is an in-memory model of the SCA application. This model is used to configured the runtime in later phases.

+ +

Resolve

+ +

The in-memory model that results from the read phase will contain a lot of unresolved references. For example, for a component that uses

+
+
+<implementation.java class="my.package.MyClassImpl"/>
+
+
+

The model knows the name of the class file that will be used to implement the component but it doesn't actually have a reference to that real Java class. These references are resolved in the resolve phase. Again the extension processors are used and this time their resolve method looks through the available contributions, using the import/export relationships, to locate referenced artifacts.

+ +

Build

+ +

Once we get to this stage we have an in-memory model that faithfully matches what was present in the .composite files that are deployed to the node. We now need to build the model to prepare it read for creating the runtime artifacts. There are a number of things that we need to do an primarily the process involves applying the SCA rules to calculate a complete model of the application based on the input composite files. The input composite files don't necessarily contain all of the right details in the right places, for example, imagine a Java component implementation as follows:

+ +
+
+@Service(MyClass.class)
+class MyClassImpl implements MyClass {
+  @Reference
+  protected MyOtherClass myOtherClassReference;
+
+  public String doSomething(String input){
+     return myOtherClassReference.doSomething(input);
+  }
+}
+
+
+ +

We can define an SCA component as follows:

+ +
+
+<component name="MyComponent">
+    <implementation.java class="my.package.MyClassImpl"/>
+</component>
+
+
+ +

We haven't said that this component defines any services or references but based on the component type implied by the MyClassImpl class we know that it really as a service called "MyClass" and a reference called "myOtherClassReference".

+ +

The build process

+

The build process applies these kinds of rules and enhances the in-memory model with all of the implied information.

+ +

The following diagram shows the basic process and the steps that form the process.

+ +

+ +

The steps are as follows:

+ +
    +
  1. Flatten includes - this copies all information from an included composite into the including composite.
  2. +
  3. Attach policies - policies that specify external attachment are applied to the model here
  4. +
  5. Calculate composite component types - the use of implementation.composite implies a hierarchical organization of composite and the components that use them as implementations. This step calculates the component type for a composite recursively so that the configuration of the component that the composite implements can be configured correctly
  6. +
  7. Binding specific building - Sometimes bindings have specific processing to do, for example, the web services binding created WSDL at this stage.
  8. +
  9. Construct endpoints - endpoints represent the service endpoints that components expose. They are the runtime representation of the service binding configuration.
  10. +
  11. Construct endpoint references - endpoint references represent the references that components expose. They are the runtime representation of the reference binding configuration.
  12. +
  13. Compute policy - all of the intents and policy sets should be applied in their correct locations by this stage. This processing computes the policy sets that actually applies and performs policy specific processing
  14. +
+ + +

The endpoints and endpoint references provide the runtime connection between the component implementations and the bindings protocols used when communicating with other components. The hold all of the message handling chains in the runtime.

+ +

Endpoints and Endpoint References

+

The following diagram shows how enpoints and enpoint references relate to the model of the more recognizable component references and services.

+ +

+ +

And endpoint maps to a service binding and an endpoint reference maps to a reference target (or a configured reference binding if one is present instead of a target).You will note that endpoints and endpoint references are used to represent callbacks too. An service that specifies a callback gives rise to one or more callback endpoint references. These sit behind the callback proxy at runtime. An endpoint reference that specifies a callback gives rise to a callback endpoint. This endpoint receives callback messages.

+ +

Looking in more detail you can see that both endpoints and endpoint references hold the interceptor chains that proces references side (endpoint reference) and service side (endpoint) messages. At the end of the interceptor chain endpoint information is placed into the protocol message. The following diagram shows how the web service binding uses endpoint information in forward and callback messages.

+ +

+ +

The twist here is that while a forward Tuscany message has a from field that points to the source endpoint reference when this gets turned into a SOAP envelope the from field represents the callback endpoint if there is one.

+ +

Building endpoints and endpoint references

+ +

The following diagram shows how endpoints and endpoint references are created and used at a very high level.

+ +

+ +
    +
  1. First endoints and endpoint references are created during the build phase. An endpoint is created for every service binding. Endpoint references are created for every reference target or configured binding. Reference targets are either explicit specified through the reference or the binding uri or are implicitly specified through the use of autowire. If the endpoint to which an endpoint reference is available locally at this point the the two are linked (or bound) together at this point. If the node is running in a distributed domain, endpoint references can be created at this point where the target endpoint is not bound because it's not running in the same node. These endpoint references will be boundat runtime when the first messages passes through the endpoint reference
  2. +
  3. Second, during the activation phase, all endpoints are added to the endpoint registry. In this way any node that has access to the endpoint registry can see the details of these endpoints
  4. +
  5. Lastly, on first use, endpoint references that remain unbound are bound using a pluggable binding algorithm which will usually involve looking up and endpoint in the registry.
  6. +
+ + +

Activate

+ +

At the activate stage the various extension providers are created as required.

+ +

Start

+ +

During start the "start" operation is called on all active providers in order to perform any extension specific start processing.

+ +

Message Processing

+ +

Reference side operation and binding chains

+ +

+ +

Service side operation and binding chains

+ +

+ +

Stop

+ +

During stop the "stop" operation is called on all started providers in order to perform any extension specific stop processing.

+ +

Deactivate

+ +

During the deactivate stage the various parts of the runtime model are picked apart to allow for successful garbage collection.

+ +

Interfaces

+ +

Mapping interfaces to the runtime model

+

+ +

Reference side runtime interface driven databinding processing

+

+ +

Service side runtime interface driven databinding processing

+

+ + + +
+ +
+ Children + + Show Children + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-overview.html b/site/trunk/site-publish/documentation-2x/sca-overview.html new file mode 100644 index 0000000000..9dee1f9800 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-overview.html @@ -0,0 +1,221 @@ + + + + + + + + SCA Overview + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > SCA Overview + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Feb 03, 2009 + +
+ +
+
+ + + +

What is SCA?

+

SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology.

+ +

SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.

+ +

SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes.

+ +

Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled applications.

+ +

Now let's talk about SCA building blocks and concepts.

+ +

SCA Component

+ +

The basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:

+ +
    +
  • Service: Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.
  • +
  • Reference: This describes the dependencies this type of component has in order to function. A reference is an interface.
  • +
  • Property: This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.
  • +
  • Intent policies: This describes assumptions on how the component will behave. There are two types of policies. +
      +
    • Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging
    • +
    • Interaction policy - defines how the components behave with one another. For example, security.
    • +
    +
  • +
  • Implementation: Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.
  • +
+ + +

This is demonstrated below.
+Unable to render embedded object: File (component.png) not found.

+ +

The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.

+ +

SCA Wire

+ +

As mentioned above, an SCA component may have zero or more references. Refrences in SCA define how SCA components invoke services. The relationship between a reference and a service is typically demonstrated through a line in a SCA diagrams and is referred to as a wire.

+ +

The term wire can at the begining seem confusing because you may ask how a wire is realized. There is no physical definition for a wire, it is really derived from the relationship between a Service and its refrence(s) at runtime. This is realized through dependency injection in Tuscany.

+ + +

SCA Composite

+ +

An SCA composite consists of components, services, references, and wires that connect them. A composite is the unit of deployment for SCA.
+A composite can be viewed as a component whose implementation is not code but an aggregation of one or more components co-operating to provide higher level services. Think of composite as a solution, for example a credit check composite may consist of multiple components that together perform the credit checking work. A composite can also be used within a larger solution, for example credit check can be part of a order processing composite. A composite has the same charactersitics as a component. It provides Services, has References to other dependencies, and can be configured using Properties and can have intent policies in just the same way as an individual components can. In thise case, attributes of some of the components that are embedded in the composite get 'promoted' and becom the attribute of the composite. In the example below, you see a calculator composite which consists of 5 components, a calculator service has references to four components:Add, Subtract, Multiply and Divide.

+ +

Unable to render embedded object: File (calc.jpg) not found.
+ The assembly or wiring is defined in .composite file through Service Component Definition Language (SCDL) that is in XML. For example, calculator.composite would define that calculator component references the other four components.

+ +

SCA Contribution

+ +

The artifacts that make up a solution get packaged into what is called a contribution. A contribution can take a number of different forms. For example, it could be a jar file, or it could be a directory tree on the file system. A contribution can contain composites, java classes, BPEL processes, XSD files, wsdl files, etc. An SCA application can be divided into multiple contributions with dependencies between them. In general, some services depend closely on other services and it makes sense to package them together. If services are more independent it is best to package them separately so that they can be reused in different contexts. A contribution is a deployable unit. A solution may require multiple contributions that share artifacts and artifacts can be shared between (imported) between contributions.

+ +

SCA Domain

+ +

Contribution packages get contributed to what is called SCA domain which is the scope of adminstration at runtime. An SCA Domain represents a complete runtime configuration, potentially distributed over a series of interconnected runtime nodes and is a logical view of the running applications or a coherent grouping of components that are working together. An SCA Domain typically represents an area of business functionality controlled by a single organization. For example, an SCA Domain may be the whole of a business, or it may be a department within a business.

+ +

Therefore, an SCA domain consists of the definitions of composites, components, their implementations, and the nodes on which they run. Components deployed into a domain can directly wire to other components within the same domain. Communication with services outside of a domain is done through bindings.

+ + +

SCA Domains can vary in size from the very small to the very large:

+
    +
  • a very small domain could be one within a test environment inside an IDE
  • +
  • a medium sized domain could be a single server or small cluster supporting a single application
  • +
  • a large domain could describe all the services within a department or company
  • +
+ + +

In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services. However, during development one is not concerned with all this. The code is packaged and made available for deployment. Tuscany SCA Java supports contributions in the form of JAR or filesystem.

+ +

Below is an example of domain with two contributions.
+Unable to render embedded object: File (domain.jpg) not found.

+ +

SCA Binding

+

A binding is used as a means of communication between services and handles the protocols. It defines with what communication method a service can be accessed with or with what communication method it can will access other services. There can be different types of bindings depending on technologies used to develop a solution. For example JMS binding, Webservices binding, Atom binding for web20 interaction, etc.

+ +

Services can be configured with different bindings and there can be multiple bindings for a service. Bindings for the services and references get defined declaratively in the .composite file. There is a default binding called binding.sca which when used leaves the choice of binding to the underlying infrastructure by default.

+ +

The declarative bindings and the abstraction of protocols from business logic brings agility to SCA applications. This allows SCA applications to be purely focused on business logic and not be contaminated with protocol handling information. It also enables the SCA compositions to grow or change without code modification while also working with applications that are not enabled with SCA.

+ + +

SCA Policy

+

An enterprise application requires control beyond the business functional capability which can include how security is handled in the enterprise or what transactional capability should be applied to services that are offered. SCA policies define the constraints or capabilities that get applied to services and their interaction. Two types of policies are defined in SCA.

+
    +
  • Interaction Policies - Define the policies that influence interaction of services for example whether authentication is required or not.
  • +
  • Implementation Policies - Define how the components behave at runtime for example whether it is transactional or not.
  • +
+ + +

SCA mechanisms for defining policies such as intents and policySets can only be used in the context of a single domain. The fact that policies can be defined declaratively make applications adaptive to the environment that they get deployed into or to changes in the business requirements.
+For more information about policy check out the sca policy framework specificationversion=1]

+ +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg new file mode 100644 index 0000000000..86f71af57d Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg.jpeg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg.jpeg new file mode 100644 index 0000000000..24f6df7f3f Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg new file mode 100644 index 0000000000..1f589f5eda Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg.jpeg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg.jpeg new file mode 100644 index 0000000000..dcd0fed30a Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg new file mode 100644 index 0000000000..6a11db3be1 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg differ diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg.jpeg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg.jpeg new file mode 100644 index 0000000000..319f579a11 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.html b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.html new file mode 100644 index 0000000000..090601fd0d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.html @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + Serialization Deserialization of Endpoints and EndpointReferences : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > SCA Java Runtime Overview > Serialization Deserialization of Endpoints and EndpointReferences + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > SCA Java Runtime Overview > Serialization Deserialization of Endpoints and EndpointReferences + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Serialization Deserialization of Endpoints and EndpointReferences

+

A sample scenario

+

+ +

Assuming we have two nodes (Node1, Node2) within an SCA domain. Node1 runs component1 which is wired to component2 on Node2.

+ +
    +
  • Propagate the endpoint descriptions via the domain registry +
      +
    • Serialize the endpoints of component2 at Node2
    • +
    • Deserialize the endpoints at Node1
    • +
    • Bind the endpoint reference of component1 to the remote endpoints of component2
    • +
    +
  • +
+ + +
    +
  • Pass the ServiceReference from component1 to component2 via business methods +
      +
    • Serialize the endpoint reference (for example, a reference to component3) known to component1 at Node1
    • +
    • Deserialize the endpoint reference at Node2
    • +
    • Bind the endpoint reference to the context of Node2/Component2
    • +
    +
  • +
+ + +
+
+public class Component1Impl {
+  @Reference
+  ServiceReference<Component3> component3;
+
+  @Reference 
+  Component2 component2;
+
+  public String op1(...) {
+    // Pass a ServiceReference of component3 to component2
+    component2.op2(component3, ...);
+  }
+}
+
+
+ +
+
+public class Component2Impl {
+
+  public String op2(ServiceReference<Component3> component3Ref, ...) {
+    ...
+    // Call component3 using the service reference
+    Component3 component3 = component3Ref.getService();
+    component3.op3(...);
+  }
+}
+
+
+ +

What information should be serialized?

+ +

Endpoint serialization

+

What information is needed on the consumer side?

+
    +
  • The protocol-specific endpoint address
  • +
  • The binding structural URI
  • +
  • The binding type
  • +
  • The intents and policySets
  • +
+ + +

What information is not needed on the consumer side?

+
    +
  • The component implementation behind the endpoint
  • +
+ + +

I'm not sure if the componentType of the owning component or interface contracts are needed. Interface validation against a remote endpoint can be one only if the interface contract for the endpoint is resolvable in the context of the consuming component. But it can be too restrictive as it breaks the promise of decoupling between the SCA reference and service.

+ +

The current code serializes the endpoint as a composite/component/service/binding XML.

+ +
+
+<composite name="..." targetNamespace>
+  <component name="..." uri="...">
+    <implementation.bpel process="..."/> <!-- This should be removed -->
+    <service name="..." requires="..." policySets="...">
+      <interface.wsdl interface="..."/> <!-- Is the interface needed? -->
+      <binding.ws uri="..."  requires="..." policySets="..."/>
+    </service>
+  </component>
+</composite>
+
+
+ + +

How to resolve the deserialized endpoint in the context of the consuming component?

+

We keep the XML document from the Java serialization and load the XML into a composite model to rebuild the endpoint in the context of the consuming component. The currect scheme of XML serialization probably contains too much information and some of them cannot be practically resolvable on the client side. For example, the target component implementation or interface contracts.

+ +

+ +

EndpointReference serialization

+

What information is needed on the consumer side?

+
    +
  • The binding structural URI
  • +
  • The binding type
  • +
  • The intents and policySets
  • +
  • The resolved target endpoint (including the endpoint address and/or structural URI)
  • +
+ + +

What information is not needed on the consumer side?

+
    +
  • The component implementation behind the endpoint reference
  • +
+ + +

I'm not sure if the componentType of the owning component or interface contracts are needed. Interface validation against a remote endpoint can be one only if the interface contract for the endpoint is resolvable in the context of the consuming component. But it can be too restrictive as it breaks the promise of decoupling between the SCA reference and service.

+ +

The current code serializes the endpoint reference as a composite/component/reference/binding XML.

+
+
+<composite name="endpointReference" targetNamespace="...">
+  <component name="..." uri="...">
+    <implementation.java class="..."/> <!-- This should be removed -->
+    <reference name="..." requires="..." policySets="..." target="..."> <!-- reference/@target and binding.ws/@uri are exclusive -->
+      <interface.java interface="..."/> <!-- Is the interface needed? -->
+      <binding.ws uri="..."  requires="..." policySets="..."/>
+    </reference>
+  </component>
+</composite>
+
+
+ +

How to resolve the deserialized endpoint reference in the context of the consuming component?

+

We keep the XML document from the Java serialization and load the XML into a composite model to rebuild the endpoint in the context of the consuming component. The currect scheme of XML serialization probably contains too much information and some of them cannot be practically resolvable on the client side. For example, the target component implementation or interface contracts.

+ +

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/setting-up-ssh.html b/site/trunk/site-publish/documentation-2x/setting-up-ssh.html new file mode 100644 index 0000000000..154948bd8d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/setting-up-ssh.html @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + Setting up ssh : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Making Releases > Setting up ssh + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Making Releases > Setting up ssh + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

+
Unable to render {include} Couldn't find a page to include called: Menus
+ +

Setup mvn to work with your apache account

+ +

Generate an authorised dsa/rsa key

+ +

Logon to minotaur.apache.org using your apache id and run:

+ +
+
+$ ssh-keygen -t dsa
+
+
+ +

Give it some file name eg mysshkey and a pass phrase. This should create two files, a private key and a public key (mysshkey, mysshkey.pub). Copy mysshkey.pub to ~/.ssh/authorised_keys. (you may need to create the .ssh directory), and scp the private key to you local machine.

+ +

OR

+ +

Use ssh-keygen to create a SSH key locally using shell or cygwin:

+ +
+
+$ ssh-keygen -t rsa -b 4096
+
+
+ +

The keys will be saved in /.ssh/id_dsa (private) and /.ssh/id_dsa.pub (public).

+ +

scp your SSH public key /.ssh/id_dsa.pub created in last step to /id_dsa.pub on people.apache.org.

+ +
+
+$ scp ~/.ssh/id_dsa.pub <your userid>@people.apache.org:.
+
+
+ +

Login to people.apache.org

+ +
+
+$ ssh <your userid>@people.apache.org
+
+
+ +

Create a ~/.ssh folder in your home directory on people.apache.org and change its file mode to 700.

+
+
+$ mkdir ~/.ssh
+$ chmod 700 ~/.ssh
+
+
+ +

Move or append /id_dsa.pub to /.ssh/authorized_keys and change its file mode to 600.

+
+
+$ mv ~/id_dsa.pub ~/.ssh/authorized_keys
+$ chmod 600 ~/.ssh/authorized_keys
+
+
+ +

Update Maven settings

+ +

At this point you should be able to ssh into people.apache.org without being prompted for a password.

+ +

In your maven settings.xml file (located in the .m2 folder in your home dir, eg C:\Documents and Settings\ant\.m2) add servers for the servers you use and specify you apache id, the location of the ssh key you just scp'd and the pass phrase you used when creating that key, eg:

+ +
+
+<servers>
+  <server>
+    <id>apache.incubator</id>
+    <username>antelder</username>
+    <privateKey>file-path-of-private-key</privateKey>
+    <passphrase>xxx</passphrase>
+    <directoryPermissions>775</directoryPermissions>
+    <filePermissions>664</filePermissions>
+  </server>
+  <server>
+    <id>me.people</id>
+    <username>antelder</username>
+    <privateKey>file-path-of-private-key</privateKey>
+    <passphrase>xxx</passphrase>
+    <directoryPermissions>775</directoryPermissions>
+    <filePermissions>664</filePermissions>
+  </server>
+  <server>
+    <id>apache.snapshots</id>
+    <username>antelder</username>
+    <privateKey>file-path-of-private-key</privateKey>
+    <passphrase>xxx</passphrase>
+    <directoryPermissions>775</directoryPermissions>
+    <filePermissions>664</filePermissions>
+  </server>
+  <server>
+    <id>apache.rsync</id>
+    <username>antelder</username>
+    <privateKey>file-path-of-private-key</privateKey>
+    <passphrase>xxx</passphrase>
+    <directoryPermissions>775</directoryPermissions>
+    <filePermissions>664</filePermissions>
+  </server>
+</servers>
+
+
+ +

Keep the ssh key and pass phrase safe and secure. Its a good idea to only add the key and passphrase to the settings.xml file while you're actually using it and delete form the file at other times. Also you MUST delete the private ssh key from your Apache directory once you've ftp'd it to your local machine.

+ + +
+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/treenavigation.html b/site/trunk/site-publish/documentation-2x/treenavigation.html new file mode 100644 index 0000000000..235692eeb9 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/treenavigation.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + TreeNavigation : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > TreeNavigation + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > TreeNavigation + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ + + +
+ + + +
    +
    +
    +
+ + +
+ + +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.data/Tuscany 2.x Extensibility and SPIs.ppt b/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.data/Tuscany 2.x Extensibility and SPIs.ppt new file mode 100644 index 0000000000..3f395de8d5 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.data/Tuscany 2.x Extensibility and SPIs.ppt differ diff --git a/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.html b/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.html new file mode 100644 index 0000000000..e0327332c1 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.html @@ -0,0 +1,1467 @@ + + + + + + + + + + + + + + + Tuscany 2.x Extensibility and SPIs : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > SCA Java Runtime Overview > Tuscany 2.x Extensibility and SPIs + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > SCA Java Runtime Overview > Tuscany 2.x Extensibility and SPIs + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

+ +

Tuscany 2.x Extensibility and SPIs.ppt

+ +

SPI/API Change History

+ +
+ + + + + + + + + + + +
SVN Diff JIRA Change
901126 N/A New client API from spec
+
+ + +

Core SPIs

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Module Exported Packages
assembly
+
    +
  • org.apache.tuscany.sca.assembly
  • +
  • org.apache.tuscany.sca.assembly.builder
  • +
  • org.apache.tuscany.sca.assembly.impl
  • +
  • org.apache.tuscany.sca.definitions
  • +
  • org.apache.tuscany.sca.definitions.util
  • +
  • org.apache.tuscany.sca.interfacedef
  • +
  • org.apache.tuscany.sca.interfacedef.impl
  • +
  • org.apache.tuscany.sca.interfacedef.util
  • +
  • org.apache.tuscany.sca.policy
  • +
  • org.apache.tuscany.sca.policy.impl
  • +
  • org.apache.tuscany.sca.policy.util
  • +
+
assembly-xml
+
    +
  • org.apache.tuscany.sca.assembly.xml
  • +
  • org.apache.tuscany.sca.definitions.xml
  • +
  • org.apache.tuscany.sca.policy.xml
  • +
+
assembly-xsd
+
    +
  • org.apache.tuscany.sca.assembly.xsd
  • +
+
contribution
+
    +
  • org.apache.tuscany.sca.contribution.scanner
  • +
  • org.apache.tuscany.sca.contribution.resolver
  • +
  • org.apache.tuscany.sca.contribution.processor
  • +
  • org.apache.tuscany.sca.contribution
  • +
  • org.apache.tuscany.sca.contribution.namespace
  • +
  • org.apache.tuscany.sca.contribution.java
  • +
+
core
+
    +
  • org.apache.tuscany.sca.core.assembly
  • +
  • org.apache.tuscany.sca.core.assembly.impl
  • +
  • org.apache.tuscany.sca.core.context
  • +
  • org.apache.tuscany.sca.core.factory
  • +
  • org.apache.tuscany.sca.core.invocation
  • +
  • org.apache.tuscany.sca.core.scope
  • +
+
core-databinding
+
    +
  • org.apache.tuscany.sca.core.databinding.processor
  • +
+
core-spi
+
    +
  • org.apache.tuscany.sca.context
  • +
  • org.apache.tuscany.sca.invocation
  • +
  • org.apache.tuscany.sca.management
  • +
  • org.apache.tuscany.sca.provider
  • +
  • org.apache.tuscany.sca.runtime
  • +
  • org.apache.tuscany.sca.work
  • +
+
data-api
+
    +
  • org.apache.tuscany.sca.data.collection
  • +
+
databinding
+
    +
  • org.apache.tuscany.sca.databinding
  • +
  • org.apache.tuscany.sca.databinding.xml
  • +
  • org.apache.tuscany.sca.databinding.impl
  • +
  • org.apache.tuscany.sca.databinding.util
  • +
  • org.apache.tuscany.sca.databinding.annotation
  • +
  • org.apache.tuscany.sca.databinding.javabeans
  • +
+
deployment
+
    +
  • org.apache.tuscany.sca.deployment
  • +
  • org.apache.tuscany.sca.deployment.impl
  • +
+
extensibility
+
    +
  • org.apache.tuscany.sca.core
  • +
  • org.apache.tuscany.sca.extensibility
  • +
+
launcher
+
    +
  • org.apache.tuscany.sca.launcher
  • +
+
monitor
+
    +
  • org.apache.tuscany.sca.monitor
  • +
+
node-api
+
    +
  • org.apache.tuscany.sca.node
  • +
  • org.apache.tuscany.sca.node.configuration
  • +
+
sca-api
+
    +
  • org.oasisopen.sca
  • +
  • org.oasisopen.sca.annotation
  • +
  • org.oasisopen.sca.client
  • +
+
xsd
+
    +
  • org.apache.tuscany.sca.xsd
  • +
  • org.apache.tuscany.sca.xsd.xml
  • +
+
+
+ + +

+ +

ExtensionPoints

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Modules Declared ExtensionPoints
assembly
+
    +
  • org.apache.tuscany.sca.assembly.AssemblyFactory
  • +
  • org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint
  • +
  • org.apache.tuscany.sca.assembly.EndpointFactory
  • +
  • org.apache.tuscany.sca.assembly.SCABindingFactory
  • +
  • org.apache.tuscany.sca.definitions.DefinitionsFactory
  • +
  • org.apache.tuscany.sca.interfacedef.InterfaceContractMapper
  • +
  • org.apache.tuscany.sca.policy.PolicyFactory
  • +
+
assembly-xml
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.resolver.ModelResolver
  • +
  • org.apache.tuscany.sca.definitions.xml.Definitions
  • +
  • org.apache.tuscany.sca.definitions.xml.DefinitionsExtensionPoint
  • +
+
assembly-xsd
+
    +
  • org.apache.tuscany.sca.contribution.processor.ValidationSchema
  • +
+
builder
+
    +
  • org.apache.tuscany.sca.assembly.builder.CompositeBuilder
  • +
+
contribution
+
    +
  • org.apache.tuscany.sca.contribution.ContributionFactory
  • +
  • org.apache.tuscany.sca.contribution.java.JavaImportExportFactory
  • +
  • org.apache.tuscany.sca.contribution.namespace.NamespaceImportExportFactory
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessorExtensionPoint
  • +
  • org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint
  • +
  • org.apache.tuscany.sca.contribution.processor.ValidatingXMLInputFactory
  • +
  • org.apache.tuscany.sca.contribution.processor.ValidationSchemaExtensionPoint
  • +
  • org.apache.tuscany.sca.contribution.resolver.ModelResolver
  • +
  • org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint
  • +
  • org.apache.tuscany.sca.contribution.scanner.ContributionScannerExtensionPoint
  • +
+
core
+
    +
  • org.apache.tuscany.sca.assembly.AssemblyFactory
  • +
  • org.apache.tuscany.sca.context.ComponentContextFactory
  • +
  • org.apache.tuscany.sca.context.RequestContextFactory
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint
  • +
  • org.apache.tuscany.sca.core.scope.ScopeRegistry
  • +
  • org.apache.tuscany.sca.invocation.MessageFactory
  • +
  • org.apache.tuscany.sca.runtime.CompositeActivator
  • +
  • org.apache.tuscany.sca.runtime.DomainRegistryFactory
  • +
  • org.apache.tuscany.sca.runtime.EndpointReferenceBinder
  • +
  • org.apache.tuscany.sca.runtime.EndpointRegistry
  • +
  • org.apache.tuscany.sca.runtime.EndpointSerializer
  • +
  • org.apache.tuscany.sca.work.WorkScheduler
  • +
+
core-databinding
+
    +
  • org.apache.tuscany.sca.databinding.PullTransformer
  • +
  • org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor
  • +
  • org.apache.tuscany.sca.runtime.RuntimeWireProcessor
  • +
+
core-spi
+
    +
  • org.apache.tuscany.sca.context.ContextFactoryExtensionPoint
  • +
  • org.apache.tuscany.sca.endpointresolver.EndpointResolverFactoryExtensionPoint
  • +
  • org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint
  • +
  • org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint
  • +
+
databinding
+
    +
  • org.apache.tuscany.sca.databinding.DataBinding
  • +
  • org.apache.tuscany.sca.databinding.DataBindingExtensionPoint
  • +
  • org.apache.tuscany.sca.databinding.Mediator
  • +
  • org.apache.tuscany.sca.databinding.PullTransformer
  • +
  • org.apache.tuscany.sca.databinding.PushTransformer
  • +
  • org.apache.tuscany.sca.databinding.SimpleTypeMapper
  • +
  • org.apache.tuscany.sca.databinding.TransformerExtensionPoint
  • +
+
deployment
+
    +
  • org.apache.tuscany.sca.deployment.Deployer
  • +
+
extensibility
+
    +
  • org.apache.tuscany.sca.core.FactoryExtensionPoint
  • +
  • org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint
  • +
  • org.apache.tuscany.sca.core.UtilityExtensionPoint
  • +
+
monitor
+
    +
  • org.apache.tuscany.sca.monitor.MonitorFactory
  • +
+
xsd
+
    +
  • org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.resolver.ModelResolver
  • +
  • org.apache.tuscany.sca.xsd.XSDFactory
  • +
+
+
+ + +

Technology Specifics (Do we need this here?)

+ +

SPIs

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Module Exported Packages
binding-atom
+
    +
  • org.apache.tuscany.sca.binding.atom
  • +
+
binding-atom-js-dojo
+
    +
  • org.apache.tuscany.sca.binding.atom.js.dojo
  • +
+
binding-atom-runtime
+
    +
  • org.apache.tuscany.sca.binding.atom.collection
  • +
+
binding-ejb
+
    +
  • org.apache.tuscany.sca.binding.ejb
  • +
+
binding-http
+
    +
  • org.apache.tuscany.sca.binding.http
  • +
+
binding-jms
+
    +
  • org.apache.tuscany.sca.binding.jms
  • +
  • org.apache.tuscany.sca.binding.jms.operationselector
  • +
  • org.apache.tuscany.sca.binding.jms.policy
  • +
  • org.apache.tuscany.sca.binding.jms.policy.authentication.token
  • +
  • org.apache.tuscany.sca.binding.jms.policy.header
  • +
  • org.apache.tuscany.sca.binding.jms.wireformat
  • +
+
binding-jsonp
+
    +
  • org.apache.tuscany.sca.binding.jsonp
  • +
+
binding-jsonrpc
+
    +
  • org.apache.tuscany.sca.binding.jsonrpc
  • +
+
binding-jsonrpc-js-dojo
+
    +
  • org.apache.tuscany.sca.binding.jsonrpc.js.dojo
  • +
+
binding-rmi
+
    +
  • org.apache.tuscany.sca.binding.rmi
  • +
+
binding-sca-axis2-runtime
+
    +
  • org.apache.tuscany.sca.binding.sca.axis2
  • +
+
binding-sca-runtime-rmi
+
    +
  • org.apache.tuscany.sca.binding.sca.rmi
  • +
+
binding-ws
+
    +
  • org.apache.tuscany.sca.binding.ws
  • +
  • org.apache.tuscany.sca.binding.ws.addressing
  • +
+
binding-ws-axis2
+
    +
  • org.apache.tuscany.sca.binding.ws.axis2
  • +
+
binding-ws-axis2-policy
+
    +
  • org.apache.tuscany.sca.binding.ws.axis2.policy.authentication.token
  • +
  • org.apache.tuscany.sca.binding.ws.axis2.policy.configuration
  • +
  • org.apache.tuscany.sca.binding.ws.axis2.policy.header
  • +
+
binding-ws-wsdlgen
+
    +
  • org.apache.tuscany.sca.binding.ws.wsdlgen
  • +
+
common-java
+
    +
  • org.apache.tuscany.sca.common.java.classloader
  • +
  • org.apache.tuscany.sca.common.java.collection
  • +
  • org.apache.tuscany.sca.common.java.io
  • +
  • org.apache.tuscany.sca.common.java.reflection
  • +
+
common-xml
+
    +
  • org.apache.tuscany.sca.common.xml
  • +
  • org.apache.tuscany.sca.common.xml.dom
  • +
  • org.apache.tuscany.sca.common.xml.sax
  • +
  • org.apache.tuscany.sca.common.xml.stax
  • +
  • org.apache.tuscany.sca.common.xml.stax.reader
  • +
  • org.apache.tuscany.sca.common.xml.xpath
  • +
+
contribution-osgi
+
    +
  • org.apache.tuscany.sca.contribution.osgi
  • +
+
databinding-axiom
+
    +
  • org.apache.tuscany.sca.databinding.axiom
  • +
+
databinding-jaxb
+
    +
  • org.apache.tuscany.sca.databinding.jaxb
  • +
+
databinding-json
+
    +
  • org.apache.tuscany.sca.databinding.json
  • +
  • org.apache.tuscany.sca.databinding.json.axiom
  • +
+
endpoint-tribes
+
    +
  • org.apache.tuscany.sca.endpoint.tribes
  • +
+
extensibility-equinox
+
    +
  • org.apache.tuscany.sca.extensibility.equinox
  • +
+
host-http
+
    +
  • org.apache.tuscany.sca.host.http
  • +
+
host-rmi
+
    +
  • org.apache.tuscany.sca.host.rmi
  • +
+
host-webapp
+
    +
  • org.apache.tuscany.sca.host.webapp
  • +
+
implementation-bpel
+
    +
  • org.apache.tuscany.sca.implementation.bpel
  • +
+
implementation-java
+
    +
  • org.apache.tuscany.sca.implementation.java
  • +
  • org.apache.tuscany.sca.implementation.java.introspect
  • +
  • org.apache.tuscany.sca.implementation.java.introspect.impl
  • +
+
implementation-java-runtime
+
    +
  • org.apache.tuscany.sca.implementation.java.context
  • +
  • org.apache.tuscany.sca.implementation.java.injection
  • +
+
implementation-osgi
+
    +
  • org.apache.tuscany.sca.implementation.osgi
  • +
+
implementation-spring
+
    +
  • org.apache.tuscany.sca.implementation.spring
  • +
  • org.apache.tuscany.sca.implementation.spring.introspect
  • +
+
implementation-web
+
    +
  • org.apache.tuscany.sca.implementation.web
  • +
+
implementation-web-runtime
+
    +
  • org.apache.tuscany.sca.implementation.web.runtime.utils
  • +
  • org.apache.tuscany.sca.implementation.web.runtime
  • +
+
implementation-widget
+
    +
  • org.apache.tuscany.sca.implementation.widget
  • +
+
implementation-widget-runtime
+
    +
  • org.apache.tuscany.sca.implementation.widget.provider
  • +
+
interface-java
+
    +
  • org.apache.tuscany.sca.interfacedef.java.impl
  • +
  • org.apache.tuscany.sca.interfacedef.java.introspect
  • +
  • org.apache.tuscany.sca.interfacedef.java
  • +
+
interface-java-jaxws
+
    +
  • org.apache.tuscany.sca.interfacedef.java.jaxws
  • +
+
interface-wsdl
+
    +
  • org.apache.tuscany.sca.interfacedef.wsdl
  • +
+
node-launcher-equinox
+
    +
  • org.apache.tuscany.sca.node.equinox.launcher
  • +
+
policy-security
+
    +
  • org.apache.tuscany.sca.policy.authorization
  • +
  • org.apache.tuscany.sca.policy.security.jaas
  • +
  • org.apache.tuscany.sca.policy.authentication.basic
  • +
  • org.apache.tuscany.sca.policy.security
  • +
  • org.apache.tuscany.sca.policy.identity
  • +
  • org.apache.tuscany.sca.policy.authentication.token
  • +
+
policy-xml-ws
+
    +
  • org.apache.tuscany.sca.policy.xml.ws
  • +
+
web-javascript
+
    +
  • org.apache.tuscany.sca.web.javascript
  • +
+
node-impl
+
    +
  • org.apache.tuscany.sca.node.impl
  • +
+
node-impl-osgi
+
    +
  • org.apache.tuscany.sca.osgi.remoteserviceadmin
  • +
+
node-launcher
+
    +
  • org.apache.tuscany.sca.node.launcher
  • +
+
+
+ + +

Extensions

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Modules Declared ExtensionPoints/Extensions
binding-atom
+
    +
  • org.apache.tuscany.sca.binding.atom.AtomBindingFactory
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
+
binding-atom-js-dojo
+
    +
  • org.apache.tuscany.sca.web.javascript.JavascriptProxyFactory
  • +
+
binding-atom-runtime
+
    +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
+
binding-ejb
+
    +
  • org.apache.tuscany.sca.binding.ejb.EJBBindingFactory
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.definitions.xml.Definitions
  • +
+
binding-ejb-runtime
+
    +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
+
binding-http
+
    +
  • org.apache.tuscany.sca.binding.http.HTTPBindingFactory
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
+
binding-http-runtime
+
    +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
+
binding-jms
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.provider.SCADefinitionsProvider
  • +
+
binding-jms-runtime
+
    +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
  • org.apache.tuscany.sca.provider.OperationSelectorProviderFactory
  • +
  • org.apache.tuscany.sca.provider.PolicyProviderFactory
  • +
  • org.apache.tuscany.sca.provider.WireFormatProviderFactory
  • +
+
binding-jsonp
+
    +
  • org.apache.tuscany.sca.binding.jsonp.JSONPBindingFactory
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.processor.ValidationSchema
  • +
+
binding-jsonp-runtime
+
    +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
+
binding-jsonrpc
+
    +
  • org.apache.tuscany.sca.binding.jsonrpc.JSONRPCBindingFactory
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
+
binding-jsonrpc-js-dojo
+
    +
  • org.apache.tuscany.sca.web.javascript.JavascriptProxyFactory
  • +
+
binding-jsonrpc-runtime
+
    +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
+
binding-rmi
+
    +
  • org.apache.tuscany.sca.binding.rmi.RMIBindingFactory
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
+
binding-rmi-runtime
+
    +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
+
binding-sca-axis2-runtime
+
    +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
+
binding-sca-runtime
+
    +
  • org.apache.tuscany.sca.definitions.xml.Definitions
  • +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
+
binding-sca-runtime-rmi
+
    +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
+
binding-ws
+
    +
  • org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
+
binding-ws-axis2
+
    +
  • org.apache.tuscany.sca.definitions.xml.Definitions
  • +
  • org.apache.tuscany.sca.provider.BindingProviderFactory
  • +
+
binding-ws-axis2-policy
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.provider.PolicyProviderFactory
  • +
+
binding-ws-wsdlgen
+
    +
  • org.apache.tuscany.sca.assembly.builder.BindingBuilder
  • +
+
contribution-osgi
+
    +
  • org.apache.tuscany.sca.contribution.resolver.ModelResolver
  • +
  • org.apache.tuscany.sca.contribution.scanner.ContributionScanner
  • +
+
databinding-axiom
+
    +
  • org.apache.tuscany.sca.databinding.DataBinding
  • +
  • org.apache.tuscany.sca.databinding.PullTransformer
  • +
+
databinding-jaxb
+
    +
  • org.apache.tuscany.sca.databinding.DataBinding
  • +
  • org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint
  • +
  • org.apache.tuscany.sca.databinding.PullTransformer
  • +
+
databinding-jaxb-axiom
+
    +
  • org.apache.tuscany.sca.databinding.PullTransformer
  • +
+
databinding-json
+
    +
  • org.apache.tuscany.sca.databinding.DataBinding
  • +
  • org.apache.tuscany.sca.databinding.PullTransformer
  • +
+
domain-node
endpoint-dht
+
    +
  • org.apache.tuscany.sca.runtime.EndpointRegistry
  • +
+
endpoint-tribes
+
    +
  • org.apache.tuscany.sca.runtime.EndpointRegistry
  • +
+
endpoint-zookeeper
+
    +
  • org.apache.tuscany.sca.runtime.EndpointRegistry
  • +
+
host-http
+
    +
  • org.apache.tuscany.sca.host.http.ServletHostExtensionPoint
  • +
+
host-jetty
+
    +
  • org.apache.tuscany.sca.host.http.ServletHost
  • +
+
host-jetty7
+
    +
  • org.apache.tuscany.sca.host.http.ServletHost
  • +
+
host-rmi
+
    +
  • org.apache.tuscany.sca.host.rmi.RMIHostExtensionPoint
  • +
+
host-webapp
+
    +
  • org.apache.tuscany.sca.host.http.ServletHost
  • +
+
implementation-bpel
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.resolver.ModelResolver
  • +
  • org.apache.tuscany.sca.implementation.bpel.BPELFactory
  • +
+
implementation-bpel-runtime
+
    +
  • org.apache.tuscany.sca.provider.ImplementationProviderFactory
  • +
+
implementation-java
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.implementation.java.introspect.JavaClassVisitor
  • +
  • org.apache.tuscany.sca.implementation.java.JavaImplementationFactory
  • +
+
implementation-java-runtime
+
    +
  • org.apache.tuscany.sca.context.PropertyValueFactory
  • +
  • org.apache.tuscany.sca.definitions.xml.Definitions
  • +
  • org.apache.tuscany.sca.provider.ImplementationProviderFactory
  • +
  • org.apache.tuscany.sca.runtime.RuntimeWireProcessor
  • +
+
implementation-osgi
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.resolver.ModelResolver
  • +
  • org.apache.tuscany.sca.implementation.osgi.OSGiImplementationFactory
  • +
  • org.apache.tuscany.sca.implementation.osgi.ServiceDescriptionsFactory
  • +
+
implementation-osgi-runtime
+
    +
  • org.apache.tuscany.sca.provider.ImplementationProviderFactory
  • +
+
implementation-spring
+
    +
  • org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.definitions.xml.Definitions
  • +
  • org.apache.tuscany.sca.provider.ImplementationProviderFactory
  • +
+
implementation-web
+
    +
  • org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.implementation.web.WebImplementationFactory
  • +
+
implementation-web-client
+
    +
  • org.apache.tuscany.sca.provider.ImplementationProviderFactory
  • +
+
implementation-web-runtime
+
    +
  • org.apache.tuscany.sca.provider.ImplementationProviderFactory
  • +
+
implementation-widget
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.implementation.widget.WidgetImplementationFactory
  • +
+
implementation-widget-runtime
+
    +
  • org.apache.tuscany.sca.provider.ImplementationProviderFactory
  • +
+
implementation-widget-runtime-dojo
+
    +
  • org.apache.tuscany.sca.web.javascript.ComponentJavaScriptGenerator
  • +
+
interface-java
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor
  • +
  • org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory
  • +
+
interface-java-jaxws
+
    +
  • org.apache.tuscany.sca.interfacedef.FaultExceptionMapper
  • +
  • org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor
  • +
+
interface-wsdl
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor
  • +
  • org.apache.tuscany.sca.contribution.resolver.ModelResolver
  • +
  • org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory
  • +
+
node-impl
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.node.configuration.NodeConfigurationFactory
  • +
  • org.apache.tuscany.sca.node.NodeFactory
  • +
+
node-impl-osgi
+
    +
  • org.apache.tuscany.sca.node.NodeFactory
  • +
+
policy-logging
+
    +
  • org.apache.tuscany.sca.assembly.builder.PolicyBuilder
  • +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.definitions.xml.Definitions
  • +
  • org.apache.tuscany.sca.provider.PolicyProviderFactory
  • +
+
policy-security
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
  • org.apache.tuscany.sca.definitions.xml.Definitions
  • +
  • org.apache.tuscany.sca.provider.PolicyProviderFactory
  • +
+
policy-xml-ws
+
    +
  • org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
  • +
+
sca-client-impl
sca-client-rmi
web-javascript
+
    +
  • org.apache.tuscany.sca.web.javascript.ComponentJavaScriptGeneratorExtensionPoint
  • +
  • org.apache.tuscany.sca.web.javascript.JavascriptProxyFactoryExtensionPoint
  • +
+
web-javascript-dojo
+
    +
  • org.apache.tuscany.sca.core.ModuleActivator
  • +
+
+
+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/tuscany-maven-archetypes.html b/site/trunk/site-publish/documentation-2x/tuscany-maven-archetypes.html new file mode 100644 index 0000000000..ae0f54d03a --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-maven-archetypes.html @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + Tuscany Maven Archetypes : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Tuscany Maven Archetypes + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Tuscany Maven Archetypes + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +

Tuscany Maven Archetypes

+ +

Tuscany provides some Maven archetypes to make it easy to get going using Tuscany. Maven archetypes provide a simple way to create a project thats configured with exactly what you need to develop your application. You don't need to download, install, or pre-configure Tuscany or your environment, thats all done for you automatically, all you need pre-installed is Maven and Java.

+ +

To give it a try run the following command:

+ +
+
+mvn archetype:generate -DarchetypeCatalog=http://tuscany.apache.org
+
+
+ +

That will list out the available archetypes and ask you to choose which one you want:

+ +
+
+Choose archetype:
+1: http://tuscany.apache.org -> tuscany-contribution-jar (Create an SCA contribution JAR)
+2: http://tuscany.apache.org -> tuscany-quickstart (Create a Tuscany SCA and JSP project)
+3: http://tuscany.apache.org -> tuscany-quickstart-stripes (Create a Tuscany SCA and Stripes Web Framework project)
+4: http://tuscany.apache.org -> tuscany-quickstart-jsf (Create a Tuscany SCA and JSF project)
+Choose a number:  (1/2/3/4):
+
+
+ +

You are then prompted to answer several questions about the project such as the Maven group and artifact IDs, Java package names etc. Some of those will show default values before the prompt so you can just hit enter to take the default. Thats it, and then the Maven project is created in a folder in the current directory named after the artifactid you entered.

+ +

The following shows the console session for creating an SCA contribution JAR:

+
+
+Choose a number:  (1/2/3/4): 4
+Define value for groupId: : org.myco.sca.test
+Define value for artifactId: : scatest
+Define value for version:  1.0-SNAPSHOT: :
+Define value for package:  org.myco.sca.test: :
+Confirm properties configuration:
+groupId: org.myco.sca.test
+artifactId: scatest
+version: 1.0-SNAPSHOT
+package: org.myco.sca.test
+ Y: :
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESSFUL
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time: 1 minute 15 seconds
+[INFO] Finished at: Tue Mar 31 15:08:45 BST 2009
+[INFO] Final Memory: 8M/14M
+[INFO] ------------------------------------------------------------------------
+
+
+ +

That will create a Maven project in a folder named scatest with the following directory structure and files:

+
+
+scatest\pom.xml
+scatest\src\main\java\org\myco\sca\test\HelloworldImpl.java
+scatest\src\main\java\org\myco\sca\test\HelloworldService.java
+scatest\src\main\resources\helloworld.composite
+scatest\src\main\resources\META-INF\sca-contribution.xml
+
+
+ +

When using one of the archetypes which create webapp projects the pom.xml is configured with the maven Jetty plugin so you can run the webapp right away without needing to install the WAR file into an appserver by using the command "mvn jetty:run". The following shows an examaple of this using the tuscany-quickstart archetype:

+ +
+
+> mvn archetype:generate -DarchetypeCatalog=http://tuscany.apache.org
+[INFO] Scanning for projects...
+. . .
+Choose archetype:
+1: http://tuscany.apache.org -> tuscany-contribution-jar (Create an SCA JAR contribution project)
+2: http://tuscany.apache.org -> tuscany-contribution-zip (Create an SCA ZIP contribution project)
+3: http://tuscany.apache.org -> tuscany-quickstart (Create a simple SCA webapp project)
+4: http://tuscany.apache.org -> tuscany-quickstart-jsf (Create a Webapp using SCA and JSF)
+5: http://tuscany.apache.org -> tuscany-quickstart-stripes (Create a Webapp using SCA and the Stripes Web Framework)
+Choose a number:  (1/2/3/4/5): 3
+Define value for groupId: : mygroup
+Define value for artifactId: : mytest
+Define value for version:  1.0-SNAPSHOT: :
+Define value for package:  mygroup: :
+Confirm properties configuration:
+groupId: mygroup
+artifactId: mytest
+version: 1.0-SNAPSHOT
+package: mygroup
+ Y: :
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESSFUL
+[INFO] ------------------------------------------------------------------------
+
+> cd mytest
+> mvn jetty:run
+. . .
+[INFO] Started Jetty Server
+
+
+ +

The webapp runs at the context path of the artifact name on port 8080 so on a web browser go to http://localhost:8080/mytest/ and you should see a page showing:

+ +

Calling HelloworldService sayHello("world") returns:
+Hello world

+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png new file mode 100644 index 0000000000..644078c126 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png differ diff --git a/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png.jpeg b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png.jpeg new file mode 100644 index 0000000000..b44bc4c7d8 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png new file mode 100644 index 0000000000..968d460f81 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png differ diff --git a/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png.jpeg b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png.jpeg new file mode 100644 index 0000000000..55b08faa09 Binary files /dev/null and b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png.jpeg differ diff --git a/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.html b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.html new file mode 100644 index 0000000000..17d511af69 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.html @@ -0,0 +1,224 @@ + + + + + + + + Tuscany Runtime Overview + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > Tuscany Runtime Overview + +
+ + + + + + +
+
+ +
+ +
+ Added by Simon Laws, last edited by Simon Laws on Nov 13, 2009 +  (view change) + +
+ +
+
+

Software Organization

+

Source Code Locations

+

If you take a Tuscany SCA Java source distribution or look in the Tuscany subversion repository (http://svn.apache.org/repos/asf/tuscany/java/sca/) you'll see the code layed out as follows:

+ +
+
+BUILDING
+CHANGES
+LICENSE
+NOTICE
+README
+RELEASE_NOTES
+archetypes    - Maven archetypes for creating Tuscany project templates
+distribution  - the code that defines and build Tuscany distributions
+features      - Maven projects that collect together Tuscany features 
+itest         - project integration tests
+modules       - the source code for the runtime and the SCA extensions
+pom.xml       
+samples       - project samples
+shades        - TBD
+
+
+ +

There is some related source code that's worth mentioning up front. Firstly the project Maven build relies on a set of Maven plugins that have been written specifically for Tuscany. They can also be found in the Tuscany subversion repository (http://svn.apache.org/repos/asf/tuscany/maven-plugins/trunk/) and are as follows:

+ +
+
+maven-bundle-plugin     - Creates Tuscany OSGi bundles based on the Tuscany modules and their dependencies
+                          also generates eclipse PDE projects for Tuscany modules
+maven-eclipse-compiler  - Compiles using the Eclipse compiler and performs OSGi validation
+maven-java2wsdl-plugin  - TBD
+maven-osgi-junit        - Runs Junit tests in an OSGi environment
+maven-tuscany-plugin    - TBD
+maven-wsdl2java-plugin  - TBD
+
+
+ +

Secondly there are a set of tests that the OASIS SCA specifications define called otests. These test the Tuscany SCA runtime for compliance with the specifications. The tests themselves are stored in the OASIS subversion system (http://tools.oasis-open.org/version-control/browse/). Tuscany has a set of modules that retrieve these tests automatically and configure the Tuscany environment to run them (http://svn.apache.org/repos/asf/tuscany/otest/) as follows:

+ +
+
+README
+build.xml                    - Ant utility script
+pom.xml
+sca-assembly                 - Generated automatically by svn externals when you check this directory out
+sca-java-caa                 - Generated automatically by svn externals when you check this directory out
+sca-java-ci                  - Generated automatically by svn externals when you check this directory out
+sca-policy                   - Generated automatically by svn externals when you check this directory out
+tuscany-java-caa-test-runner - Java Common Annotations and APIs test runner
+tuscany-java-ci-test-runner  - Java Component Implementation test runner
+tuscany-policy-test-runner   - Policy test runner
+tuscany-test-runner          - Assembly test runner
+
+
+ +

SCA Java Modules

+

All of the functional code in Tuscany Java SCA can be found under the modules directory. There are a lot of sub-directories here but they basically fall into one of two categories, core function or extensions. We are using the term extension here in the sense that the SCA Assembly specification talks about and extension model You always have to have the core functions but most of the extensions are optional (we say most here because without some of the basic extensions the runtime won't do anything) Finding extension modules is easy. Modules that start with the following words are extensions.

+ +
+
+binding
+databinding
+implementation
+interface
+policy
+
+
+ +

As you can see SCA extensions relate to the extensible parts of the SCA composite file. For example, if you want to use <binding.jms/> in you SCA composite files then you need to include the Tuscany modules for this extension in you installation. In this case that would mean the modules binding-jms and binding-jms-runtime.
+All of the other modules in the modules directory are core modules and are generally required to be present in you Tuscany runtime installation. The use of the word "generally" here sounds a bit vague. This is because the Tuscany runtime itself is based on an extensibility mechanism which means that many parts of the runtime (as well as the SCA extensions) are pluggable. In this way, for example, different hosting environments can be supported. Well talk about runtime extensibility further down this article but for the time being consider all core modules to be mandatory.

+ +

Runtime Building Blocks

+ +

As you may have realized the Tuscany SCA Java runtime is just a Java program that, once started listens for incoming messages (via SCA component services) and, sometimes responds with outgoing messages (via SCA component references).

+ +

+ +

The runtime then provides the context within which SCA composite applications run. If we crack open the Tuscany Runtime box we see the following structure.

+ +

+ +

We'll take a high level look at these different blocks in turn starting with Core.

+ +

Tuscany Core

+

OSGi and JSE

+

The Tuscany runtime will work in the JSE environment and when deployed to an OSGi runtime like Felix or Equinox. Since 1.x we have been through an exercise of refactoring all of the runtime modules in OSGi bundles and providing consistent OSGi manifest files. See (???) for more details on how we OSGi-igfied the Tuscany runtime.

+ +

Runtime Extensibility

+

Runtime Modularity

+

Tuscany SPI

+ +

SCA Extensions

+ +

Tuscany API

+ +

Tuscany Hosting

+

Runtime Features

+

Domain and Nodes

+

Runtime Lifecycle

+

Read

+

Resolve

+

Build

+

Activate

+

Start

+

Stop

+ +
+ + +
+
+ + + diff --git a/site/trunk/site-publish/documentation-2x/tuscany-tomcat-distribution.html b/site/trunk/site-publish/documentation-2x/tuscany-tomcat-distribution.html new file mode 100644 index 0000000000..de9658782b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-tomcat-distribution.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + Tuscany Tomcat Distribution : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Tuscany Tomcat Distribution + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Tuscany Tomcat Distribution + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +

Tuscany Tomcat Distribution

+ +

Tuscany includes a tuscany.war distribution for SCA-enabling Apache Tomcat, find it at the Tuscany download page.

+ +

There are several advantages with using an SCA-enabled Tomcat:

+
    +
  • Individual Web Applications do not need to include any Tuscany jars or Tuscany configuration in the web.xml.
  • +
  • Other SCA contribution formats such as jar or zip files can be deployed to Tomcat.
  • +
  • An SCA domain can be used to support SCA wiring accross Web Applications and contributions
  • +
+ + +

Updating Tomcat to use the tuscany.way distribution is really simple - deploy the tuscany.war to Tomcat, go to the Tuscany admin application, click on install, and thats it. On a restart of Tomcat it can now run SCA contributions and SCA enabled Web applications.

+ +

The initial release of the tuscany.war in 2.0 M3 includes support for SCA-enabled Web applications as well as SCA contributions deployed to a directory named "sca-contributions" in the Tomcat top-level directory, and a single Tomcat instance wide SCA domain. Upcoming releases will enhance the domain support to allow multiple SCA domains and domains spanning more than a single Tomcat instance.

+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/user-reference.html b/site/trunk/site-publish/documentation-2x/user-reference.html new file mode 100644 index 0000000000..f32d0da77a --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/user-reference.html @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + User Reference : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany Docs 2.x > Index > User Reference + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ +

Implementation Types

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Release Introduced Description
implementation.java2.x-M1Support for SCA components implemented with Java classes
implementation.spring2.x-M3Support for Spring Framework
implementation.bpel2.x-M1Support for components implemented in BPEL
implementation.osgi Support for osgi
implementation.web Support JEE web apps as implementation types
+ +

Protocol Bindings

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Release Introduced Description
binding.ws2.0-M1SOAP/HTTP web services
binding.rmi2.0-M1The Java RMI protocol
binding.jms?Asynchronous JMS messaging
binding.ejb?EJB Binding
binding.http?Supports binding of methods over standard Hyper Text Transfer Protocol (HTTP), allowing you to create, retrieve, update, delete items. Also supports conditional creates, retrieves, updates, and deletes using the ETag and LastModified caching protocol described in HTTP.
binding.jsonp?The JSON protocol over HTTP
binding.jsonrpc?The JSON-RPC protocol
binding.atom?supports Atom-publishing protocol, allowing you to create, retrieve, update, delete Atom entries
+ +

Data Bindings

+ + + + + + + + + + + + + + + + + + + + + + +
Type Release Introduced Description
databinding-axiom?Support for AXIOM data binding
databinding-jaxb?Support for JAXB data binding
databinding-json?Support for JSON data binding
+ +

Interfaces

+ + + + + + + + + + + + + + + + + +
Type Release Introduced Description
interface-java?Interfaces described with java interfaces
interface.wsdl?Interfaces described with WSDL definitions
+ +

Hosts

+ + + + + + + + + + + + +
Type Release Introduced Description
http-jetty?The integration between Tuscany and the Jetty web container
+ + +

Policy

+ + + + + + + + + + + + +
Type Release Introduced Description
definitions.xml?Defined intents, policy sets and binding defaults
+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + diff --git a/site/trunk/site-publish/documentation-2x/webnavigation.html b/site/trunk/site-publish/documentation-2x/webnavigation.html new file mode 100644 index 0000000000..1576901066 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/webnavigation.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + WebNavigation : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > WebNavigation + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > WebNavigation + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+ +
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/documentation.html b/site/trunk/site-publish/documentation.html new file mode 100644 index 0000000000..307dc85268 --- /dev/null +++ b/site/trunk/site-publish/documentation.html @@ -0,0 +1,89 @@ + + + + + + + Documentation : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Menus > SCA > Java SCA Menu > Documentation + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+

Basic Guides

+ +

5 Minute Jump-Start
+Getting Started
+User Guide
+Developer Guide

+ +

Runtime Guides

+ +

Standalone
+Servlet Container
+iTest

+ +

Extension Guides

+ +

Spring Guide
+JPA Guide

+

Java SCA Documentation

+ +

Documentation is a bit light at the moment

+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/events.html b/site/trunk/site-publish/events.html new file mode 100644 index 0000000000..982beeae85 --- /dev/null +++ b/site/trunk/site-publish/events.html @@ -0,0 +1,153 @@ + + + + + + + Events : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > General Info > Events + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + + + + + +

Upcoming Events

+ +

July 23-27 2007 - OSCON, Portland, Oregon
+Patrick Leonard, VP Product Development, Rogue Wave Software will host a BoF around "The Current State of the Tuscany Project and Future Direction for Java, C++ and Other Supported Programming Languages"

+ +

June 25-27 2007 - SOA World, New York
+Simon Laws will be presenting 'Building SOA applications using Apache Tuscany' and 'PHP SCA @ Your Service'.

+ +

June 11-14 2007 - ACM SIGMOD/PODS 2007 Conference*, Beijing, China*
+Raymond Feng will be presenting. Presentation co-authored by Luciano Resende.

+ +

June 21-22 2007 - 2007 Open Source China Open Source World Summit, GuangZhou, China
+Raymond Feng will be presenting.

+ +

Past Releases

+ +
    +
  • May 8 2007 - Tuscany Java SDO Beta1 released
  • +
  • May 2 2007 - Tuscany Native SCA and SDO C++ M3 released
  • +
  • December 22 2006 - Tuscany Java SCA M2 released
  • +
  • November 20 2006 - Tuscany Java DAS M2 released
  • +
  • November 14 2006 - Tuscany Java SDO M2 released
  • +
  • November 3 2006 - Tuscany Nattive SCA and SDO C++ M2 released
  • +
+ + +

Past News and Events

+ +

May 8-11 2007 - JavaOne, San Francisco

+ +

A BOF on SCA will be presented entitled "Building Composite Services Applications". Many of Tuscany community members will also be attending JavaOne.

+ +

May 16-18, 2007 - PHP Tek, Chicago, Ill.
+Caroline Maynard, Tuscany user through PHP project will present 'Services Made Simple with PHP' on May 16th, tack 2.

+ +

March 21-23 2007 - Serverside Symposium, Las Vegas
+Tuscany Committers Jeremy Boynes, Meeraj Kunnumpurath, and Jim Marino will be presenting at the Las Vegas Serverside Symposium on the Java SCA project. For information, see http://javasymposium.techtarget.com/lasvegas/index.html

+ +

December 11-15 2006 - JavaPolis 2006 - Belgium
+Tuscany Committer Andy Borley presented "Apache Tuscany - Not The Same Old Architecture". See the presentation here

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/explicit-createupdatedelete.html b/site/trunk/site-publish/explicit-createupdatedelete.html new file mode 100644 index 0000000000..cb0ae43549 --- /dev/null +++ b/site/trunk/site-publish/explicit-createupdatedelete.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + Apache Tuscany : Explicit CREATE,UPDATE,DELETE + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > Explicit CREATE,UPDATE,DELETE + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Explicit Create,Update,Delete

+

The RDB DAS provides a simple, command-oriented approach for CUD operations.

+ +

The Commands can be explicit INSERT, UPDATE , DELETE SQL statements like

+
    +
  • INSERT INTO TableName (col1, col2,...) values (val1, val2,...);
  • +
  • DELETE FROM TableName where col1=? and col2=?...
  • +
  • UPDATE TableName set col1=val1, col2=val2...where col1=?...
    +With this approach, the Command is directly used by the JDBC's PreparedStamement. This approach avoids use of SDO capabilities.
  • +
+ + +

Below is example config.

+
+
<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd"> 
+
+    <Command name="insert customer"    
+    SQL="insert into CUSTOMER (ID, LASTNAME, ADDRESS) values (?, ?, ?)"
+    kind="Insert">
+    </Command>   
+    
+    <Command name="delete customer"    
+	SQL="delete from CUSTOMER where ID = ?"
+    kind="Delete">
+    </Command>
+
+    <Command name="update customer"
+        SQL="update CUSTOMER set LASTNAME = 'Pavick' where ID = ?"
+        kind="Update">
+    </Command>  
+
+</Config>
+
+
+ +

Another way to perform the same operations is through use of SDO DataObjects. For this, the root DataObject needs to be formed either in static (DataObjectModel) or dynamic way (using Database Query's ResultSetMetaData). With the root DataObject in place, it uses, SDO APIs for DataObject and ChangeSummary to perform create, delete, update. For more details check (WorkingWithBasicCrud).

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/explicit-resultset-shape-definition.html b/site/trunk/site-publish/explicit-resultset-shape-definition.html new file mode 100644 index 0000000000..b194a81d25 --- /dev/null +++ b/site/trunk/site-publish/explicit-resultset-shape-definition.html @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + Apache Tuscany : Explicit ResultSet shape definition + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > Explicit ResultSet shape definition + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Explicit ResultSet shape definition

+ +

The RDB DAS provides the ability to specify format(shape) of the ResultSet. This is necessary when the JDBC driver in use does not provide adequate support for ResultSetMetaData. Also, we expect that specifying the result set shape will increase the performance. The following is the provision in RDB DAS config to specify result set shape:

+
+
<xsd:complexType name="Command">
+   <xsd:sequence>
+     ....
+      <xsd:element  maxOccurs="unbounded" minOccurs="0"
+            name="ResultDescriptor"  type="config:ResultDescriptor"/>
+   </xsd:sequence>
+   ....
+</xsd:complexType>
+
+<xsd:complexType name="ResultDescriptor">
+   <xsd:attribute name="columnIndex" type="xsd:int" default="-1"/>
+   <xsd:attribute name="columnName" type="xsd:string"/>
+   <xsd:attribute name="tableName" type="xsd:string"/>
+   <xsd:attribute name="schemaName" type="xsd:string"/>
+   <xsd:attribute name="columnType" type="xsd:string"/>
+</xsd:complexType>
+...
+
+
+

The following is an example config file that defines a result set shape: :

+
+
<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd">
+  <Command name="literal" SQL="Select 99, 'Roosevelt', '1600 Pennsylvania Avenue' from customer" kind="Select">
+     <ResultDescriptor columnName="ID" tableName="CUSTOMER"
+         columnType="commonj.sdo.Long"/>
+     <ResultDescriptor columnName="LASTNAME" tableName="CUSTOMER"
+         columnType="commonj.sdo.String"/>
+     <ResultDescriptor columnName="ADDRESS" tableName="CUSTOMER"
+        columnType="commonj.sdo.String"/>
+  </Command>
+   <Table tableName="CUSTOMER">        <Column columnName="ID" converterClassName="org.apache.tuscany.das.rdb.test.mappings.StringToLongConverter"/>
+   </Table>
+</Config>
+
+
+ +

Result Descriptor on Dynamic Commands

+ +

Allow passing ResultDescriptor to Dynamic Commands. i.e. Command x = das.createCommand("y");
+x can have set/get of single/list of ResultDescriptors. Useful for databases like Oracle
+which require user to pass ResultDescriptor and for cases when the commands are created dynamically
+using createCommand()

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/feature-areas-and-what-folks-are-working-on.html b/site/trunk/site-publish/feature-areas-and-what-folks-are-working-on.html new file mode 100644 index 0000000000..23fa140ee5 --- /dev/null +++ b/site/trunk/site-publish/feature-areas-and-what-folks-are-working-on.html @@ -0,0 +1,1877 @@ + + + + + + + + + + + + + + + Apache Tuscany : Feature areas and what folks are working on + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Feature areas and what folks are working on + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

This table is an attempt to capture the various requirements that I've gathered from browsing the SCA specs and discussions on the Tuscany dev list, and the work in-progress in the community.

+ +

We are hoping that it will help organize our requirements and discuss how we want to stage their implementation over our next milestones. It should also help new contributors understand who is working on what, and grab areas that need work.

+ +

The table is under construction. We are inviting everybody in our community to come help build that page with the requirements that they are aware of, and the features that they are interested in.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Feature area
Milestone
People working on it
Comments / description
Status
 Assembly PM spec
    
Complex properties

Venkat Add support to SCDL parsers, builders and factory configuration. Integrate with data bindings. This has been completed and checked into the sca-java-integration branch.
Pass by-value / by-reference
Venkat Initial implementation almost in? Some cleanup necessary? Need to understand how to clone/copy data with different databindings, SDO, JAX-WS, and POJOs. Understand how to handle pointers across multiple parameters when copying. Has now been improved for performance to skip copying when the source or target is a ServiceBinding or ReferenceBinding
Multiplicity    Support multiplicity constraints on references. Support multiple wires. Handle overrides. Investigate how to handle binding selection. Support for callbacks.  
Naming constraints in a composite
  Luciano (Tuscany-914)
Validate that service/reference/component names are unique inside a composite. Check the presence of SCDL includes.  
Multi-valued properties
Venkat Add support to SCDL parsers, builders and factory configuration. Integrate with data bindings. This has been implemented and checked into the sca-java-integration branch. This impl. assumes that if a property is of simple type and has multiple values, then each value is defined in the scdl within an enclosing element who name is 'value'. e.g. <value>Some String Value</value>.
WSDL 2.0
   Add support for WSDL 2.0 accross the board, runtime, WSDL/Java tools and WS binding.  
Operation overloading (simple exact matching)
Rick Change runtime service contract hashmap and invocation handling/dispatching. Adjust extensions to this. Match identical methods on ends of a wire.
Operation overloading (complete support)
   Match and wire compatible methods, factor in different databindings, WSDL wrapping/unwrapping, and match invocation and actual parameters to a compatible method.  
ComponentType side files
   Partial support already in. Need to define overriding strategy when implementation and componentType metadata overlap.
 
Support for SCA contribution

Raymond, Luciano Generic handling of SCA contributions and base plugin mechanism for loading/scanning artifacts. Allow a contribution and artifacts in it to be addressed by URI. Do not assume a fixed default.scdl file.
The following is a summary of what's available for the contribution service:
+- Contribution Model
+- Processing jar and folder based contributions
+- Artifact loader WSDL, XSD, SCDL/Composite, Java/Class, sca-contribution.xml
+- Contribution repository
+- Contribution Service (add to SCA Domain using Assembly services)
+- Integration with SCAMiniRuntime, unit test cases, and integration tests cases
+- Very initial artifact addressing/resolving integrated into Assembly services
+- Support for loading sca-contribution.xml
+
+Design Draft
+
+Look for the following jira issues to see what's still not available in the contribution services : TUSCANY-1158, TUSCANY-1159, TUSCANY-1160, TUSCANY-1161, TUSCANY-1162, TUSCANY-1163
Filesystem based SCA contributions
  Raymond, Luciano Support free-form folder structure in a contribution. Support multiple SCDLs per contribution. Scan for SCDL and other artifacts under an SCA contribution.
Completed and available in the sca-java-integration branch.
JAR based SCA contributions

Raymond, Luciano Support JAR contribution structure. Support multiple SCDLs per contribution. Scan for SCDL and other artifacts under an SCA contribution.
Completed and available in the sca-java-integration branch.
SCA includes
   This does not seem complete, verify, in particular wiring across includes and support for nested includes.  
Composite resolution (no recursion)   Luciano Register composites and find them by Qname within a contribution. Support references across contributions in domain level includes.  
Composite resolution (recursive composition)
   Resolve composites with nested composites. Support full recursion. Current support needs to be fixed, as each reference to a composite gets it reloaded/redefined.
 
XML property configuration in side files
   Properties configured in an external XML file. Resolve the file location, load it. See if loading and xpath reference mechanism needs to be adjusted for this.
 
Ref/Service/Property config override (no recursion)
   Support overriding of services/references/properties. Investigate overrides combined with multiplicity.
 
Ref/Service/Property config override (recursive)
   Support overriding of services/references/properties in nested composites. Handle multiple overrides. Support additions vs overrides in the case of bindings. Investigate overrides combined with multiplicity.
 
Wiring with service/reference bindings
   Support binding URIs. Then configuration of binding URI with wires. Then propagation of binding info from a service to a reference wired to it.
Support for WS binding mainly completed determining the URI from all the combinations described in the assembly and WS binding specs.
Support for business exceptions
  Rick, Raymond Distinguish handling of runtime exceptions vs business exceptions. Add support to invocation/dispatching mechanism + POJO implementations, bindings and databinding.
We added the support for intra-composite and inter-composite over binding.axis2. Please see the Design Draft. There are a few itest cases you can play with. + +
Context info in error reports
   Across the board, need to provide application level context data (composite, component, service, reference etc.) with errors, to allow an app developer to understand what's wrong in his application. Without that he's left having to understand all the underlying middleware.
 
Minimum SCDL extensibility (non SCA namespaces)
   Support additional bindings, implementation types, interface types, and policies from diff namespaces. Should already work for bindings and implementations. Need to check policies and interface types.
 
Complete SCDL extensibility as defined by the XSD
   Will need changes to a number of loaders and builders.
 
Support for xsi:type in addition to global elements
   Changes to most loaders or improvements to LoaderRegistry.
 
Support for various ordering of SCDL elements
  Simon Loaders depend on a specific order of elements in the SCDL files. Supporting other possible sequences will require changes in the loaders logic.
 
Autowire - local
   Adjust to the spec, which now defines this at the assembly level, independent of the Java C&I.
 
Autowire - domain level
   Support autowire in a domain, including components services and references, policy intents and compatible bindings.
 
Autowire extension point
   Plugin mechanism to allow different autowire algorithms to be plugged in
 
SCDL validation, semantic constraints (obvious cases)
   Only support the obvious/main semantic constraints. Separate tool to perform semantic validation of an assembly. Also needs to be invoked as part of deployment and/or loading at runtime.
 
SCDL validation, semantic constraints (complete)
   Complete support for the spec. Separate tool to perform semantic validation of an assembly. Also needs to be invoked as part of deployment and/or loading at runtime.
 
Implementation / component matching
   Make sure that an implementation matches the component that uses it. For example enforce wiring of required references.
 
Callback support   Ignacio Combinations of sync and async. Determine which binding to use for a callback invocation.  
Configured implementations
   Configuration of component implementations in .componentType files or inlined in implementations (spec issue 8) and in component declarations. Resolve/merge when overlap between the three.  
Promotion of Ref/ Services/ Properties (no recursion)
   New promotion mechanism for services/references/properties. Service/reference/property definition on components. Handle promotion of already wired services and references.  
Promotion of Ref/ Services/ Properties (recursive)    New promotion mechanism for services/references/properties. Service/reference/property definition on components. Handle promotion of already wired services and references.  
Multiple bindings on services and refs    Basic support for multiple bindings is in. See how configuration overriding works with multiple bindings.  
Ability to use and alter SCDL model at deployment
  Sebastien Add missing relationships to the SCDL logical model, independent of runtime context. Allow deployment tools to alter the model and write it back to XML.
 
Interchangeability of Java and WSDL   Ant, Rick Build ServiceContract representation from Java or WSDL. Needs more work to understand combinations of SDO/JAXB/POJOs and wrapped/unwrapped. Add logic to wiring framework to match WSDL portTypes and Java interfaces. Support for using interface.java or interface.wsdl interchangably completed. See TUSCANY-1111 for some limitations, mainly due to limitations of the databinding framework.
Document limitations and deviations from the spec
   Review the spec and document Tuscany limitations and differences with the SCA assembly spec.
 
 Java C&I spec
    
Derive service name from interface name
   Clarify with specification, is the service name the fully qualified class name, the class name without the package name, or are we adding a service name attribute to the @Service annotation
 
Injection of multivalued properties   Raymond Map multi-valued properties to java.util.Collection or []. Supported by sca-java-integration branch now.
Injection of references with multiplicity 0..n
  Raymond Map references with Multiplicity to java.util.Collection or []. Supported by sca-java-integration branch now.
Required properties
   Validation that required properties are configured
 
Service references (minimum)
   Minimum implementation of Service references supporting setCallback/getCallback. Local usage only with no serialization of the reference.
 
Service references (complete support)
   Complete support for the Service reference programming model, including the ability to pass Service References around, serialize them, then use them to perform invocations outside of the context where they were initially obtained.  
Conversational
   Not sure what's missing. Check the spec against the runtime to assess what's remaining first.
 
WSDL2Java / Java2WSDL / SDO - simple cases
   Command line tooling. Support wrapped/non-wrapped patterns, multiple parts/message, nested complex types, faults/Exceptions. Generation of SCA annotations in interfaces.  
WSDL2Java / Java2WSDL / JAX-WS
   Command line tooling. Wrap/integrate the JAX-WS tooling. Customize it to generate SCA annotations in interfaces? Investigate how the runtime could reuse the JAX-WS WSDL/Java mapping logic as well, since it'll need to know the mapping rules as well.
 
@Autowire
   Adjust to what the latest spec, maybe a little different from the current Tuscany support.
 
Configured implementations    Add support for Java annotations allowing configuration of a POJO (services, references, bindings and properties) without SCDL.
 
SCA as a wrapper over JAX-WS async
   Allow cast of an SCA proxy to a JAX-WS API to support the JAX-WS async programming model.  
Ability to run with Java 2 security enabled
   This is not just related to the Java C&I. Need to go over the runtime code and wrap sections of code that access resources, threads, classloaders etc in doPrivileged blocks to allow the runtime to work in an environment with Java 2 security enabled.
 
Document limitations and deviations from the spec    Review the spec and document Tuscany limitations and differences with the SCA Java C&I spec.  
Conversational PM
    
Core support   Ignacio, looking for volunteer to take over Lifecycle in. Persistence of conversation state in. Needs to support tran/recovery. Also need some redesign to avoid having to send/receive a routing path and play nicely with bindings.  
Integration with bindings    Plugin mechanism to allow a binding to declare conv capability and support conversational. Maybe define a "conversational policy intent"  
WS binding   Rick Map conversational to the correct MEPs. Investigate how to flow conversation id. Use WS-addressing, message-id, relates-to etc.  
JMS-binding
 
Need to understand how/if conversational means anything to the JMS binding
 
EJB binding
 
Check the EJB binding spec to understand what needs to be done here
 
JSON-RPC binding
   Investigate if it makes sense to support conversational with this binding
 
SCA default binding
   Understand how a concrete binding will be selected depending on conversational requirements (may fold into some policy intent work)
 
REST binding    Investigate if it makes sense to support conversational with this binding  
HTTP Session support
   Persist session scope and conversational state with the HTTP session?
 
Non-blocking PM
    
Core support   Ignacio, looking for volunteer to take over No support for async over sync yet (see spec issue) but everything else seems to be there. I am concerned with how we represent callbacks and how their info flows between remote components Async one-way and with callback work. Integration tests in the sca-java-integration branch are successful. We'll need to revisit later how to represent callback endpoints when flowing over bindings, in particular the Web Service and JMS bindings.
Integration with bindings    Plugin mechanism to allow a binding to declare support for async and callback, MEPs and/or polling.  
WS binding (short term/sync MEP)   Ignacio, looking for volunteer to take over Dispatch call to a thread and continue to use a sync MEP. Will not support unsolicited callbacks. Issue: WSDL representation of callback vs Axis2 client and sync MEP.  
WS binding (real async MEP)
   Use an async MEP and WS-addressing and callbacks. Also investigate what needs to be done w.r.t security on the callbacks.

JMS binding
   Sync up with the latest JMS binding spec
 
EJB binding
   Do we need to support this? We support async invocation of POJOs, but people know that EJBs are synchronous.
 
JSON-RPC binding
   Used in AJAX apps which are based on async exchanges. So the JSON-RPC binding should support the non-blocking PM and callbacks.
 
REST binding
   Not sure if there is a requirement at all for real CRUD REST. There may be a requirement for activity based XML/HTTP services, similar to the WS binding requirement.
 
SCA default binding
   Understand how a concrete binding will be selected depending on non-blocking invocation requirements.
 
SCA default binding
    
Client side
    
Server side
    
Selection of concrete binding
   Based on policy intents, capabilities of the installed runtime, and where the target service is deployed.
 
 JMS binding
    
Adjust to latest SCDL spec
   Support for the latest SCDL syntax. Support for JMS in a JMS managed environment.
 
JMS data binding support
   Support data bindings as defined in the JMS binding spec.
 
Integrate with Tuscany data bindings
   Integrate with Tuscany databinding framework. Support sending/receiving JAXB or SDO objects through JMS.
 
WS binding
    
Adjust to latest SCDL spec
   A few changes to adjust to the latest WS binding spec.
 
Configuration of WSDL2Java mapping
   Related to the Java / WSDL story. Use the SDO based and JAX-WS Java / WSDL generators to produce WSDL? Apply the corresponding mapping in the runtime as well.
 
Handling of faults
   Support faults at least with SDO and JAX-WS. Support other data bindings available through the data binding framework.
 
Support for attachements
  
 
Support for RPC encoded
  
 
Working without WSDL
   Implement the JAX-WS defaults in the absence of a WSDL definition.
 
Support for wrapped/non-wrapped
   Add support for JAX-WS wrap/unwrap patterns. Apply the same principles with SDO and other data bindings.
 
Support for SOAP headers
   Investigate how/if SOAP headers should be exposed to a client and target service.
 
EJB binding
    Under IP-CLEARANCE process.
Client side     
Server side
 
Generate of EJB "wrapper" code and EJB DD?
 
Geronimo integration    Generate Geronimo specific artifacts, and/or tighter integration with the Geronimo runtime, potentially avoiding any code generation.
 
REST binding
    
Resource interface and PM
   Define a new component interface type for CRUD operations on a resource
 
Client side
   Mapping to HTTP verbs on the client side
 
Server side
   Dispatching of HTTP verbs to a component on the server side
 
Activity style interactions
   Not real REST, similar to the WS binding but with plain XML / HTTP
 
Support for HTTP headers
   Support for last-modified, etags and other HTTP headers
 
 JSON-RPC binding
     
Support for references    Currently only supports services. Needs to add client side support as well.
 
Integrate with latest toolkits    Integrate with latest JSON toolkits, initial integration was done some time ago, we need to refresh it.
 
Complete support for JSON spec
   Check what's missing in the current runtime
 
Data binding support
  Raymond   We have made quite a few improvements in this area in the sca-java-integration branch. +
    +
  • Added introspection of java interfaces to recognize known types for various databindings
  • +
  • Improved SDO and JAXB handling
  • +
  • Support for exception transformations accross databindings
  • +
  • Added JavaBean2StAX transformation
  • +
  • Improved StAX related transformations
  • +
  • Added more itest cases
  • +
+
SDO and JAXB
 
Support conversions between SDO and JAXB
 
AXIOM support
   Support conversion from/to AXIOM
 
SCDL annotations
   Define SCDL annotations to configure data bindings. Needs to be pluggable, maybe change at some point to use Intents
 
Add more transformers and perf optimizations
   The databinding framework approach will perform only if we have enough transformers to reduce the number of conversions going from one format to another. Added the SDO --> AXIOM  transformer using OMDataSource
Policy Intent framework
    
SCDL and core support, model, loaders, builders



 
Intent determination algorithm
    
Wire matching     
Binding / container configuration
    
Transaction policy
    
SCDL model, loaders, builders
    
Runtime interceptors
    
Transaction service integration
    
Integration with bindings
    
WS-binding support for transactions
    
JMS-binding support for transactions
    
EJB binding support for transactions
    
SCA default binding support for transactions
    
Security policy
    
SCDL model, loaders, builders
    
Runtime interceptors
    
Authentication / autorization service integration
    
Integration with bindings
    
WS-binding support for security
    
JMS-binding support for security
    
EJB binding support for security
    
SCA default binding support for security
    
JSON-RPC binding support for security
    
REST binding support for security
    
Reliability policy
    
SCDL model, loaders, builders
    
Runtime interceptors
    
WS-binding support for reliability
    
JMS-binding support for reliability
    
SCA default binding support for reliability
    
Modular build
    
Extensions
   Refactor extensions to improve our build system and allow the various parts of the project to be built independently
 
Samples
   Refactor samples to improve our build system and allow the various parts of the project to be built independently  
Integration tests
   Refactor integration tests to improve our build system and allow the various parts of the project to be built independently  
Packaging / deployment
    
SCA domain repository / metadata
  Raymond, Sebastien
Define services to add/remove composites and maintain a logical SCA domain level composite. Needs to be pluggable. Support domain base URI and base URI for each binding scheme.
 
Deployment of SCA contributions
  Raymond, Luciano
Define services to add/remove SCA contributions to the SCA domain.
 
Artifact addressing, resolving, loading
  Raymond, Luciano
Plugin mechanism to handle addressing of artifacts within contributions, resolution within a contribution, conflicts between contributed artifacts and externally referenced artifacts (WSDL and XSD for example)
 
Deployment extensions
  Raymond, Luciano
Plugin mechanism to allow an extension to contribute to deployment as well.
 
Tuscany classloading infrastructure
   Support classloaders per SCA contribution. Isolate the application artifacts from the Tuscany runtime artifacts.
 
OSGI classloader integration
  
 
Administration
    
JMX support
   Basic services start/stop etc. Need to assess what's in the current code base.
 
Diagnostic / event logging
   Go through the kernel code and add event logging plug points.
 
Monitoring / instrumentation
   Go through the kernel code and add monitoring plug points. Add monitor plug points on composite, component start/stop, service invocation etc. and make sure that they are given enough context.
 
Core start/stop/query admin services
   Basic core services to start/stop/query running components.
 
Scenarios
    
Nested composition
    
Domain level wiring
    
Domain wiring across runtimes
    
Mixing runtimes in a composite
    
Web application integration
    
Mediation / routing
    
Web 2.0 application
    
Adjust Bigbank to the latest spec
    
WS-I SupplyChain application
    
Host runtimes
    
Tomcat integration
   Our M2 integration story packages the whole runtime in each web app. We need another better / lighter integration.
 
Geronimo integration
   Just run Tuscany webapps on Geronimo
 
Geronimo integration
   A real integration with the Geronimo runtime
 
OSGI integration
    
Standalone server
    
Spring component type
    
Extend Spring to declare SCA services / refs
   This is described in the SCA for Spring spec  
Use a Spring assembly in an SCA composition
   Looks like a subset of the SCA for Spring spec is implemented?  
Javascript component type
    
Support for JavaScript components     
Groovy component type
    
Support for Groovy components     
JRuby component type
    
Support for JRuby components     
BPEL component type
    
Support for BPEL components     
Function test suite
    
TBD     
Integration test suite
    
Complex composition test cases  
  
Multiple runtimes / containers / bindings
    
WS based test cases
    
EJB based test cases
    
JMS based test cases
    
REST based test cases
    
JSON-RPC based test cases
    
Spring integration test cases
    
     
Samples
    
Sample binding
    
Sample databinding
    
Sample component impl. type
    
Sample policy
    
Simple assembly samples
    
WS binding samples
    
JMS binding samples
    
EJB samples
    
JSON-RPC samples     
Nested composites
    
SCA default binding
    
SCA include samples
    
Property samples
    
POJO samples
    
Jruby samples
    
Javascript samples
    
Groovy samples
    
REST samples
    
Configuration override samples
    
Transaction samples
    
Reliability samples
    
Security samples
    
Standalone server samples
    
Web app integration samples
    
Spring integration samples
    
Architecture documentation
    
Kernel
    
POJO support
    
Plugging in a component impl type
    
Plugging in a binding
    
Plugging in a policy
    
Plugging in a data binding
    
Plugging in an interface type
    
Plugging in a new host integration
    
Building
    
JMS binding
    
WS-binding
    
JSON-RPC binding
    
RMI/EJB
    
Deployment / packaging
    
OSGI integration
    
Spring integration
    
User documentation
 Shelita   
Build Tuscany
    
Develop an SCA app
    
Build an SCA app
    
Package/Deploy
    
Run
    
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/features-for-java-das-m3-release.html b/site/trunk/site-publish/features-for-java-das-m3-release.html new file mode 100644 index 0000000000..3c04f80dc2 --- /dev/null +++ b/site/trunk/site-publish/features-for-java-das-m3-release.html @@ -0,0 +1,613 @@ + + + + + + + + Features for Java DAS M3 Release + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java Project > RDB DAS > Features for Java DAS M3 Release + +
+ + + + + + +
+
+ +
+ +
+ Added by Adriano Crestani, last edited by Luciano Resende on Apr 19, 2007 +  (view change) + +
+ +
+
+

Unresolved Java DAS JIRAs

+ +

The table below contains the listed JIRAs for Java DAS that are actually(04/18/2007) unresolved. It must be decided which JIRA should be resolved before M3 release and which should be postponed for next.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T Patch Info Key Summary Assignee Reporter Pr Status Res Created Updated
Bug

TUSCANY-1027 DAS should throw a meaningful exception if applyChanges process encounters a DO with no defined PK Unassigned Kevin Williams   Open UNRESOLVED 04/Jan/07 10/Jan/07
Improvement
TUSCANY-864 Better integration between SCA and DAS Unassigned Luciano Resende   Open UNRESOLVED 16/Oct/06 09/Nov/06
Bug
TUSCANY-961 DAS: Using deprected SDO method causes Type lookup failure Brent Daniel Brent Daniel   Open UNRESOLVED 30/Nov/06 17/Jan/07
Test
TUSCANY-1010 Add/Enhance explicit CUD testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1009 Adding/Enhancing name mapping testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1014 Add/Enhance convention over configuration testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1012 Add/Enhance explicit resultSetShape testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1011 Add/Enhance external transactions test cases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1015 Add/Enhance graphhelper testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Improvement
TUSCANY-986 DAS integration with SDO 2.1 APIs Unassigned Kevin Williams   Open UNRESOLVED 11/Dec/06 17/Jan/07
Improvement
TUSCANY-915 User level documentation Unassigned Kevin Williams   Open UNRESOLVED 10/Nov/06 17/Jan/07
New Feature

TUSCANY-916 OCC recovery framework Brent Daniel Kevin Williams   Open UNRESOLVED 10/Nov/06 17/Jan/07
Bug
TUSCANY-953 Invalid data graph results in NPE on applyChanges Unassigned Kevin Williams   Open UNRESOLVED 28/Nov/06 17/Jan/07
Bug Patch Available TUSCANY-952 DAS must support queries that reference tables in different "schemas" Unassigned Kevin Williams   Open UNRESOLVED 28/Nov/06 01/Mar/07
Bug
TUSCANY-542 Pager API needs some work Kevin Williams Kevin Williams   Open UNRESOLVED 13/Jul/06 17/Jan/07
Improvement
TUSCANY-233 Case sensitivity DAS config file Unassigned Rick Rineholt   Open UNRESOLVED 26/Apr/06 17/Jan/07
Sub-task Patch Available TUSCANY-904 TUSCANY-864
+ Expose DAS as SCA container
Unassigned Amita Vadhavkar   Open UNRESOLVED 07/Nov/06 27/Feb/07
New Feature Patch Available TUSCANY-800 Introduce new DAS Sample APP to demonstrate DAS advanced features Luciano Resende Luciano Resende   Open UNRESOLVED 05/Oct/06 10/Apr/07
Improvement Patch Available TUSCANY-863 CompanyWeb DAS Sample should create and initialize the canned database when app is loaded by first time and db is not available Luciano Resende Luciano Resende   Open UNRESOLVED 16/Oct/06 17/Apr/07
+ +

Resolved Java DAS Jiras

+ +

The table below contains the listed JIRAs for DAS Java that were resolved/closed since last release: Java DAS M2 released on November 20th, 2006. It will be included as the fixed bugs and new features in Java DAS M3 release documentation.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T Patch Info Key Summary Assignee Reporter Pr Status Res Created Updated
New Feature
TUSCANY-866 DAS Use overqualified update by default Brent Daniel Brent Daniel   Resolved Fixed 17/Oct/06 27/Nov/06
Improvement
TUSCANY-954 Need to throw an exception when users try to set a relationship and FK property Brent Daniel Brent Daniel   Resolved Fixed 28/Nov/06 04/Dec/06
Bug
TUSCANY-968 Invalid FK columns causes NPE Brent Daniel Brent Daniel   Resolved Fixed 04/Dec/06 04/Dec/06
Bug
TUSCANY-1087 DAS should not commit individual commands as part of applyChanges Unassigned Kevin Williams   Closed Fixed 01/Feb/07 01/Feb/07
Improvement Patch Available TUSCANY-841 Need a test for relationships formed by compound keys Luciano Resende Kevin Williams   Resolved Fixed 14/Oct/06 24/Mar/07
New Feature
TUSCANY-898 Expose DAS as a SCA service Luciano Resende Luciano Resende   Resolved Fixed 05/Nov/06 03/Jan/07
Bug
TUSCANY-971 DAS may not now depend on CPL if EMF has completed migration to EPL Luciano Resende Luciano Resende   Resolved Fixed 05/Dec/06 05/Dec/06
Bug
TUSCANY-937 Multiple test failures while connecting with MySQL Brent Daniel Luciano Resende   Resolved Fixed 16/Nov/06 21/Nov/06
Improvement
TUSCANY-948 Consider DAS config connection info for J2SE environment Luciano Resende Kevin Williams   Resolved Fixed 22/Nov/06 10/Feb/07
Test
TUSCANY-1008 Adding/Enhancing PartialUpdates testcases Luciano Resende Luciano Resende   Resolved Fixed 21/Dec/06 21/Dec/06
New Feature
TUSCANY-1041 DAS Needs a JavaDoc distribution Luciano Resende Luciano Resende   Resolved Fixed 09/Jan/07 09/Jan/07
Improvement
TUSCANY-886 DAS distributions should unpack into it's own directory based on the version Luciano Resende Luciano Resende   Resolved Fixed 28/Oct/06 04/Dec/06
Bug
TUSCANY-441 Remove DAS use of Class variable to trigger logging. Luciano Resende Kevin Williams   Resolved Fixed 05/Jun/06 07/Mar/07
Bug
TUSCANY-957 DAS generates invalid INSERT statement when no properties are set on the new DO Brent Daniel Kevin Williams   Resolved Fixed 29/Nov/06 05/Dec/06
Test
TUSCANY-1013 Add/Enhance configHelper testcases Luciano Resende Luciano Resende   Resolved Fixed 21/Dec/06 09/Mar/07
Improvement
TUSCANY-939 DAS Should throw an exception when ResultSetMetadata is invalid Brent Daniel Kevin Williams   Resolved Fixed 17/Nov/06 27/Nov/06
+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/features.html b/site/trunk/site-publish/features.html new file mode 100644 index 0000000000..8b731f1f18 --- /dev/null +++ b/site/trunk/site-publish/features.html @@ -0,0 +1,715 @@ + + + + + + + + Features + + + + + + + +
+  Apache Tuscany > Index > Documentation > Features + +
+ + + + + + +
+
+ +
+ +
+ Added by Jean-Sebastien Delfino, last edited by Jean-Sebastien Delfino on Feb 01, 2007 +  (view change) + +
+ +
+
+

Here's a list of features that I think we need to implement at some point. I am hoping that we can use this page to organize our thoughts and sort out the features that we'll want to support in the next few milestones.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Feature Milestone
Who is working on it
Comments / description
 Assembly PM spec
   
Complex properties

  Add support to SCDL parsers, builders and factory configuration. Integrate with data bindings.
Pass by-value / by-reference
  Initial implementation almost in? Some cleanup necessary? Need to understand how to clone/copy data with different databindings, SDO, JAX-WS, and POJOs. Understand how to handle pointers across multiple parameters when copying.
Multiplicity    Support multiplicity constraints on references. Support multiple wires. Handle overrides. Investigate how to handle binding selection. Support for callbacks.
Naming constraints in a composite
   Validate that service/reference/component names are unique inside a composite. Check the presence of SCDL includes.
Multi-valued properties
  Add support to SCDL parsers, builders and factory configuration. Integrate with data bindings.
WSDL 2.0
   Add support for WSDL 2.0 accross the board, runtime, WSDL/Java tools and WS binding.
Operation overloading (simple exact matching)
  Change runtime service contract hashmap and invocation handling/dispatching. Adjust extensions to this. Match identical methods on ends of a wire.
Operation overloading (complete support)
   Match and wire compatible methods, factor in different databindings, WSDL wrapping/unwrapping, and match invocation and actual parameters to a compatible method.
ComponentType side files
   Partial support already in. Need to define overriding strategy when implementation and componentType metadata overlap.
Support for SCA contribution
 
  Generic handling of SCA contributions and base plugin mechanism for loading/scanning artifacts. Allow a contribution and artifacts in it to be addressed by URI. Do not assume a fixed default.scdl file.
Filesystem based SCA contributions
   Support free-form folder structure in a contribution. Support multiple SCDLs per contribution. Scan for SCDL and other artifacts under an SCA contribution.
JAR based SCA contributions
 
  Support JAR contribution structure. Support multiple SCDLs per contribution. Scan for SCDL and other artifacts under an SCA contribution.
SCA includes
   This does not seem complete, verify, in particular wiring across includes and support for nested includes.
Composite resolution (no recursion)    Register composites and find them by Qname within a contribution. Support references across contributions in domain level includes.
Composite resolution (recursive composition)
   Resolve composites with nested composites. Support full recursion. Current support needs to be fixed, as each reference to a composite gets it reloaded/redefined.
XML property configuration in side files
   Properties configured in an external XML file. Resolve the file location, load it. See if loading and xpath reference mechanism needs to be adjusted for this.
Ref/Service/Property config override (no recursion)
   Support overriding of services/references/properties. Investigate overrides combined with multiplicity.
Ref/Service/Property config override (recursive)
   Support overriding of services/references/properties in nested composites. Handle multiple overrides. Support additions vs overrides in the case of bindings. Investigate overrides combined with multiplicity.
Wiring with service/reference bindings
   Support binding URIs. Then configuration of binding URI with wires. Then propagation of binding info from a service to a reference wired to it.
Support for business exceptions
   Distinguish handling of runtime exceptions vs business exceptions. Add support to invocation/dispatching mechanism + POJO implementations, bindings and databinding.
Context info in error reports
   Across the board, need to provide application level context data (composite, component, service, reference etc.) with errors, to allow an app developer to understand what's wrong in his application. Without that he's left having to understand all the underlying middleware.
Minimum SCDL extensibility (non SCA namespaces)
   Support additional bindings, implementation types, interface types, and policies from diff namespaces. Should already work for bindings and implementations. Need to check policies and interface types.
Complete SCDL extensibility as defined by the XSD
   Will need changes to a number of loaders and builders.
Support for xsi:type in addition to global elements
   Changes to most loaders or improvements to LoaderRegistry.
Support for various ordering of SCDL elements
   Loaders depend on a specific order of elements in the SCDL files. Supporting other possible sequences will require changes in the loaders logic.
Autowire - local
   Adjust to the spec, which now defines this at the assembly level, independent of the Java C&I.
Autowire - domain level
   Support autowire in a domain, including components services and references, policy intents and compatible bindings.
Autowire extension point
   Plugin mechanism to allow different autowire algorithms to be plugged in
SCDL validation, semantic constraints (obvious cases)
   Only support the obvious/main semantic constraints. Separate tool to perform semantic validation of an assembly. Also needs to be invoked as part of deployment and/or loading at runtime.
SCDL validation, semantic constraints (complete)
   Complete support for the spec. Separate tool to perform semantic validation of an assembly. Also needs to be invoked as part of deployment and/or loading at runtime.
Implementation / component matching
   Make sure that an implementation matches the component that uses it. For example enforce wiring of required references.
Callback support    Combinations of sync and async. Determine which binding to use for a callback invocation.
Configured implementations
   Configuration of component implementations in .componentType files or inlined in implementations (spec issue 8) and in component declarations. Resolve/merge when overlap between the three.
Promotion of Ref/ Services/ Properties (no recursion)
   New promotion mechanism for services/references/properties. Service/reference/property definition on components. Handle promotion of already wired services and references.
Promotion of Ref/ Services/ Properties (recursive)    New promotion mechanism for services/references/properties. Service/reference/property definition on components. Handle promotion of already wired services and references.
Multiple bindings on services and refs    Basic support for multiple bindings is in. See how configuration overriding works with multiple bindings.
Ability to use and alter SCDL model at deployment
   Add missing relationships to the SCDL logical model, independent of runtime context. Allow deployment tools to alter the model and write it back to XML.
Interchangeability of Java and WSDL    Build ServiceContract representation from Java or WSDL. Needs more work to understand combinations of SDO/JAXB/POJOs and wrapped/unwrapped. Add logic to wiring framework to match WSDL portTypes and Java interfaces.
Document limitations and deviations from the spec
   Review the spec and document Tuscany limitations and differences with the SCA assembly spec.
 Java C&I spec
   
    
Conversational PM
   
    
Non-blocking PM
   
    
SCA default binding
   
    
 JMS binding
   
    
WS binding
   
    
EJB binding
   
    
REST binding
   
    
 JSON-RPC binding
    
    
 Data binding support
   
    
 Policy Intent framework
   




Transaction policy
   
    
Security policy
   
    
Reliability policy
   
    
Modular build
   
    
Packaging / deployment
   
    
Administration
   
    
Scenarios
   
    
Host runtimes
   
    
Spring component type
   
    
Javascript component type
   
    
Groovy component type
   
    
JRuby component type
   
    
BPEL component type
   
    
Function test suite
   
    
Integration test suite
   
    
Samples
   
    
Architecture documentation
   
    
User documentation
   
    
+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/federation-notes.html b/site/trunk/site-publish/federation-notes.html new file mode 100644 index 0000000000..2facc1f947 --- /dev/null +++ b/site/trunk/site-publish/federation-notes.html @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + Apache Tuscany : Federation Notes + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Federation Notes + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Pulling together notes on what has been build to support federation in the tunk as it stands (just after TSS demo - March 07)

+ +

References

+ +

Raymond's architecture guide http://cwiki.apache.org/confluence/display/TUSCANY/Tuscany+Architecture+Guide
+Some discussions from the dev list about contributio, discovery, federation and the TSS demo:

+ + + +

Building The Demo

+ +

From The TSS Tag

+ +

Follow instructions in README.txt here http://svn.apache.org/repos/asf/incubator/tuscany/java/distribution/sca/tsss-demo/
+Unzip the resulting demo zip file
+Meeraj's discussion of switching from JXTA to JSM http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg15731.html
+I had problems in that some of the required dependency JARs were missing. I copied:

+
    +
  • tuscany-jms-discovery-0.1-incubating-SNAPSHOT.jar
  • +
  • apache-activemq-4.1.0-incubator.jar
  • +
  • tuscany-http-jetty-0.1-incubating-SNAPSHOT.jar
  • +
  • jetty-6.1.0.jar
  • +
  • jetty-util-6.1.0.jar
  • +
  • tuscany-sca-console-0.1-incubating-SNAPSHOT.jar
  • +
  • geronimo-j2ee-connector_1.5_spec-1.0.jar
  • +
+ + +

into each of the profiles boot directories

+ +

Manually From Head

+

I couldn't get this to work as the core tests now fail

+ +

Debugging The Demo

+

When run originally the demo complained about missing dependencies. In particular when reading the system components (root.system) I got the error:

+ +

org.apache.tuscany.host.runtime.InitializationException: org.apache.tuscany.spi.
+component.GroupInitializationException: sca://root.system/main
+ at org.apache.tuscany.core.runtime.AbstractRuntime.initialize(AbstractRu
+ntime.java)
+ at org.apache.tuscany.standalone.server.TuscanyServer.startRuntime(Tusca
+nyServer.java:134)

+ +

What this actually means is that Tuscany failed to load one of the system components successfully but, by default, doesn't tell what the issue is. I wanted to use Eclipse to debug it so I played about a bit but couldn't get the java -jar command line to come up in the Eclipse debugger. As a fall back I started a remote debugging session. There were three steps to this.

+ +

Add a trap to the code to give me a chance to attach the debugger. I added the following lines to the mainline of the:

+
+
+ System.out.println("press a key");
+ java.io.BufferedReader stdin = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
+ String line = stdin.readLine();
+
+
+ +

Start java app with remote debugging enabled. There are plenty of references on the web on how to do this. Here is the comman line I used to start the master profile.

+
+
+java -Xrunjdwp:server=y,transport=dt_socket,address=4142,suspend=n -Dtuscany.adminPort=2000 -jar server.start.jar ma
+ster
+
+
+ +

When the app comes up and stops at the trap connect the Eclipse debugger by selecting the remote debugging profile and specifying localhost:4142 as the connection details. The port number (4142) just comes from that specified on the application command line.

+ +

Turning Logging On

+

Its not clear how to do this just yet. Meeraj suggests that the missing nested exception detail can be printed out by specifying a log formatter. TODO.

+ +

Running The Demo

+ +

(From Meeraj's post on the subject)
+This is how you start the servers (Please make sure you start ActiveMQ
+before you start the servers) .

+ +

Master: java -Dtuscany.adminPort=2000 -jar server.start.jar master
+Slave1: java -Dtuscany.adminPort=3000 -jar server.start.jar slave1
+Slave2: java -Dtuscany.adminPort=4000 -jar server.start.jar slave2

+ +

You can access the admin console from http://localhost:7000/scdlForm and
+if you target the deployed SCDL to slave1, access the demo appilcation
+from http://localhsot:8000/calculatorForm. The test scdl is as follows
+(this is what you submit from the admin console to target a deployment
+to a slave),

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+          xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/2.0-alpha"
+          name="CalculatorComposite">
+
+   <component runtimeId="slave1" name="CalculatorServiceComponent">
+       <implementation.java class="calculator.CalculatorServiceImpl"/>
+       <reference name="addService" target="AddServiceComponent"/>
+       <reference name="subtractService"
+target="SubtractServiceComponent"/>
+       <reference name="multiplyService"
+target="MultiplyServiceComponent"/>
+       <reference name="divideService"
+target="DivideServiceComponent"/>
+   </component>
+
+   <component runtimeId="slave1" name="AddServiceComponent">
+       <implementation.java class="calculator.AddServiceImpl"/>
+   </component>
+
+   <component runtimeId="slave1" name="SubtractServiceComponent">
+       <implementation.java class="calculator.SubtractServiceImpl"/>
+   </component>
+
+   <component runtimeId="slave1" name="MultiplyServiceComponent">
+       <implementation.java class="calculator.MultiplyServiceImpl"/>
+   </component>
+
+   <component runtimeId="slave1" name="DivideServiceComponent">
+       <implementation.java class="calculator.DivideServiceImpl"/>
+   </component>
+
+</composite>
+
+
+ +

Here is the actual sequence of events:

+ +

Start ActiveMQ

+ +
+
+java -Dtuscany.adminPort=2000 -jar server.start.jar master
+java -Dtuscany.adminPort=3000 -jar server.start.jar slave1
+java -Dtuscany.adminPort=4000 -jar server.start.jar slave2
+
+
+ +

Each of these just reports "Started" on the command line

+ +

Go to http://localhost:7000/scdlForm in a browser and paste in the SCDL from above to configure slave1 to create and wire the calculator components.

+ +

Go to http://localhsot:8000/calculatorForm in a browser and see the form that drives the calculator sample. Type in a couple of numbers and press Add.

+ + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/foreignkeyrepresentationandmanagement.html b/site/trunk/site-publish/foreignkeyrepresentationandmanagement.html new file mode 100644 index 0000000000..7283ae5e44 --- /dev/null +++ b/site/trunk/site-publish/foreignkeyrepresentationandmanagement.html @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + Apache Tuscany : ForeignKeyRepresentationAndManagement + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > ForeignKeyRepresentationAndManagement + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

ForeignKeyRepresentationAndManagement

+ +

Database table foreign keys map to DataObjects as relationships to other DataObjects. Consider two tables: DEPARTMENT and EMPLOYEE and assume the EMPLOYEE table has a FK column DEPT_ID that references a row in the DEPARTEMENT table.

+ +

If you use the DAS to read a particular department and all of its related employees then you will end up with a DEPARTMENT DataObject that has a property named "EMPLOYEE" that is a reference to a list of related EMPLOYEE DataObjects. You can navigate directly to the employees via this property like this: department.getList("EMPLOYEE").

+ +

Although the relationship is mapped to the DataObjects as a relationship, the FK value is also stored in the repsective DataObject. So, continuing with this example, the EMPLOYEE DataObject will have a simple property named "DEPT_ID" that holds the value of the FK. This property is not maintained after the read. So, if an EMPLOYEE DataObject is moved to a different department, the FK property in EMPLOYEE will not be modified. Although most applications will ignore this FK property, there are a few scenarios that make use of it. In fact, although the preferred method of modifying relationships between DataObjects in a data graph is to use normal POJO manipulation, the DAS does allow the modification of a relationship via direct modification of the FK value.

+ +

When the DAS is scanning changes made to a data graph, it employs the following set of rule to guide the generation of update statements:

+ +

"The value for a foreign key column will come from either the primary key of the parent dataobject or from the FK property itself. If the relationship is set but the FK property is not, the value will be taken from the parent's primary key. If the FK property is set but the relationship is not, the value will be taken from the property value. If both the relationship and the FK property are set, an exception will be thrown stating that "Foreign key properties should not be set when the corresponding relationship has changed"

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/found-a-bug-section.html b/site/trunk/site-publish/found-a-bug-section.html new file mode 100644 index 0000000000..0220eab19a --- /dev/null +++ b/site/trunk/site-publish/found-a-bug-section.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + Apache Tuscany : Found A Bug Section + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Found A Bug Section + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Reporting an Issue or Asking For New Features

+ +

Please use ApacheJIRA system to report bugs or request new features. First time users need to create a login.

+ +

Search the existing JIRAs to see if what you want to create is already there. If not, create a new one. Make sure JIRAs are categorized correctly using JIRA categories and are created under the correct component area. Please include as much information as possible in your JIRA to help resolve the issue quicker. This can include version of the software used, platforms running on, steps to reproduce, test case, details of your requirement or even a patch if you have one.

+ +

Submitting a Patch

+ +

Please follow the steps below to create a patch. It will be reviewed and committed by a committer in the project.

+ +
    +
  • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
  • +
  • Confirm that the problem is fixed and include a test case where possible to help the person who is applying the patch to verify the fix.
  • +
  • Generate the patch using svn diff File > patchfile
  • +
  • Try to give your patch files meaningful names, including the JIRA number
  • +
  • Add your patch file as an attachment to the associated JIRA issue +
      +
    • Clicking on the 'Patch Available' box in the screen where the patch is being submitted will help identify available patches quicker.
    • +
    +
  • +
+ + +

How do I get my JIRAs into a release?

+

You can always propose a release and drive the release with the content that you want. Another way to get a JIRA into a release is by providing a patch or working with other community members (volunteers) to help you get the problem fixed. You can also help by providing test cases.

+ +

Each release is managed by a release manager. Make sure that the Release Manager is aware of why a fix to a JIRA is important to your business. In general, the best attempt is made to include as many JIRAs as possible depending on the level of community help. The voting mechanism in the JIRA system can be used to raise the importance of a JIRA to the attention of the release manager. Adding comments in the JIRA would help the release manager understand why a JIRA is important to include in a given release.

+ +

How is a release done?

+

Anyone can volunteer to be a release manager and drive a release. Based on Apache guidelines, a release requires at least three PMC +1 votes and more +1s than -1s. A release can not be vetoed so a -1 does not block a release. The steps for how to create a Tuscany release are documented here

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/general-das-subproject-menu.html b/site/trunk/site-publish/general-das-subproject-menu.html new file mode 100644 index 0000000000..3e6611ad1e --- /dev/null +++ b/site/trunk/site-publish/general-das-subproject-menu.html @@ -0,0 +1,83 @@ + + + + + + + General DAS Subproject Menu : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Menus > General DAS Subproject Menu + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/general-info.html b/site/trunk/site-publish/general-info.html new file mode 100644 index 0000000000..d7a1e250bc --- /dev/null +++ b/site/trunk/site-publish/general-info.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : General Info + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/general-menu.html b/site/trunk/site-publish/general-menu.html new file mode 100644 index 0000000000..f29698ce6b --- /dev/null +++ b/site/trunk/site-publish/general-menu.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + Apache Tuscany : General Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > General Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

General

+

Home
+News & Events
+License
+ASF

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/general-subproject-menu.html b/site/trunk/site-publish/general-subproject-menu.html new file mode 100644 index 0000000000..aa65d049d9 --- /dev/null +++ b/site/trunk/site-publish/general-subproject-menu.html @@ -0,0 +1,83 @@ + + + + + + + General Subproject Menu : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Menus > General Subproject Menu + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/general.html b/site/trunk/site-publish/general.html new file mode 100644 index 0000000000..d612f09f57 --- /dev/null +++ b/site/trunk/site-publish/general.html @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + Apache Tuscany : General + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/get-hold-of-rat.html b/site/trunk/site-publish/get-hold-of-rat.html new file mode 100644 index 0000000000..67f47c0348 --- /dev/null +++ b/site/trunk/site-publish/get-hold-of-rat.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Get hold of RAT + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Making releases > Get hold of RAT + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Download the latest release from http://code.google.com/p/arat (It's moving back to Apache incubation now).

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/get-involved-section.html b/site/trunk/site-publish/get-involved-section.html new file mode 100644 index 0000000000..dc19ff333a --- /dev/null +++ b/site/trunk/site-publish/get-involved-section.html @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + Apache Tuscany : Get Involved Section + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Get Involved Section + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Getting Involved with Apache Tuscany - Welcome!

+ + + +
+

Getting involved in the project is easy. First, any help is welcome and we are excited to help you come on board. Here are some suggestions for how you can get involved in Apache Tuscany.

+ +
    +
  • Tuscany consists of several subprojects. Identify what areas you are interested in. Take a look at samples for that area.
  • +
  • Subscribe to the mailing list. If you are interested to get involved at the user level, subscribe to user mailing list. If you are interested to get involved in the development of Tuscany, subscribe to the developer list. Rememer that you can always unsubscribe later.
  • +
  • Help answer questions posted to the user mailing list for areas that you are familiar with. Your real usage experience can be very valueable to other users as well as developers on the project.
  • +
  • Would like to get invovled in development? Have new ideas? Start with the mailing list and share your thoughts.
  • +
  • Contribute to feature developement. Just let the community know what you'd like to work on. It is as easy as that.
  • +
  • Identify JIRAsin the area that you are interested in and provide patches.
  • +
  • Contribute to the user or developer documentation or website. Make your update on the on the Tuscany Wiki, create a JIRA and attach the link for your update.
  • +
  • If in doubt about where to start, send a note to the mailing list and mention your area of interest. Any questions is welcomed. We'd like you to be involved!
  • +
  • If you are new to open source and would like to learn more about how to work in open source, check this page.
  • +
+ + +
    +
  • Provide feedback: What is working well? What is missing? Get involved in creating software that addresses real pain points in SOA. Any help is good. Be part of the community.
  • +
+ + +

You can get a quick overview of many Tuscany information resources by watching the video "A Tour of the Tuscany Information Resources", Vcasmo site (password tuscany), You Tube.

+ +

communication

+ +

The Tuscany community also gets together on IRC. 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:

+ + + +

If you are not familiar with Apache, you can read more about how Apache works at this link.

+ + +
+ + +

Open CSA (SCA standards)

+ +

The SCA specifications which are implemented by Tuscany have moved to OASIS for formal
+standardization. This is being done as a series of OASIS technical
+committees, each dealing with one or more of aspects of the SCA specifications.

+ +

The OASIS activities are carried out in public. You can either observe the activities in the various technical committees, or join one or more of the committees to contribute to.

+ +

There are 6 SCA technical committees and by clicking on the links below you can find information about how to join as an observer or contributor. You will also have access to the minutes of meetings of the meetings on the same page.

+ + + + +
    +
  • OASIS SCAPolicy TC:Defining an SCA policy framework to simplify SOA application development
  • +
+ + +
    +
  • OASIS SCA Bindings TC:Standardizing bindings for SCA services and references to communication protocols, technologies and frameworks
  • +
+ + + + + + + + +
    +
  • OASIS SCA BPEL TC:Specifying how SCA component implementations for SOA can be written using BPEL
  • +
+ + +

Each OASIS SCA TC mailing list archives can be found here:

+ + + + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/getting-involved-projects-panel.html b/site/trunk/site-publish/getting-involved-projects-panel.html new file mode 100644 index 0000000000..d4ada27baa --- /dev/null +++ b/site/trunk/site-publish/getting-involved-projects-panel.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : Getting Involved - Projects Panel + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Getting Involved - Projects Panel + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/getting-involved-projects.html b/site/trunk/site-publish/getting-involved-projects.html new file mode 100644 index 0000000000..71641662b9 --- /dev/null +++ b/site/trunk/site-publish/getting-involved-projects.html @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + Apache Tuscany : Getting Involved - Projects + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Getting Involved - Projects + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +
Subprojects
+

SDO
+DAS

+
+ +

Projects for the budding contributor...

+ + +

This page enlists some ideas that can be taken up for implementation and contribution, by anybody interested in Apache Tuscany - University Students, SCA and SOA enthusiasts...

+ +

1. Consuming SCA services from Google Gadgets

+ + +

Summary : Integrate Tuscany and Apache Shindig to mash-up Google gadgets and backend SCA service components (Web Services, existing JEE services etc)

+ +

Use SCA to model references from Javascript gadgets to server-side services, and provide transparent access to these services (by injecting Javascript proxies into the gadgets, similar to what Tuscany currently does with its SCA Widget component support).

+ +

Use SCA composites to configure and assemble the gadgets together as well, allowing the application developer to use a consistent SCA-based assembly model for client-side mashups, server-side compositions and mixes of the two.

+ +

One possible scenario would be to construct a Stock Quote widget, that would get the quotes trough a SCA Service

+ +

2. Data Services (Implementation.data.jpa)

+ +

Create a new implementation type that would facilitate and simplify the access to Relation Database using JPA.
+A component using this new implementation type would define itself in the composite as :

+ +
+
+   ...
+   <implementation.data.jpa db="..." table="..."/>
+
+
+ +

2. Data Feeds and Data Services

+ + +

Summary : Extend the Tuscany Atom Binding to work with data from relational databases to provide data services. This could be done by completing/enhancing the experimental Tuscany Data component type.

+ +

One possible scenario would be to modify the store sample/tutorial to provide a Catalog implementation exposing catalog rows from a relation database.

+ +

3.Integrate Java SCA with PHP

+ +

PHP PECL project provides a PHP implementation of the Service Component Architecture (SCA) programming model (see WWW http://pecl.php.net/package/SCA_SDO). SCA is a programming model which allows you to assemble applications using a Service-Oriented Architecture style. This includes producing and consuming Web services of various types, including soap/http, json-rpc, REST,Atom. Looking into the Tuscany Apache Incubator project (see WWW http://incubator.apache.org/tuscany/ ), which provides a Java-based implementation of SCA. This runtime is extensible for different implementation types, and currently supports things like BPEL, OSGi, Java (POJOs), Spring, JavaScript and XQuery.

+ +

I think it would make a very interesting and challenging project to extend Apache Tuscany to supports the concept of a PHP implementation type. This implementation type would be used to include PHP SCA enabled applications in an assembly which might also include any of the other Apache Tuscany implementation types. A realistic scenario for this solution might be a PHP Web front end to a Java business application. Tuscany includes a Java "store" application which could be converted to demonstrate the final deliverables. The solution would also require extensions to the PHP SCA project to enable existing PHP SCA service configuration to be externally overridden by Tuscany. The major work items would be as follows:

+
    +
  • Extend PHP SCA to support external configuration of services (PHP Scripting skills).
  • +
  • Extend Apache Tuscany to provide a PHP implementation type (Java and XML/XML Schema skills).
  • +
  • Extend Apache Tuscany to support PHP SCA as a deployment target(Java skills).
  • +
+ + +

4.Integrate Java SCA and JBI

+

Build some Tuscany extensions to integrate JBI components into SCA - eg an SCA binding extension that supports running JBI binding components and maybe an SCA implementation extension that supports running JBI service engines. Both Tuscany/SCA and JBI have the concept of plugable extensions so these Tuscany extensions would be kind of adapters from the Tuscany extension APIs to the JBI APIs and you'd end up being able to drop a standard JBI binding component jar into the Tuscany runtime and have that used in an SCA assembly.

+ +

5.Bring Native SCA project to Spec 1.0 level

+

Help is needed to enhance Native SCA to support spec 1.0 level.

+ +

6.Ability to use C++ and Java in a composition

+

Integration between Native SCA and Java SCA. The ability to use legacy or new C++ type applications and integrate them into overall SOA solution which is composed of Java and C++.

+ +

7.Interop with .Net

+

How to integrate with .net.

+ +

8. Data Binding for Google Protocol Buffers

+

Google just introduced Binary Encoding Format: Protocol Buffers. Is anybody interested in developing a databinding for Tuscany to support it?

+ +

http://www.infoq.com/news/2008/07/google-protocol-buffers

+ + +

8. Contribute to projects under roadmaps

+

put roadmap link

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/getting-involved.html b/site/trunk/site-publish/getting-involved.html new file mode 100644 index 0000000000..a410e5b722 --- /dev/null +++ b/site/trunk/site-publish/getting-involved.html @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + Apache Tuscany : Getting Involved + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Getting Involved + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

Getting Involved with Apache Tuscany - Welcome!

+ + + +
+

Getting involved in the project is easy. First, any help is welcome and we are excited to help you come on board. Here are some suggestions for how you can get involved in Apache Tuscany.

+ +
    +
  • Tuscany consists of several subprojects. Identify what areas you are interested in. Take a look at samples for that area.
  • +
  • Subscribe to the mailing list. If you are interested to get involved at the user level, subscribe to user mailing list. If you are interested to get involved in the development of Tuscany, subscribe to the developer list. Rememer that you can always unsubscribe later.
  • +
  • Help answer questions posted to the user mailing list for areas that you are familiar with. Your real usage experience can be very valueable to other users as well as developers on the project.
  • +
  • Would like to get invovled in development? Have new ideas? Start with the mailing list and share your thoughts.
  • +
  • Contribute to feature developement. Just let the community know what you'd like to work on. It is as easy as that.
  • +
  • Identify JIRAsin the area that you are interested in and provide patches.
  • +
  • Contribute to the user or developer documentation or website. Make your update on the on the Tuscany Wiki, create a JIRA and attach the link for your update.
  • +
  • If in doubt about where to start, send a note to the mailing list and mention your area of interest. Any questions is welcomed. We'd like you to be involved!
  • +
  • If you are new to open source and would like to learn more about how to work in open source, check this page.
  • +
+ + +
    +
  • Provide feedback: What is working well? What is missing? Get involved in creating software that addresses real pain points in SOA. Any help is good. Be part of the community.
  • +
+ + +

You can get a quick overview of many Tuscany information resources by watching the video "A Tour of the Tuscany Information Resources", Vcasmo site (password tuscany), You Tube.

+ +

communication

+ +

The Tuscany community also gets together on IRC. 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:

+ + + +

If you are not familiar with Apache, you can read more about how Apache works at this link.

+ + +
+ + +

Open CSA (SCA standards)

+ +

The SCA specifications which are implemented by Tuscany have moved to OASIS for formal
+standardization. This is being done as a series of OASIS technical
+committees, each dealing with one or more of aspects of the SCA specifications.

+ +

The OASIS activities are carried out in public. You can either observe the activities in the various technical committees, or join one or more of the committees to contribute to.

+ +

There are 6 SCA technical committees and by clicking on the links below you can find information about how to join as an observer or contributor. You will also have access to the minutes of meetings of the meetings on the same page.

+ + + + +
    +
  • OASIS SCAPolicy TC:Defining an SCA policy framework to simplify SOA application development
  • +
+ + +
    +
  • OASIS SCA Bindings TC:Standardizing bindings for SCA services and references to communication protocols, technologies and frameworks
  • +
+ + + + + + + + +
    +
  • OASIS SCA BPEL TC:Specifying how SCA component implementations for SOA can be written using BPEL
  • +
+ + +

Each OASIS SCA TC mailing list archives can be found here:

+ + + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/getting-source.html b/site/trunk/site-publish/getting-source.html new file mode 100644 index 0000000000..f0f433f0c4 --- /dev/null +++ b/site/trunk/site-publish/getting-source.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + Apache Tuscany : Getting Source + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SDO Overview > SDO Java > Delete This Page - Using SDO Java > Set up SDO Development Environment > Getting Source + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +
Apache Tuscany SDO Java - Getting Source
+ +

You have two options for obtaining SDO Java source code; you can either download a source code distribution, or you can extract the source code from our svn repository. Note that if you want to contribute to the development, then you'll need to take the latter approach, since creating patches depends on the svn environment.

+ +

Downloading a source distribution

+ +

You can download SDO Java source distributions (SDO API and Implementation), and either follow the instructions in the BUILDING.txt file to recreate the SDO Java binary distribution, or you can extract the archives and follow the instructions to establish a Maven or Eclipse development environment.

+ +

Extracting source code from SVN

+ +

If you want to contribute to SDO development you'll need to follow this approach to getting source code. First you'll need a subversion client installed on your machine. These instructions demonstrate the command line interface. If you choose to install a graphical client you should readily be able to map these instructions to the required interactions.

+
    +
  • Install your SVN client and ensure it is on your execution path
  • +
  • Create an empty local directory (referred to as <sdo-source-root> below)
  • +
  • execute the command: svn checkout https://svn.apache.org/repos/asf/tuscany/java/sdo/
  • +
  • if you get a message asking you whether you want to accept the server certificate, reply yes
  • +
+ + +

Now follow the instructions to establish a Maven or Eclipse development environment.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/getting-started-build-your-first-web-services-with-tuscany.html b/site/trunk/site-publish/getting-started-build-your-first-web-services-with-tuscany.html new file mode 100644 index 0000000000..1b5387dcf2 --- /dev/null +++ b/site/trunk/site-publish/getting-started-build-your-first-web-services-with-tuscany.html @@ -0,0 +1,80 @@ + + + + + + + Getting Started - Build your first web services with Tuscany : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Getting Started - Build your first web services with Tuscany + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ +
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project.png new file mode 100644 index 0000000000..48bf481e1d Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project.png.jpeg new file mode 100644 index 0000000000..4a05eb3baa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project_lib.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project_lib.png new file mode 100644 index 0000000000..656465d618 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project_lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project_lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project_lib.png.jpeg new file mode 100644 index 0000000000..268ad62251 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_Calc_Java_Project_lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_User_Lib.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_User_Lib.png new file mode 100644 index 0000000000..80b2822afa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_User_Lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_User_Lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_User_Lib.png.jpeg new file mode 100644 index 0000000000..5273a016d2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/New_User_Lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/Tuscany_User_Lib.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/Tuscany_User_Lib.png new file mode 100644 index 0000000000..796f560dd8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/Tuscany_User_Lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/Tuscany_User_Lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/Tuscany_User_Lib.png.jpeg new file mode 100644 index 0000000000..3af6676b6f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/Tuscany_User_Lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feed.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feed.png new file mode 100644 index 0000000000..c1da921ee5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feed.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feed.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feed.png.jpeg new file mode 100644 index 0000000000..779e369a2e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feed.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feeds_page.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feeds_page.png new file mode 100644 index 0000000000..6e7c4bb227 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feeds_page.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feeds_page.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feeds_page.png.jpeg new file mode 100644 index 0000000000..82fe4d8111 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/atom_feeds_page.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_eclipse_console.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_eclipse_console.png new file mode 100644 index 0000000000..f7c0fd012b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_eclipse_console.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_eclipse_console.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_eclipse_console.png.jpeg new file mode 100644 index 0000000000..dd108d061a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_eclipse_console.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_proj_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_proj_dlg.png new file mode 100644 index 0000000000..84f439c41c Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_proj_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_proj_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_proj_dlg.png.jpeg new file mode 100644 index 0000000000..a0828163fd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/calculator_proj_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/class_btn.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/class_btn.png new file mode 100644 index 0000000000..60bce5ee98 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/class_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/class_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/class_btn.png.jpeg new file mode 100644 index 0000000000..cab8b0264b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/class_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/eclipse_console.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/eclipse_console.png new file mode 100644 index 0000000000..9ef69db7d0 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/eclipse_console.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/eclipse_console.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/eclipse_console.png.jpeg new file mode 100644 index 0000000000..99dd341348 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/eclipse_console.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/first_composite.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/first_composite.png new file mode 100644 index 0000000000..00d3edd3d8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/first_composite.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/first_composite.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/first_composite.png.jpeg new file mode 100644 index 0000000000..58e4733cf4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/first_composite.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/folder_structure.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/folder_structure.png new file mode 100644 index 0000000000..85a24d4a27 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/folder_structure.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/folder_structure.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/folder_structure.png.jpeg new file mode 100644 index 0000000000..71c6705477 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/folder_structure.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/interface_btn.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/interface_btn.png new file mode 100644 index 0000000000..5c342b8194 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/interface_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/interface_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/interface_btn.png.jpeg new file mode 100644 index 0000000000..ee25c45cba Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/interface_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_btn.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_btn.png new file mode 100644 index 0000000000..902fe75507 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_btn.png.jpeg new file mode 100644 index 0000000000..9ed36e4e23 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_dlg.png new file mode 100644 index 0000000000..95b51cf26a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_dlg.png.jpeg new file mode 100644 index 0000000000..be327e7e1f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_folder.png new file mode 100644 index 0000000000..07cd5a0502 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_folder.png.jpeg new file mode 100644 index 0000000000..6b4cd2b9b4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_pkg_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project.png new file mode 100644 index 0000000000..50297b3afa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project.png.jpeg new file mode 100644 index 0000000000..8fdf13e716 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_dlg.png new file mode 100644 index 0000000000..5f051094b9 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_dlg.png.jpeg new file mode 100644 index 0000000000..22d226ce07 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_folder.png new file mode 100644 index 0000000000..8329b143de Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_folder.png.jpeg new file mode 100644 index 0000000000..90231cf672 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_lib.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_lib.png new file mode 100644 index 0000000000..c0b12eea7a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_lib.png.jpeg new file mode 100644 index 0000000000..4537f7d914 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/new_java_project_lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/project_layout.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/project_layout.png new file mode 100644 index 0000000000..9de01ff4d5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/project_layout.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/project_layout.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/project_layout.png.jpeg new file mode 100644 index 0000000000..745f2dbfbd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/project_layout.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/release_zips.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/release_zips.png new file mode 100644 index 0000000000..38077052b3 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/release_zips.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/release_zips.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/release_zips.png.jpeg new file mode 100644 index 0000000000..32e3de3909 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/release_zips.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment.png new file mode 100644 index 0000000000..7dba24bd53 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment.png.jpeg new file mode 100644 index 0000000000..00fa4a3ca4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment_config.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment_config.png new file mode 100644 index 0000000000..7d51969a8a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment_config.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment_config.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment_config.png.jpeg new file mode 100644 index 0000000000..529ac57071 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/source_attachment_config.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page.png new file mode 100644 index 0000000000..988c62fae7 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page.png.jpeg new file mode 100644 index 0000000000..e52776334f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_1.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_1.png new file mode 100644 index 0000000000..834ef26e35 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_1.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_1.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_1.png.jpeg new file mode 100644 index 0000000000..7247d60368 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_1.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_2.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_2.png new file mode 100644 index 0000000000..c71b600146 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_2.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_2.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_2.png.jpeg new file mode 100644 index 0000000000..0ecef780b1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_2.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_3.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_3.png new file mode 100644 index 0000000000..2560148e19 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_3.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_3.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_3.png.jpeg new file mode 100644 index 0000000000..d05d2288af Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_page_3.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project.png new file mode 100644 index 0000000000..f0d1999ff2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project.png.jpeg new file mode 100644 index 0000000000..fab518699e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_1.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_1.png new file mode 100644 index 0000000000..eb6bd340d2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_1.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_1.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_1.png.jpeg new file mode 100644 index 0000000000..404c40daf8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_1.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_2.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_2.png new file mode 100644 index 0000000000..81119985d8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_2.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_2.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_2.png.jpeg new file mode 100644 index 0000000000..0159ecc040 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_2.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_3.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_3.png new file mode 100644 index 0000000000..5aaf5ed3fd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_3.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_3.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_3.png.jpeg new file mode 100644 index 0000000000..6a5e9220cb Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_3.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_4.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_4.png new file mode 100644 index 0000000000..217d10ed25 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_4.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_4.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_4.png.jpeg new file mode 100644 index 0000000000..9c90a17f3a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_4.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_5.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_5.png new file mode 100644 index 0000000000..3586520e47 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_5.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_5.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_5.png.jpeg new file mode 100644 index 0000000000..3fa840138a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/store_project_5.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_folder.png new file mode 100644 index 0000000000..d58afb88d1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_folder.png.jpeg new file mode 100644 index 0000000000..7ade1f20e5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_samples_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_samples_folder.png new file mode 100644 index 0000000000..fe79cf56c7 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_samples_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_samples_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_samples_folder.png.jpeg new file mode 100644 index 0000000000..d953ca2af1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-release-10.data/tuscany_samples_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-release-10.html b/site/trunk/site-publish/getting-started-with-tuscany-release-10.html new file mode 100644 index 0000000000..58106f05ac --- /dev/null +++ b/site/trunk/site-publish/getting-started-with-tuscany-release-10.html @@ -0,0 +1,726 @@ + + + + + + + Getting Started with Tuscany Release 1.0 : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Getting Started with Tuscany Release 1.0 + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Ready, Set, Go - Getting started with Tuscany

+ + +

Install the Tuscany Distribution 

+ +

The first thing you do is to create a folder on you disk into which you will download the TUSCANY distribution.

+ +

+ +

Next you download the latest release distribution. Launch your browser and enter one of the
+following URL's.
+Latest Release - http://cwiki.apache.org/TUSCANY/sca-java-releases.html
+Download both the bin zip as well as the src zip to the folder that you created on your disk. Once you completed the download you should see the following on your disk.

+ +



+Next you unzip the bin zip in place, you should see the following folder file structure on your disk after unzip is complete.
+

+ +

Setup Eclipse for Tuscany

+ +

Start Eclipse and create a User Library to contain the TUSCANY runtime jar's as well as their
+depending jar's.

+ +

From the menu bar select Window and then Preferences... . The Preferences dialog will appear,
+in its left navigation tree select Java, followed by Build Path, and followed by User Libraries.
+Select the New... pushbutton on the right of the New Libraries dialog to create a new user library.

+ +

+ +

The user library created is empty, select the Add JARs... pushbutton on the right to add all the
+jar's from your Tuscany installation lib folder. When completed all the jar's will appear under the
+TUSCANY user library.

+ +

+ +

Since some of you maybe interested in debugging also the Tuscany runtime code we will attach
+the Tuscany source to the Tuscany runtime jar in the following step. In the User Libraies dialog
+scroll down until you see the Tuscany runtime jar and select its Source attachment.

+ +

+ +

Select the Edit... pushbutton on the right and in the Edit dialog use the External File... pushbutton
+to the select the Tuscany src zip that we downloaded earlier.

+ +

+ +

Select OK to complete this and the Preferences dialog, and you are done with the Tuscany setup
+for Eclipse.

+ +

Create your 1st Composite Service Application

+ +

The following shows the composition diagram for the composite service application you are about
+to create.

+ +

+ +

The composite service application you will create is a composition of four services. The composed
+service provided is that of an on-line store.
+There is a Catalog service which you can ask for catalog items, and depending on its currency
+code property configuration it will provide the item prices in USD or EUR. The Catalog service is not
+doing the currency conversion itself it references a CurrencyConverter service to do that task. Then
+there is the ShoppingCart service into which items chosen from the catalog can be added, it is
+implemented as a REST service. The Catalog is bound using the JSONRPC binding, and the
+ShoppingCart service is bound using the ATOM binding. Finally there is the Store user facing
+service that provides the browser based user interface of the store. The Store service makes use of
+the Catalog and ShoppingCart service using the JSONRPC, and ATOM binding respectively.

+ +

Create a Java Project

+ +

In this step you create a Java Project in Eclipse to hold the composite service application.
+Click on the New Java Project button   in the toolbar to launch the project creation dialog.
+Next you enter "store" as the Project name, and for Project Layout select Create separate
+folders for sources and class files.
+

+

+Hit the Next button, and on the following page go to the Libraries tab. Use the Add Library...
+button on the right to add the TUSCANY user library to the project.

+


+Hit the Finish button to complete the New Java Project dialog to create the "store" java project. 

+

+ +

Construct Services

+ +

First you create two package folders into which later in this step you place service implementations.
+Select the "store" project and click on the New Java Package button in the toolbar to launch
+the package creation dialog.

+ +

Next you enter "services" as the package Name, and press the Finish button to complete the
+dialog.
+

+Repeat the previous step to create another package named "ufservices". The store project now
+should look as follows.

+

+In the following you will place in the "services" package the regular services, and in the "ufservices"
+package the user facing services of the composite service application you create.

+ +

Catalog

+ +

In this step you create the Catalog service interface and implementation.
+Select the "services" package. Next you click on the dropdown arrow next to the New Java Class
+button    and select the New Java Interface    option from the dropdown list. In the dialog
+enter "Catalog" as the Name of the interface and select the Finish button to complete the dialog.
+The Java editor will open on the new created Java interface. Replace the content of the editor by
+copy-paste of the following Java interface code snippet.

+
+
package services;
+import org.osoa.sca.annotations.Remotable;
+@Remotable
+public interface Catalog {
+    String[] get();
+}
+
+

Select the "services" package again. Select the New Java Class button . In the dialog enter
+"CatalogImpl" as the Name of the class, add "Catalog" as the interface this class implements, and
+then select Finish to complete the dialog.

+ +

The Java editor will open on the new created Java class. Replace the content of the editor by
+copy-paste of the following Java class code snippet.

+
+
package services;
+import java.util.ArrayList;
+import java.util.List;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+public class CatalogImpl implements Catalog {
+	@Property
+	public String currencyCode = "USD";
+	@Reference
+	public CurrencyConverter currencyConverter;
+	private List<String> catalog = new ArrayList<String>();
+	@Init
+	public void init() {
+		String currencySymbol = currencyConverter.getCurrencySymbol(currencyCode);
+		catalog.add("Apple - " + currencySymbol +
+		currencyConverter.getConversion("USD", currencyCode, 2.99f));
+		catalog.add("Orange - " + currencySymbol +
+		currencyConverter.getConversion("USD", currencyCode, 3.55f));
+		catalog.add("Pear - " + currencySymbol +
+		currencyConverter.getConversion("USD", currencyCode, 1.55f));
+	}
+	public String[] get() {
+		String[] catalogArray = new String[catalog.size()];
+		catalog.toArray(catalogArray);
+		return catalogArray;
+	}
+}
+
+

After completing these steps the content of the "store" project will look as follows.
+

+Note: CatalogImpl is red x'ed because it makes use of the CurrencyConverter interface that we
+have not implemented yet.

+ +

CurrencyConverter

+ +

In this step you create the CurrencyConverter service interface and implementation.
+You follow the same steps that you learned previously to create the interface and implementation.
+First create a Java interface in the "services" package named "CurrencyConverter" and copy-paste
+the following Java interface code snippet into it.
+  

+
+
package services;
+import org.osoa.sca.annotations.Remotable;
+@Remotable
+public interface CurrencyConverter {
+	public float getConversion(String fromCurrenycCode,
+	String toCurrencyCode, float amount);
+	public String getCurrencySymbol(String currencyCode);
+}
+
+

Next create a Java class in the "services" package named "CurrencyConverterImpl" and copy-paste
+the following Java class code snippet into it.

+
+
package services;
+public class CurrencyConverterImpl implements CurrencyConverter {
+	public float getConversion(String fromCurrencyCode,
+		String toCurrencyCode, float amount) {
+		if (toCurrencyCode.equals("USD"))
+			return amount;
+		else 			if (toCurrencyCode.equals("EUR"))
+				return amount*0.7256f;
+		return 0;
+	}
+	public String getCurrencySymbol(String currencyCode) {
+		if (currencyCode.equals("USD"))
+			return "$";
+		else
+			if (currencyCode.equals("EUR"))
+				return "€";
+		return "?";
+	}
+}
+
+

After completing these steps the content of the "store" project will look as follows.

+ +

+ +

ShoppingCart

+ +

In this step you create the ShoppingCart service implementation.

+ +

You follow the same steps that you learned previously to create the implementation.

+ +

Create a Java class in the "services" package named "ShoppingCartImpl" and copy-paste the
+following Java class code snippet into it.

+
+
package services;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import org.apache.tuscany.sca.binding.feed.collection.Collection;
+import org.apache.tuscany.sca.binding.feed.collection.NotFoundException;
+import com.sun.syndication.feed.atom.Content;
+import com.sun.syndication.feed.atom.Entry;
+import com.sun.syndication.feed.atom.Feed;
+import com.sun.syndication.feed.atom.Link;
+public class ShoppingCartImpl implements Collection {
+	// needs to change to instance var once conversation scope works
+	private static Map<String, Entry> cart = new HashMap<String, Entry>();
+	public Feed getFeed() {
+		Feed feed = new Feed();
+		feed.setTitle("shopping cart");
+		Content subtitle = new Content();
+		subtitle.setValue("Total : " + getTotal());
+		feed.setSubtitle(subtitle);
+		feed.getEntries().addAll(cart.values());
+		return feed;
+	}
+	public Entry get(String id) throws NotFoundException {
+		return cart.get(id);
+	}
+	public Entry post(Entry entry) {
+		String id = "cart-" + UUID.randomUUID().toString();
+		entry.setId(id);
+		Link link = new Link();
+		link.setRel("edit");
+		link.setHref("" + id);
+		entry.getOtherLinks().add(link);
+		link = new Link();
+		link.setRel("alternate");
+		link.setHref("" + id);
+		entry.getAlternateLinks().add(link);
+		entry.setCreated(new Date());
+		cart.put(id, entry);
+		return entry;
+	}
+		public Entry put(String id, Entry entry) throws NotFoundException {
+		entry.setUpdated(new Date());
+		cart.put(id, entry);
+		return entry;
+	}
+	public void delete(String id) throws NotFoundException {
+		if (id.equals(""))
+			cart.clear();
+		else
+			cart.remove(id);
+	} 	private String getTotal() {
+		float total = 0;
+		String symbol = "";
+		if (!cart.isEmpty()) {
+			Entry entry = cart.values().iterator().next();
+			String item = ((Content)entry.getContents().get(0)).getValue();
+			symbol = item.substring(item.indexOf("-")+2, item.indexOf("-")+3);
+		}
+		for (Entry entry : cart.values()) {
+			String item = ((Content)entry.getContents().get(0)).getValue();
+			total += Float.valueOf(item.substring(item.indexOf("-")+3));
+		}
+		return symbol + String.valueOf(total);
+	}
+}
+
+

Note: Since the Tuscany conversational support is not ready yet the cart is realized through a hack.
+The cart field is defined as static.

+ +

After completing these steps the content of the "store" project will look as follows.

+ +


+ +

Store

+ +

In this step you create the user facing Store service that will run in a Web browser and provide the
+user interface to the other services you created.

+ +

Select the "ufservices" package. Right click to get the context menu, select New, and then File. In
+the New File dialog enter "store.html" for the File name, and then select Finish to complete the
+dialog.

+ +

The Text editor will open on the new created html file. Replace the content of the editor by copy-paste
+of the following html snippet.

+
+
<html>
+	<head>
+	<title>Store</title>
+	<script type="text/javascript" src="binding-atom.js"></script>
+	<script type="text/javascript" src="binding-jsonrpc.js"></script>
+	<script language="JavaScript">
+	//Reference
+	catalog = (new JSONRpcClient("../Catalog")).Catalog;
+	//Reference
+	shoppingCart = new AtomClient("../ShoppingCart");
+	function catalog_getResponse(items) {
+		var catalog = "";
+		for (var i=0; i<items.length; i++)
+			catalog += '<input name="items" type="checkbox" value="' +
+				items[i] + '">' + items[i]+ ' <br>';
+		document.getElementById('catalog').innerHTML=catalog;
+	}
+	function shoppingCart_getResponse(feed) {
+		if (feed != null) {
+			var entries = feed.getElementsByTagName("entry");
+			var list = "";
+			for (var i=0; i<entries.length; i++) {
+				var item =
+					entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
+				list += item + ' <br>';
+			}
+			document.getElementById("shoppingCart").innerHTML = list;
+			if (list != "")
+				document.getElementById('total').innerHTML =
+						feed.getElementsByTagName("subtitle")[0].firstChild.nodeValue;
+		}
+	}
+	function shoppingCart_postResponse(entry) {
+		shoppingCart.get("", shoppingCart_getResponse);
+	}
+	function addToCart() {
+		var items = document.catalogForm.items;
+		var j = 0;
+		for (var i=0; i<items.length; i++)
+			if (items[i].checked) {
+				var entry = '<entry xmlns="http://www.w3.org/2005/Atom">' +
+							'<title>cart-item</title>' +
+							'<content type="text">'+items[i].value+'</content>' +
+							'</entry>';
+				shoppingCart.post(entry, shoppingCart_postResponse);
+				items[i].checked = false;
+			}
+	}
+	function checkoutCart() {
+		document.getElementById('store').innerHTML='<h2>' +
+			'Thanks for Shopping With Us!</h2>'+
+			'<h2>Your Order</h2>'+
+			'<form name="orderForm" action="/ufs/store.html">'+
+			document.getElementById('shoppingCart').innerHTML+
+			'<br>'+
+			document.getElementById('total').innerHTML+
+			'<br>'+
+			'<br>'+
+			'<input type="submit" value="Continue Shopping">'+
+			'</form>';
+		shoppingCart.delete("", null);
+	}
+	function deleteCart() {
+		shoppingCart.delete("", null);
+		document.getElementById('shoppingCart').innerHTML = "";
+		document.getElementById('total').innerHTML = "";
+	}
+	window.onload = function() {
+			catalog.get(catalog_getResponse);
+			shoppingCart.get("", shoppingCart_getResponse);
+		}
+	</script>
+	<link rel="stylesheet" type="text/css" href="style.css" />
+	</head>
+	<body>
+	<h1>Store</h1>
+	<div id="store">
+	<h2>Catalog</h2>
+	<form name="catalogForm">
+		<div id="catalog" ></div>
+		<br>
+		<input type="button" onClick="addToCart()" value="Add to Cart">
+	</form>
+	<br>
+	<h2>Your Shopping Cart</h2>
+	<form name="shoppingCartForm">
+		<div id="shoppingCart"></div>
+		<br>
+		<div id="total"></div>
+		<br>
+		<input type="button" onClick="checkoutCart()" value="Checkout">
+		<input type="button" onClick="deleteCart()" value="Empty">
+		<a href="../ShoppingCart/">
+		<img src="http://projects.apache.org/images/blue-icon.png" border="0">
+		</a>
+	</form>
+	</div>
+	</body>
+</html>
+
+

Next select the "ufservices" package again. Right click to get the context menu, select New, and
+then File. In the New File dialog enter "binding-jsonrpc.js" for the File name, and then select
+Finish to complete the dialog.

+ +

The Text editor will open on the new created javascript file. Replace the content of the editor by
+copy-paste of the javascript snippet you find here:

+ +

http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/resources/org/apache/tuscany/sca/binding/jsonrpc/jsonrpc.js

+ +

Next select the "ufservices" package again. Right click to get the context menu, select New, and
+then File. In the New File dialog enter "binding-atom.js" for the File name, and then select Finish
+to complete the dialog.

+ +

The Text editor will open on the new created javascript file. Replace the content of the editor by
+copy-paste of the following javascript snippet.

+
+
function AtomClient(uri) {
+	this.uri=uri;
+	this.get = function(id, responseFunction) {
+		var xhr = this.createXMLHttpRequest();
+		xhr.onreadystatechange = function() {
+			if (xhr.readyState == 4) {
+				if (xhr.status == 200) {
+					if (responseFunction != null)
+						responseFunction(xhr.responseXML);
+				} else {
+				alert("get - Error getting data from the server");
+				}
+			}
+		}
+		xhr.open("GET", uri + id, true);
+		xhr.send(null);
+	}
+	this.post = function (entry, responseFunction) {
+	var xhr = this.createXMLHttpRequest();
+	xhr.onreadystatechange = function() {
+		if (xhr.readyState == 4) {
+			if (xhr.status == 201) {
+				if (responseFunction != null)
+					responseFunction(xhr.responseXML);
+				} else {
+					alert("post - Error getting data from the server");
+				}
+			}
+		}
+		xhr.open("POST", uri, true);
+		xhr.setRequestHeader("Content-Type", "application/atom+xml");
+		xhr.send(entry);
+	}
+	this.put = function (id, entry, responseFunction) {
+		var xhr = this.createXMLHttpRequest();
+		xhr.onreadystatechange = function() {
+			if (xhr.readyState == 4) {
+				if (xhr.status == 200) {
+					if (responseFunction != null)
+						responseFunction(xhr.responseXML);
+				} else {
+					alert("put - Error getting data from the server");
+				}
+			}
+		}
+		xhr.open("PUT", uri + id, true);
+		xhr.setRequestHeader("Content-Type", "application/atom+xml");
+		xhr.send(entry);
+	}
+	this.delete = function (id, responseFunction) {
+		var xhr = this.createXMLHttpRequest();
+		xhr.onreadystatechange = function() {
+			if (xhr.readyState == 4) {
+				if (xhr.status == 200) {
+					if (responseFunction != null) responseFunction();
+				} else {
+					alert("delete - Error getting data from the server");
+				}
+			}
+		}
+		xhr.open("DELETE", uri + id, true);
+		xhr.send(null);
+	}
+	this.createXMLHttpRequest = function () {
+		try {return new XMLHttpRequest();} catch(e) {}
+		try {return new ActiveXObject("Msxml2.XMLHTTP");} catch(e) {}
+		try {return new ActiveXObject("Microsoft.XMLHTTP");} catch(e) {}
+		alert("XML http request not supported");
+		return null;
+	}
+}
+
+

Note: That we have to have the bindig-jsonrpc.js, and binding-atom.js local in our project is only
+temporary, so this step will be removed in the future.

+ +

After completing these steps the content of the "store" project will look as follows.

+ +

 

+ +

Compose Services

+ +

Now that you have all the required service implementations you compose them together to provide
+the store composite service. The composition is stored in a .composite file.

+ +

Select the "src" folder of the "store" project. Right click to get the context menu, select New, and
+then File. In the New File dialog enter "store.composite" for the File name, and then select Finish
+to complete the dialog.

+ +

The Text editor will open on the new created composite file. Replace the content of the editor by
+copy-paste of the following composite snippet.

+
+
<?xml version="1.0" encoding="UTF-8"?>
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+	xmlns:s="http://store"
+	name="store">
+	<component name="ufs">
+		<t:implementation.resource location="ufservices"/>
+		<service name="Resource">
+			<t:binding.http/>
+		</service>
+	</component>
+	<component name="Catalog">
+		<implementation.java class="services.CatalogImpl"/>
+		<property name="currencyCode">USD</property>
+		<service name="Catalog">
+			<t:binding.jsonrpc/>
+		</service>
+		<reference name="currencyConverter" target="CurrencyConverter"/>
+	</component>
+	<component name="ShoppingCart">
+		<implementation.java class="services.ShoppingCartImpl"/>
+		<service name="Collection">
+			<t:binding.atom/>
+		</service>
+	</component>
+	<component name="CurrencyConverter">
+		<implementation.java class="services.CurrencyConverterImpl"/>
+	</component>
+</composite>
+
+

After completing these steps the content of the "store" project will look as follows.

+ +


+ +

Launch Services

+ +

In this step you create the code to launch the Tuscany runtime with the new store composite
+service you created.

+ +

Select the "store" project and click on the New Java Package button   in the toolbar to start the

+ +

package creation dialog. Use the dialog to create a new package named "launch". 
+Select the "launch" package. Select the New Java Class button   . In the dialog enter "Launch"
+as the Name of the class, check the checkbox for creating a main method stub, and then select
+Finish to complete the dialog.

+ +

The Java editor will open on the new created Java class. Replace the content of the editor by
+copy-paste of the following Java class code snippet.

+
+
package launch;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+public class Launch {
+	public static void main(String[] args) throws Exception {
+		System.out.println("Starting ...");
+		SCADomain scaDomain = SCADomain.newInstance("store.composite");
+		System.out.println("store.composite ready for big business !!!");
+		System.out.println();
+		System.in.read();
+		scaDomain.close();
+	}
+}
+
+

 After completing these steps the content of the "store" project will look as follows.

+ +


+Congratulations you completed your 1st composite service applications, now its time to take it into
+action.

+ +

Use Services

+ +

In this step you launch and use the store composite service application you created.

+ +

First select the "Launch" class in the "launch" package of your "store" project. Right click to get the
+context menu, select Run As, and then Java application. The Tuscany runtime will start up adding
+the store composition to its domain.

+ +

The Eclipse console will show the following messages.

+ +

 

+ +

 Next Launch your Web browser and enter the following address:

+ +

http://localhost:8080/ufs/store.html 

+ +

 You get to the Store user facing service of the composite service application.

+ +

+ +

You can select items from the Catalog and add them to your Shopping Cart.

+ +

Note: When adding items for the first time you will be asked for userid and password by the
+browser. Enter "admin" for both.

+ +

+ +

Since the ShoppingCart service is bound using the ATOM binding, you can also look at the
+shopping card content in ATOM feed form by clicking on the feed icon . You get the browsers default rendering for ATOM feeds.

+ +

 

+ +

 Use the browser back button to get back to the Store page.

+ +

+ +

And then you can Checkout to complete your order.

+ +

+ +

Explore the Samples from the Tuscany Distribution

+ +

The sample folder of the Tuscany distribution provides a rich set of samples ready for you to explore.

+ +



+In Eclipse create a New Java Project, specify the project name, select Create project from
+existing source, and specify the folder that contains the sample source.

+ +



+Use Next to get to the next page in the New Java Project dialog. There go to the Libraries tab, use
+the Add Library... pushbutton to add the JUnit library and the user library TUSCANY.

+ +



+Finish the New Java Project dialog. You now have the sample project available in the Eclipse workbench.

+ +



+For the calculator sample that we've chosen go to its CalculatorClient class and select Run As ->
+Java Application. You will see the following output in the console.

+ +

 

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator1.png b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator1.png new file mode 100644 index 0000000000..571cb46381 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator1.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator1.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator1.png.jpeg new file mode 100644 index 0000000000..600348eba9 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator1.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator2.png b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator2.png new file mode 100644 index 0000000000..33337a534d Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator2.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator2.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator2.png.jpeg new file mode 100644 index 0000000000..7bc4855628 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator2.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator3.png b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator3.png new file mode 100644 index 0000000000..9802b38fa3 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator3.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator3.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator3.png.jpeg new file mode 100644 index 0000000000..b571f57dd8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator3.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator4.png b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator4.png new file mode 100644 index 0000000000..cea563b09c Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator4.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator4.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator4.png.jpeg new file mode 100644 index 0000000000..6d5dd226d3 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculator4.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculatorblocks.png b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculatorblocks.png new file mode 100644 index 0000000000..89448ffc60 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculatorblocks.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculatorblocks.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculatorblocks.png.jpeg new file mode 100644 index 0000000000..c42fdc76f6 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.data/calculatorblocks.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.html b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.html new file mode 100644 index 0000000000..c3067192c9 --- /dev/null +++ b/site/trunk/site-publish/getting-started-with-tuscany-using-the-command-line.html @@ -0,0 +1,577 @@ + + + + + + + + + + + + + + + Apache Tuscany : Getting Started with Tuscany ( using the Command Line) + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Getting Started with Tuscany ( using the Command Line) + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +


+ + +

What this is about
+

+ +

This guide takes a command line based approach to getting started with Apache Tuscany Java SCA. For the Eclipse users amongst us there are other guides that show how to install the distribution into Eclipse or how to exploit Tuscany SCA Java using the Eclipse plugin that is has been built as part of the project. This article however just uses the downloaded Tuscany SCA Java distribution, Java, Maven or Ant and the command line. So if you want to feel close to the action this is where to start!

+ +

Tuscany ships with a number of samples. One of the most straightforward of these is the calculator sample. We will use this to make sure that you installation is working properly. As the name indicates, this example performs typical calculator operations. It is given two numbers and asked to perform an operation on them. Our calculator will handle add, subtract, multiply and divide.

+ +

By the end of this exercise you know how to develop, deploy and run the calculator application and how to reconfigure it to make it work for different environments.

+ +

Setup Environment
+

+ +

First of all we will walk through running the calculator sample to make sure you installation is working correctly. Then we will walk through the steps taken to implement the calculator sample in the first place. Following this you should be familiar with how to build a basic SCA application that runs in a single, stand-alone, SCA runtime. The next step is to update the sample to use some of the other Tuscany SCA Java extensions. Finally we will use the calculator sample to show you how you can build a distributed Service Oriented Architecture using Tuscany SCA Java.

+ +
    +
  • Download the Tuscany Java SCA release.
    +From this page you can get binary and source releases for both windows and linux. For this exercise you will need the binary release for your preferred platform. You can use the source code release but you will have to use Maven at all stages.
  • +
  • Download java
    +Java 5
  • +
  • Download a build tool
    +Maven 2.0.7+
    +OR
    +Ant 1.7.0
  • +
+ + +

Run An Existing Calculator Appliction
+

+ +

Tuscan SCA provides a calculator sample with its binary distribution. You can find it in the samples/calculator directory. As shown below, this sample and every sample in Tuscany has a "readme" that explains how to run the sample, a *.png file that has shows how the SCA application looks like.

+ +

+ +

Let's first run the sample before we go about building it. It is easy! Go to the directory ..\samples\calculator

+
+
+ant run
+
+
+ +

Alternatively if you want to run the sample directly from the command line try the following.

+ +
    +
  • if you are using Windows issue the command: +
    +
    +java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator.jar calculator.CalculatorClient
    +
    +
  • +
  • if you are using *nix issue the command: +
    +
    +java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-calculator.jar calculator.CalculatorClient
    +
    +
  • +
+ + +

You should see the following result:

+ +

3 + 2=5.0
+3 - 2=1.0
+3 * 2=6.0
+3 / 2=1.5

+ +

+ +

If you are using the source distribution then we suggest you use Maven to build and run the calculator sample because the tuscany-sca-manifest.jar is not provided with the source distribution. This jar is part of the binary distribution and collects together all of the tuscany jars in one place so that the java command line is nice and short when running samples.

+ +

Build The Calculator Sample In Java
+

+ +

This example illustrates how to define your application while staying focused on the business logic. It walks you through the steps of building the calculator sample. All connections between the components within the composite are local and described using Java interfaces.

+ +

Step 1 - Define what building blocks are needed: Think about how your application can be broken down into smaller functions/services. Each block is a logical unit of operation that can be used in the overall application. In this case, calculator application can be divided into five blocks: AddService block, SubstractService block, MultiplyService block and DivideService block and a main block that takes a request and routes it to the right operation. We have called this main block the CalculatorService

+ +

+ +

Step 2 - Implement each block: Now that you have identified the blocks of functionality in your application, you are ready to create each block. In SCA the blocks of functionality are referred to as components so let's look at how we implement a component. We'll take the AddService component as our first example.

+ +

The AddService component will provide a service that adds two numbers together. The CalculatorService component uses the AddService component whenever it is asked to perform additions. If we were writing the AddService component in plain old Java we would start by describing a (Java) interface.

+ +
+
+public interface AddService {
+
+    double add(double n1, double n2);
+}
+
+
+ +

Now, we provide an implementation of this interface.

+ +
+
+public class AddServiceImpl implements AddService {
+
+    public double add(double n1, double n2) {
+        return n1 + n2;
+    }
+}
+
+
+ +

But wait! Aren't we writing an SCA component? It must be more complicated than plain old Java interface and implementation, right? Well, actually, an SCA component can just be plain old Java so we have just done all the coding we needed to implement the SCA AddService component. We can use SCA to expose the service that the AddService component provides over any of the supported bindings, for example, WebServices, JMS or RMI, without changing the AddService implementation.

+ +

Let's take a look at the CalculatorService component. This is interesting because it's going to call the AddService component. In the full application it will call the SubtractService, MultiplyService and DivideService components as well, but we will ignore these for the time being as they follow the same pattern as we will implement for the AddService component.

+ +

Again we will start by defining an interface because CalcultorService is itself providing an interface that others will call.

+ +
+
+public interface CalculatorService {
+
+    double add(double n1, double n2);
+    double subtract(double n1, double n2);
+    double multiply(double n1, double n2);
+    double divide(double n1, double n2);
+}
+
+
+ +

Now we implement this interface.

+ +
+
+public class CalculatorServiceImpl implements CalculatorService {
+
+    private AddService addService;
+    private SubtractService subtractService;
+    private MultiplyService multiplyService;
+    private DivideService divideService;
+   
+    @Reference
+    public void setAddService(AddService addService) {
+        this.addService = addService;
+    }
+
+    ...set methods for the other attributes would go here
+
+    public double add(double n1, double n2) {
+        return addService.add(n1, n2);
+    }
+
+    ...implementations of the other methods would go here
+}
+
+
+ +

So we now have some components implemented using Java. Each component has a well defined interface, using Java interfaces in this case. Notice that these are just plain Java services with business logic and nothing else in them.

+ +

+ + +

Assemble the Calculator Application
+

+

So far we have created the components. How do we actually run the calculator application? Well of course the java programmer in us wants to get down to it, write a mainline to connect our two components together and run then. We could still do that easily in this case.

+ +
+
+public class CalculatorClient {
+    public static void main(String[] args) throws Exception {
+
+        CalculatorServiceImpl calculatorService = new CalculatorServiceImpl();
+        AddService            addService        = new AddServiceImpl();
+        calculatorService.setAddService(addService);
+      
+        System.out.println("3 + 2=" + calculatorService.add(3, 2));
+        // calls to other methods go here if we have implemented SubtractService, MultiplyService, DivideService
+    }
+}
+
+
+ +

But this doesn't run using the Tuscany SCA runtime and extending this code to provide web services interfaces, for example, would be a little more complicated. What do we have to do to make it run in Tuscany where we get all things like web service support for free? Well, not much actually. First let's change the client to fire up the Tuscany SCA runtime before calling our components.

+ +
+
+public class CalculatorClient {
+    public static void main(String[] args) throws Exception {
+
+        SCADomain scaDomain = SCADomain.newInstance("Calculator.composite");
+        CalculatorService calculatorService = scaDomain.getService(CalculatorService.class, "CalculatorServiceComponent");
+
+        System.out.println("3 + 2=" + calculatorService.add(3, 2));
+        // calls to other methods go here if we have implemented SubtractService, MultiplyService, DivideService
+
+        scaDomain.close();
+    }
+}
+
+
+

You can see that we start by using a static method on SCADomain to create a new instance of itself. The SCADomain is a concept in SCA that represents the boundary of an SCA system. This could be distributed across many processors. For now, lets concentrate on getting this working inside a single Java VM.

+ +

The parameter "Calculator.composite" refers to an XML file that tells SCA how the components in our calculator application are assembled into a working application. Here is the XML that's inside Calculator.composite.

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           name="Calculator">
+
+    <component name="CalculatorServiceComponent">
+	<implementation.java class="calculator.CalculatorServiceImpl"/>
+        <reference name="addService" target="AddServiceComponent" />
+        <!-- You can add references to SubtractComponent, MultiplyComponent and DivideComponent  -->
+    </component>
+
+    <component name="AddServiceComponent">
+        <implementation.java class="calculator.AddServiceImpl"/>
+    </component>
+
+    <!-- definitions of SubtractComponent, MultiplyComponent and DivideComponent -->
+
+</composite>
+
+
+ +

In our case so far, we defined two components and we specify the Java implementation classes that Tuscany SCA needs to load to make them work in the .composite file. These are the classes we have just implemented.

+ +

Also note that the CalculatorServiceComponent has a reference named "addService". In the XML, this reference targets the AddServiceComponent. It is no coincidence that the reference name, "addService", matches the name of the addService field we created when we implemented CalculatorServiceImpl. The Tuscany SCA runtime parses the information from the XML composite file and uses it to build the objects and relationships that represent our calculator application. It first creates instances of AddServiceImpl and CalcualtorSreviceImpl. It then injects a reference to the AddServiceImpl object into the addService field in the CalculatorServiceImpl object. If you look back at how we implemented the CalculatorService you will see an @Reference annotation that tells SCA which fields are expecting to be set automatically by SCA. This is equivalent to this piece of code from our normal Java client.

+ +
+
+        CalculatorServiceImpl calculatorService = new CalculatorServiceImpl();
+        AddService            addService        = new AddServiceImpl();
+        calculatorService.setAddService(addService);
+
+
+ +

Once the composite file is loaded into the SCADomain our client code asks the SCADomain to give us a reference to the component called "CalculatorServiceComponent".

+ +
+
+        CalculatorService calculatorService = scaDomain.getService(CalculatorService.class, "CalculatorServiceComponent");
+
+
+ +

We can now use this reference as though we had created it ourselves, for example, from the CalculatorServiceImpl.add() method implementation.

+ +
+
+return addService.add(n1, n2);
+
+
+ +

The SCA specifications often describe SCA applications is diagrammatic form. This often helps give a quick overview of what components are part of an application and how they are wired together. If we draw a diagram of what we have build in the calculator sample we come up with something like.

+ +

+ +

You will notice that diagrams are provided with all of our samples. If you like to take a visual approach to things this may help you become quickly familiar with the components in the samples. Take a look at the ".png" files in the top level directory of each sample.

+ + +

Deploy the Calculator Application
+

+

The composite describes how SCA components are implemented and how they are assembled by wiring references to targets. This composite file has some dependencies, in this case the Java class and interface files that are used to implement the SCA components that it defines. The collection of composite files and other artifacts that are required to run an SCA application are collected together into one or more SCA contributions. A contribution can be a simple as a directory in a file system or could be packaged in, for example, a Jar file. SCA does not mandate any particular packing scheme. For our calculator sample you can imagine the contribution holding the calculator composite and all of its dependencies.

+ +

In fact if you look inside the jar file that the calculator sample produces, you will find the following

+
+
+calculator/AddService.class
+calculator/AddServiceImpl.class
+calculator/CalculatorClient.class
+calculator/CalculatorService.class
+calculator/CalculatorServiceImpl.class
+calculator/DivideService.class
+calculator/DivideServiceImpl.class
+calculator/MultiplyService.class
+calculator/MultiplyServiceImpl.class
+calculator/SubtractService.class
+calculator/SubtractServiceImpl.class
+Calculator.composite
+
+
+

Which are all the artifacts that are required to run the calculator sample. We just need to add this contribution to the Tuscany SCA java runtime and then call the services that will be enabled.

+ +

The samples in Tuscany come with an Ant build.xml file that allows the sample files to be rebuilt so if you want to experiment with the sample code you can do so and then recompile it.

+ +
+
+ant compile
+
+
+ +

Once recompiled you can run it as before in the Running The Calculator Sample section, for example, we provide a run target in the Ant build.xml file so the calculator sample can also be run using.

+ +
+
ant run
+
+
+ +

Reconfigure The Calculator Application - Change Bindings
+

+ +

Looking back, the client code we have written to start the calculator application using the Tuscany SCA runtime is no longer than a normal Java client for the application. However we do now have the XML composite file that describes how our application is assembled.

+ +

This concept of assembly is a great advantage as our applications become more complex and we want to change them, reuse them, integrate them with other applications or just further develop them using a programming model consistent with all our other SCA applications. Regardless of what language is used to implement each of them.

+ +

For example, lets say our calculator sample is so poweful and popular that we want to put it on the company intranet and let other people access it as a service directly from their browser based Web2.0 applications. It's at this point we would normally start reaching for the text books to work out how to make this happen. As we have an XML file that describes our application it's easy in Tuscany SCA. The following should do the trick.

+ + +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           name="Calculator">
+
+     <service name="CalculatorService" promote="CalculatorServiceComponent/CalculatorService">
+         <interface.java interface="calculator.CalculatorService"/>
+         <binding.jsonrpc/>
+     </service>    
+
+    <component name="CalculatorServiceComponent">
+		<implementation.java class="calculator.CalculatorServiceImpl"/>
+        <reference name="addService" target="AddServiceComponent" />
+        <!-- references to SubtractComponent, MultiplyComponent and DivideComponent  -->
+    </component>
+
+    <component name="AddServiceComponent">
+        <implementation.java class="calculator.AddServiceImpl"/>
+    </component>
+
+    <!-- definitions of SubtractComponent, MultiplyComponent and DivideComponent -->
+
+</composite>
+
+
+ +

All we have done is added the <service> element which tells Tuscany SCA how to expose our CalculatorServiceComponent as a JSONRPC service. Note that we didn't have to change the Java code of our components. This is just a configuration change. The helloworld-jsonrpc sample shows a working example of the jsonrpc binding that you can use as an example to change the calculator application to use JSONRPC.

+ +

If we really wanted a SOAP/HTTP web service we can do that easily too.

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           name="Calculator">
+
+     <service name="CalculatorService" promote="CalculatorServiceComponent/CalculatorService">
+         <interface.java interface="calculator.CalculatorService"/>
+         <!-- ** Below we added info for json binding ** -->
+         <binding.jsonrpc/>
+         <binding.ws/>
+     </service>    
+
+    <component name="CalculatorServiceComponent">
+		<implementation.java class="calculator.CalculatorServiceImpl"/>
+        <reference name="addService" target="AddServiceComponent" />
+        <!-- references to SubtractComponent, MultiplyComponent and DivideComponent  -->
+    </component>
+
+    <component name="AddServiceComponent">
+        <implementation.java class="calculator.AddServiceImpl"/>
+    </component>
+
+    <!-- definitions of SubtractComponent, MultiplyComponent and DivideComponent -->
+
+</composite>
+
+
+ +

We have added binding.ws here so that your calculator service is available over JSONRPC and WebService bindings at the same time. The helloworld-ws-service and helloworld-ws-reference samples show you how to work with web services.

+ +

SCA allows other kinds of flexibility. We can rewire our components, for example, using a one of the remote bindings, like RMI, we could have the CalculatorServiceComponent running on one machine wired to a remote version of the application running on another machine. The calculator-rmi-service and calculator-rmi-reference samples show the RMI binding at work.

+ +

Use Alternative Implementation Types
+

+

We could also introduce components implemented in different languages, for example, let's add the SubtractServiceComponent implemented in Ruby.

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           name="Calculator">
+
+    <component name="CalculatorServiceComponent">
+        <implementation.java class="calculator.CalculatorServiceImpl"/>
+        <reference name="addService" target="AddServiceComponent" />
+        <reference name="subtractService" target="SubtractServiceComponent" />
+        <!-- references to MultiplyComponent and DivideComponent  -->
+    </component>
+
+    <component name="AddServiceComponent">
+        <implementation.java class="calculator.AddServiceImpl"/>
+    </component>
+
+    <component name="SubtractServiceComponent">
+        <implementation.script script="calculator/SubtractServiceImpl.rb"/>
+    </component>
+
+    <!-- definitions of MultiplyComponent and DivideComponent -->
+
+</composite>
+
+
+ +

Of course we need the Ruby code that implements the component.

+ +
+
+def subtract(n1, n2)
+    return n1 - n2
+end
+
+
+ +

The Tuscany SCA runtime handles wiring Java components to Ruby components and performs any required data transformations. The calculator-script sample shows different script languages in use.

+ +

So, now that our application is described as an SCA assembly there are lots of possibilities as we further develop it and integrate it with other applications.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project.png new file mode 100644 index 0000000000..48bf481e1d Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project.png.jpeg new file mode 100644 index 0000000000..4a05eb3baa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project_lib.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project_lib.png new file mode 100644 index 0000000000..656465d618 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project_lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project_lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project_lib.png.jpeg new file mode 100644 index 0000000000..268ad62251 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_Calc_Java_Project_lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_User_Lib.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_User_Lib.png new file mode 100644 index 0000000000..80b2822afa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_User_Lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_User_Lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_User_Lib.png.jpeg new file mode 100644 index 0000000000..5273a016d2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/New_User_Lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/Tuscany_User_Lib.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/Tuscany_User_Lib.png new file mode 100644 index 0000000000..796f560dd8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/Tuscany_User_Lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/Tuscany_User_Lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/Tuscany_User_Lib.png.jpeg new file mode 100644 index 0000000000..3af6676b6f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/Tuscany_User_Lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feed.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feed.png new file mode 100644 index 0000000000..c1da921ee5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feed.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feed.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feed.png.jpeg new file mode 100644 index 0000000000..779e369a2e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feed.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feeds_page.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feeds_page.png new file mode 100644 index 0000000000..6e7c4bb227 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feeds_page.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feeds_page.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feeds_page.png.jpeg new file mode 100644 index 0000000000..82fe4d8111 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/atom_feeds_page.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_eclipse_console.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_eclipse_console.png new file mode 100644 index 0000000000..f7c0fd012b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_eclipse_console.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_eclipse_console.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_eclipse_console.png.jpeg new file mode 100644 index 0000000000..dd108d061a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_eclipse_console.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_proj_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_proj_dlg.png new file mode 100644 index 0000000000..84f439c41c Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_proj_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_proj_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_proj_dlg.png.jpeg new file mode 100644 index 0000000000..a0828163fd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/calculator_proj_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/class_btn.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/class_btn.png new file mode 100644 index 0000000000..60bce5ee98 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/class_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/class_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/class_btn.png.jpeg new file mode 100644 index 0000000000..cab8b0264b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/class_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/eclipse_console.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/eclipse_console.png new file mode 100644 index 0000000000..9ef69db7d0 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/eclipse_console.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/eclipse_console.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/eclipse_console.png.jpeg new file mode 100644 index 0000000000..99dd341348 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/eclipse_console.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/first_composite.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/first_composite.png new file mode 100644 index 0000000000..00d3edd3d8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/first_composite.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/first_composite.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/first_composite.png.jpeg new file mode 100644 index 0000000000..58e4733cf4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/first_composite.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.jpg new file mode 100644 index 0000000000..534748845b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.jpg.jpeg new file mode 100644 index 0000000000..6d63cd1c5d Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.png new file mode 100644 index 0000000000..85a24d4a27 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.png.jpeg new file mode 100644 index 0000000000..71c6705477 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/folder_structure.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update.jpg new file mode 100644 index 0000000000..0357e5a253 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update.jpg.jpeg new file mode 100644 index 0000000000..d71bfe84b1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_license.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_license.jpg new file mode 100644 index 0000000000..457b4e7983 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_license.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_license.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_license.jpg.jpeg new file mode 100644 index 0000000000..e488e74fd2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_license.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_verification.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_verification.jpg new file mode 100644 index 0000000000..23ded64414 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_verification.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_verification.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_verification.jpg.jpeg new file mode 100644 index 0000000000..8e88737cea Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_feature_verification.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_finish.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_finish.jpg new file mode 100644 index 0000000000..190036e382 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_finish.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_finish.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_finish.jpg.jpeg new file mode 100644 index 0000000000..bbb6a5ef56 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_finish.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_installation.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_installation.jpg new file mode 100644 index 0000000000..ef1bd53888 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_installation.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_installation.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_installation.jpg.jpeg new file mode 100644 index 0000000000..2fd587e991 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_installation.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_new_site.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_new_site.jpg new file mode 100644 index 0000000000..ced23f111a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_new_site.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_new_site.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_new_site.jpg.jpeg new file mode 100644 index 0000000000..83c882dbd7 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_new_site.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_restart_eclipse.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_restart_eclipse.jpg new file mode 100644 index 0000000000..995daba70d Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_restart_eclipse.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_restart_eclipse.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_restart_eclipse.jpg.jpeg new file mode 100644 index 0000000000..369f562ef2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_restart_eclipse.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_search_results.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_search_results.jpg new file mode 100644 index 0000000000..dcb2ce7afd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_search_results.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_search_results.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_search_results.jpg.jpeg new file mode 100644 index 0000000000..77ae3d0f92 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_search_results.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_sites.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_sites.jpg new file mode 100644 index 0000000000..c32031adcf Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_sites.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_sites.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_sites.jpg.jpeg new file mode 100644 index 0000000000..b929427c48 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/install_update_sites.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/interface_btn.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/interface_btn.png new file mode 100644 index 0000000000..5c342b8194 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/interface_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/interface_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/interface_btn.png.jpeg new file mode 100644 index 0000000000..ee25c45cba Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/interface_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_btn.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_btn.png new file mode 100644 index 0000000000..902fe75507 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_btn.png.jpeg new file mode 100644 index 0000000000..9ed36e4e23 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_dlg.png new file mode 100644 index 0000000000..95b51cf26a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_dlg.png.jpeg new file mode 100644 index 0000000000..be327e7e1f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_folder.png new file mode 100644 index 0000000000..07cd5a0502 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_folder.png.jpeg new file mode 100644 index 0000000000..6b4cd2b9b4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_pkg_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project.png new file mode 100644 index 0000000000..50297b3afa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project.png.jpeg new file mode 100644 index 0000000000..8fdf13e716 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_dlg.png new file mode 100644 index 0000000000..5f051094b9 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_dlg.png.jpeg new file mode 100644 index 0000000000..22d226ce07 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_folder.png new file mode 100644 index 0000000000..8329b143de Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_folder.png.jpeg new file mode 100644 index 0000000000..90231cf672 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_lib.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_lib.png new file mode 100644 index 0000000000..c0b12eea7a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_lib.png.jpeg new file mode 100644 index 0000000000..4537f7d914 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/new_java_project_lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/project_layout.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/project_layout.png new file mode 100644 index 0000000000..9de01ff4d5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/project_layout.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/project_layout.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/project_layout.png.jpeg new file mode 100644 index 0000000000..745f2dbfbd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/project_layout.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.jpg new file mode 100644 index 0000000000..c06fec1d7c Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.jpg.jpeg new file mode 100644 index 0000000000..2ed010eff4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.png new file mode 100644 index 0000000000..38077052b3 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.png.jpeg new file mode 100644 index 0000000000..32e3de3909 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/release_zips.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.jpg new file mode 100644 index 0000000000..1ab42867a2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.jpg.jpeg new file mode 100644 index 0000000000..5339a41827 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.png new file mode 100644 index 0000000000..7dba24bd53 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.png.jpeg new file mode 100644 index 0000000000..00fa4a3ca4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.jpg new file mode 100644 index 0000000000..2eb5f64e93 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.jpg.jpeg new file mode 100644 index 0000000000..5d44c2a867 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.png new file mode 100644 index 0000000000..7d51969a8a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.png.jpeg new file mode 100644 index 0000000000..529ac57071 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/source_attachment_config.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page.png new file mode 100644 index 0000000000..988c62fae7 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page.png.jpeg new file mode 100644 index 0000000000..e52776334f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_1.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_1.png new file mode 100644 index 0000000000..834ef26e35 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_1.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_1.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_1.png.jpeg new file mode 100644 index 0000000000..7247d60368 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_1.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_2.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_2.png new file mode 100644 index 0000000000..c71b600146 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_2.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_2.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_2.png.jpeg new file mode 100644 index 0000000000..0ecef780b1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_2.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_3.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_3.png new file mode 100644 index 0000000000..2560148e19 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_3.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_3.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_3.png.jpeg new file mode 100644 index 0000000000..d05d2288af Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_page_3.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project.png new file mode 100644 index 0000000000..f0d1999ff2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project.png.jpeg new file mode 100644 index 0000000000..fab518699e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_1.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_1.png new file mode 100644 index 0000000000..eb6bd340d2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_1.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_1.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_1.png.jpeg new file mode 100644 index 0000000000..404c40daf8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_1.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_2.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_2.png new file mode 100644 index 0000000000..81119985d8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_2.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_2.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_2.png.jpeg new file mode 100644 index 0000000000..0159ecc040 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_2.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.jpg new file mode 100644 index 0000000000..a682bb2d74 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.jpg.jpeg new file mode 100644 index 0000000000..23b9f5c584 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.png new file mode 100644 index 0000000000..5aaf5ed3fd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.png.jpeg new file mode 100644 index 0000000000..6a5e9220cb Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_3.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.jpg new file mode 100644 index 0000000000..7c7ed0a157 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.jpg.jpeg new file mode 100644 index 0000000000..c0aa95b56b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.png new file mode 100644 index 0000000000..217d10ed25 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.png.jpeg new file mode 100644 index 0000000000..9c90a17f3a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_4.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.jpg new file mode 100644 index 0000000000..4b7e5a9b67 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.jpg.jpeg new file mode 100644 index 0000000000..ea68ebff08 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.png new file mode 100644 index 0000000000..3586520e47 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.png.jpeg new file mode 100644 index 0000000000..3fa840138a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/store_project_5.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.jpg new file mode 100644 index 0000000000..6e7ec70688 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.jpg.jpeg new file mode 100644 index 0000000000..b6019f5311 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.png new file mode 100644 index 0000000000..d58afb88d1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.png.jpeg new file mode 100644 index 0000000000..7ade1f20e5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.jpg new file mode 100644 index 0000000000..7fb4ed05c0 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.jpg.jpeg new file mode 100644 index 0000000000..2468cc9b6e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.png new file mode 100644 index 0000000000..fe79cf56c7 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.png.jpeg new file mode 100644 index 0000000000..d953ca2af1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.data/tuscany_samples_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.html b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.html new file mode 100644 index 0000000000..dbf457d763 --- /dev/null +++ b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin-11.html @@ -0,0 +1,650 @@ + + + + + + + + + + + + + + + Apache Tuscany : Getting Started with Tuscany (using Tuscany Eclipse Plugin 1.1) + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Getting Started with Tuscany (using Tuscany Eclipse Plugin 1.1) + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Ready, Set, Go - Getting started with Tuscany

+ + +

Install the Tuscany Eclipse Plugin 

+ +

The first thing you do is to start Eclipse and go to Help -> Software Updates -> Find and Install,
+select "Search for new features to install" and then click next

+ +

+ +

On the next dialog, click on "New Remote Site..." to create a new site entry. Give it a name such as
+"Tuscany" and add the site URL as *http://people.apache.org/~jsdelfino/tuscany/tools/updatesite/*

+ +

+ +

Make sure the "Remote  Site" that was just created is selected, and click "Finish"

+ +

+ +

Select the "Apache Tuscany SCA Tools" and click "Next", and then, on the next dialog, click "Finish"

+ +

+ +

Accept the "Plugin License"

+ +

+ +

and next click on "Install All"

+ +

+ +

When asked to "restart eclipse", click the  "yes" button. 

+ +

+ +

Create your 1st Composite Service Application

+ +

The following shows the composition diagram for the composite service application you are about
+to create.

+ +

+ +

The composite service application you will create is a composition of four services. The composed
+service provided is that of an on-line store.
+There is a Catalog service which you can ask for catalog items, and depending on its currency
+code property configuration it will provide the item prices in USD or EUR. The Catalog service is not
+doing the currency conversion itself it references a CurrencyConverter service to do that task. Then
+there is the ShoppingCart service into which items chosen from the catalog can be added, it is
+implemented as a REST service. The Catalog is bound using the JSONRPC binding, and the
+ShoppingCart service is bound using the ATOM binding. Finally there is the Store user facing
+service that provides the browser based user interface of the store. The Store service makes use of
+the Catalog and ShoppingCart service using the JSONRPC, and ATOM binding respectively.

+ +

Create a Java Project

+ +

In this step you create a Java Project in Eclipse to hold the composite service application.
+Click on the New Java Project button   in the toolbar to launch the project creation dialog.
+Next you enter "store" as the Project name, and for Project Layout select Create separate
+folders for sources and class files.
+

+

+Hit the Next button, and on the following page go to the Libraries tab. Use the Add Library...
+button on the right to add the Tuscany Library library to the project.

+


+Hit the Finish button to complete the New Java Project dialog to create the "store" java project. 

+

+ +

Construct Services

+ +

First you create two package folders into which later in this step you place service implementations.
+Select the "store" project and click on the New Java Package button in the toolbar to launch
+the package creation dialog.

+ +

Next you enter "services" as the package Name, and press the Finish button to complete the
+dialog.
+

+Repeat the previous step to create another package named "ufservices". The store project now
+should look as follows.

+

+In the following you will place in the "services" package the regular services, and in the "ufservices"
+package the user facing services of the composite service application you create.

+ +

Catalog

+ +

In this step you create the Catalog service interface and implementation.
+Select the "services" package. Next you click on the dropdown arrow next to the New Java Class
+button    and select the New Java Interface    option from the dropdown list. In the dialog
+enter "Catalog" as the Name of the interface and select the Finish button to complete the dialog.
+The Java editor will open on the new created Java interface. Replace the content of the editor by
+copy-paste of the following Java interface code snippet.

+
+
+package services;
+import org.osoa.sca.annotations.Remotable;
+@Remotable
+public interface Catalog {
+    String[] get();
+}
+
+
+

Select the "services" package again. Select the New Java Class button . In the dialog enter
+"CatalogImpl" as the Name of the class, add "Catalog" as the interface this class implements, and
+then select Finish to complete the dialog.

+ +

The Java editor will open on the new created Java class. Replace the content of the editor by
+copy-paste of the following Java class code snippet.

+
+
+package services;
+import java.util.ArrayList;
+import java.util.List;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+public class CatalogImpl implements Catalog {
+	@Property
+	public String currencyCode = "USD";
+	@Reference
+	public CurrencyConverter currencyConverter;
+	private List<String> catalog = new ArrayList<String>();
+	@Init
+	public void init() {
+		String currencySymbol = currencyConverter.getCurrencySymbol(currencyCode);
+		catalog.add("Apple - " + currencySymbol +
+		currencyConverter.getConversion("USD", currencyCode, 2.99f));
+		catalog.add("Orange - " + currencySymbol +
+		currencyConverter.getConversion("USD", currencyCode, 3.55f));
+		catalog.add("Pear - " + currencySymbol +
+		currencyConverter.getConversion("USD", currencyCode, 1.55f));
+	}
+	public String[] get() {
+		String[] catalogArray = new String[catalog.size()];
+		catalog.toArray(catalogArray);
+		return catalogArray;
+	}
+}
+
+
+

After completing these steps the content of the "store" project will look as follows.
+

+Note: CatalogImpl is red x'ed because it makes use of the CurrencyConverter interface that we
+have not implemented yet.

+ +

CurrencyConverter

+ +

In this step you create the CurrencyConverter service interface and implementation.
+You follow the same steps that you learned previously to create the interface and implementation.
+First create a Java interface in the "services" package named "CurrencyConverter" and copy-paste
+the following Java interface code snippet into it.
+  

+
+
+package services;
+import org.osoa.sca.annotations.Remotable;
+@Remotable
+public interface CurrencyConverter {
+	public float getConversion(String fromCurrenycCode,
+	String toCurrencyCode, float amount);
+	public String getCurrencySymbol(String currencyCode);
+}
+
+
+

Next create a Java class in the "services" package named "CurrencyConverterImpl" and copy-paste
+the following Java class code snippet into it.

+
+
+package services;
+public class CurrencyConverterImpl implements CurrencyConverter {
+	public float getConversion(String fromCurrencyCode,
+		String toCurrencyCode, float amount) {
+		if (toCurrencyCode.equals("USD"))
+			return amount;
+		else 			if (toCurrencyCode.equals("EUR"))
+				return amount*0.7256f;
+		return 0;
+	}
+	public String getCurrencySymbol(String currencyCode) {
+		if (currencyCode.equals("USD"))
+			return "$";
+		else
+			if (currencyCode.equals("EUR"))
+				return "€";
+		return "?";
+	}
+}
+
+
+

After completing these steps the content of the "store" project will look as follows.

+ +

+ +

ShoppingCart

+ +

In this step you create the ShoppingCart service implementation.

+ +

You follow the same steps that you learned previously to create the implementation.

+ +

Create a Java class in the "services" package named "ShoppingCartImpl" and copy-paste the
+following Java class code snippet into it.

+
+
+package services;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import org.apache.tuscany.sca.binding.feed.collection.Collection;
+import org.apache.tuscany.sca.binding.feed.collection.NotFoundException;
+import com.sun.syndication.feed.atom.Content;
+import com.sun.syndication.feed.atom.Entry;
+import com.sun.syndication.feed.atom.Feed;
+import com.sun.syndication.feed.atom.Link;
+public class ShoppingCartImpl implements Collection {
+	// needs to change to instance var once conversation scope works
+	private static Map<String, Entry> cart = new HashMap<String, Entry>();
+	public Feed getFeed() {
+		Feed feed = new Feed();
+		feed.setTitle("shopping cart");
+		Content subtitle = new Content();
+		subtitle.setValue("Total : " + getTotal());
+		feed.setSubtitle(subtitle);
+		feed.getEntries().addAll(cart.values());
+		return feed;
+	}
+	public Entry get(String id) throws NotFoundException {
+		return cart.get(id);
+	}
+	public Entry post(Entry entry) {
+		String id = "cart-" + UUID.randomUUID().toString();
+		entry.setId(id);
+		Link link = new Link();
+		link.setRel("edit");
+		link.setHref("" + id);
+		entry.getOtherLinks().add(link);
+		link = new Link();
+		link.setRel("alternate");
+		link.setHref("" + id);
+		entry.getAlternateLinks().add(link);
+		entry.setCreated(new Date());
+		cart.put(id, entry);
+		return entry;
+	}
+		public void put(String id, Entry entry) throws NotFoundException {
+		entry.setUpdated(new Date());
+		cart.put(id, entry);
+	}
+	public void delete(String id) throws NotFoundException {
+		if (id.equals(""))
+			cart.clear();
+		else
+			cart.remove(id);
+	} 	private String getTotal() {
+		float total = 0;
+		String symbol = "";
+		if (!cart.isEmpty()) {
+			Entry entry = cart.values().iterator().next();
+			String item = ((Content)entry.getContents().get(0)).getValue();
+			symbol = item.substring(item.indexOf("-")+2, item.indexOf("-")+3);
+		}
+		for (Entry entry : cart.values()) {
+			String item = ((Content)entry.getContents().get(0)).getValue();
+			total += Float.valueOf(item.substring(item.indexOf("-")+3));
+		}
+		return symbol + String.valueOf(total);
+	}
+}
+
+
+

Note: Since the Tuscany conversational support is not ready yet the cart is realized through a hack.
+The cart field is defined as static.

+ +

After completing these steps the content of the "store" project will look as follows.

+ +


+ +

Store

+ +

In this step you create the user facing Store service that will run in a Web browser and provide the
+user interface to the other services you created.

+ +

Select the "ufservices" package. Right click to get the context menu, select New, and then File. In
+the New File dialog enter "store.html" for the File name, and then select Finish to complete the
+dialog.

+ +

The Text editor will open on the new created html file. Replace the content of the editor by copy-paste
+of the following html snippet.

+
+
+<html>
+<head>
+<title>Store</TITLE>
+
+<script type="text/javascript" src="store.js"></script>
+
+<script language="JavaScript">
+
+	//@Reference
+	var catalog = new Reference("catalog");
+
+	//@Reference
+	var shoppingCart = new Reference("shoppingCart");
+
+
+	function catalog_getResponse(items) {
+		var catalog = "";
+		for (var i=0; i<items.length; i++)
+			catalog += '<input name="items" type="checkbox" value="' +
+						items[i] + '">' + items[i]+ ' <br>';
+		document.getElementById('catalog').innerHTML=catalog;
+	}
+
+	function shoppingCart_getResponse(feed) {
+		if (feed != null) {
+			var entries = feed.getElementsByTagName("entry");
+			var list = "";
+			for (var i=0; i<entries.length; i++) {
+				var item = entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
+				list += item + ' <br>';
+			}
+			document.getElementById("shoppingCart").innerHTML = list;
+			document.getElementById('total').innerHTML = feed.getElementsByTagName("subtitle")[0].firstChild.nodeValue;
+		}
+	}
+	function shoppingCart_postResponse(entry) {
+		shoppingCart.get("", shoppingCart_getResponse);
+	}
+
+
+	function addToCart() {
+		var items  = document.catalogForm.items;
+		var j = 0;
+		for (var i=0; i<items.length; i++)
+			if (items[i].checked) {
+				var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title>cart-item</title><content type="text">'+items[i].value+'</content></entry>'
+				shoppingCart.post(entry, shoppingCart_postResponse);
+				items[i].checked = false;
+			}
+	}
+	function checkoutCart() {
+		document.getElementById('store').innerHTML='<h2>' +
+				'Thanks for Shopping With Us!</h2>'+
+				'<h2>Your Order</h2>'+
+				'<form name="orderForm" action="store.html">'+
+					document.getElementById('shoppingCart').innerHTML+
+					'<br>'+
+					document.getElementById('total').innerHTML+
+					'<br>'+
+					'<br>'+
+					'<input type="submit" value="Continue Shopping">'+
+				'</form>';
+		shoppingCart.del("", null);
+	}
+	function deleteCart() {
+		shoppingCart.del("", null);
+		document.getElementById('shoppingCart').innerHTML = "";
+		document.getElementById('total').innerHTML = "";
+	}
+
+	catalog.get(catalog_getResponse);
+	shoppingCart.get("", shoppingCart_getResponse);
+</script>
+
+</head>
+
+<body>
+<h1>Store</h1>
+  <div id="store">
+   	<h2>Catalog</h2>
+   	<form name="catalogForm">
+		<div id="catalog" ></div>
+		<br>
+		<input type="button" onClick="addToCart()"  value="Add to Cart">
+   	</form>
+
+ 	<br>
+
+   	<h2>Your Shopping Cart</h2>
+   	<form name="shoppingCartForm">
+		<div id="shoppingCart"></div>
+		<br>
+		<div id="total"></div>
+		<br>
+		<input type="button" onClick="checkoutCart()" value="Checkout">
+		<input type="button" onClick="deleteCart()" value="Empty">
+	   	<a href="../ShoppingCart/">(feed)</a>
+	</form>
+  </div>
+</body>
+</html>
+
+
+

After completing these steps the content of the "store" project will look as follows.

+ +

 

+ +

Compose Services

+ +

Now that you have all the required service implementations you compose them together to provide
+the store composite service. The composition is stored in a .composite file.

+ +

Select the "src" folder of the "store" project. Right click to get the context menu, select New, and
+then File. In the New File dialog enter "store.composite" for the File name, and then select Finish
+to complete the dialog.

+ +

The Text editor will open on the new created composite file. Replace the content of the editor by
+copy-paste of the following composite snippet.

+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+	xmlns:s="http://store"
+	name="store">
+	<component name="store">
+		<t:implementation.widget location="ufservices/store.html"/>
+		<service name="Widget">
+			<t:binding.http/>
+		</service>
+                <reference name="catalog" target="Catalog">
+		 	<t:binding.jsonrpc/>
+		 </reference>
+		 <reference name="shoppingCart" target="ShoppingCart">
+		 	<t:binding.atom/>
+		 </reference>
+	</component>
+	<component name="Catalog">
+		<implementation.java class="services.CatalogImpl"/>
+		<property name="currencyCode">USD</property>
+		<service name="Catalog">
+			<t:binding.jsonrpc/>
+		</service>
+		<reference name="currencyConverter" target="CurrencyConverter"/>
+	</component>
+	<component name="ShoppingCart">
+		<implementation.java class="services.ShoppingCartImpl"/>
+		<service name="Collection">
+			<t:binding.atom/>
+		</service>
+	</component>
+	<component name="CurrencyConverter">
+		<implementation.java class="services.CurrencyConverterImpl"/>
+	</component>
+</composite>
+
+
+

After completing these steps the content of the "store" project will look as follows.

+ +


+ +

Launch Services

+ +

In this step you create the code to launch the Tuscany runtime with the new store composite
+service you created.

+ +

Select the "store" project and click on the New Java Package button   in the toolbar to start the

+ +

package creation dialog. Use the dialog to create a new package named "launch". 
+Select the "launch" package. Select the New Java Class button   . In the dialog enter "Launch"
+as the Name of the class, check the checkbox for creating a main method stub, and then select
+Finish to complete the dialog.

+ +

The Java editor will open on the new created Java class. Replace the content of the editor by
+copy-paste of the following Java class code snippet.

+
+
+package launch;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+public class Launch {
+	public static void main(String[] args) throws Exception {
+		System.out.println("Starting ...");
+		SCADomain scaDomain = SCADomain.newInstance("store.composite");
+		System.out.println("store.composite ready for big business !!!");
+		System.out.println();
+		System.in.read();
+		scaDomain.close();
+	}
+}
+
+
+

 After completing these steps the content of the "store" project will look as follows.

+ +


+Congratulations you completed your 1st composite service applications, now its time to take it into
+action.

+ +

Use Services

+ +

In this step you launch and use the store composite service application you created.

+ +

First select the "Launch" class in the "launch" package of your "store" project. Right click to get the
+context menu, select Run As, and then Java application. The Tuscany runtime will start up adding
+the store composition to its domain.

+ +

The Eclipse console will show the following messages.

+ +

 

+ +

 Next Launch your Web browser and enter the following address:

+ +

http://localhost:8080/store/store.html 

+ +

 You get to the Store user facing service of the composite service application.

+ +

+ +

You can select items from the Catalog and add them to your Shopping Cart.

+ +

Note: When adding items for the first time you will be asked for userid and password by the
+browser. Enter "admin" for both.

+ +

+ +

Since the ShoppingCart service is bound using the ATOM binding, you can also look at the
+shopping card content in ATOM feed form by clicking on the feed icon . You get the browsers default rendering for ATOM feeds.

+ +

 

+ +

 Use the browser back button to get back to the Store page.

+ +

+ +

And then you can Checkout to complete your order.

+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project.png new file mode 100644 index 0000000000..48bf481e1d Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project.png.jpeg new file mode 100644 index 0000000000..4a05eb3baa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project_lib.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project_lib.png new file mode 100644 index 0000000000..656465d618 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project_lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project_lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project_lib.png.jpeg new file mode 100644 index 0000000000..268ad62251 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_Calc_Java_Project_lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_User_Lib.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_User_Lib.png new file mode 100644 index 0000000000..80b2822afa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_User_Lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_User_Lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_User_Lib.png.jpeg new file mode 100644 index 0000000000..5273a016d2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/New_User_Lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/Tuscany_User_Lib.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/Tuscany_User_Lib.png new file mode 100644 index 0000000000..796f560dd8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/Tuscany_User_Lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/Tuscany_User_Lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/Tuscany_User_Lib.png.jpeg new file mode 100644 index 0000000000..3af6676b6f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/Tuscany_User_Lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feed.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feed.png new file mode 100644 index 0000000000..c1da921ee5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feed.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feed.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feed.png.jpeg new file mode 100644 index 0000000000..779e369a2e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feed.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feeds_page.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feeds_page.png new file mode 100644 index 0000000000..6e7c4bb227 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feeds_page.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feeds_page.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feeds_page.png.jpeg new file mode 100644 index 0000000000..82fe4d8111 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/atom_feeds_page.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_eclipse_console.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_eclipse_console.png new file mode 100644 index 0000000000..f7c0fd012b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_eclipse_console.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_eclipse_console.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_eclipse_console.png.jpeg new file mode 100644 index 0000000000..dd108d061a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_eclipse_console.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_proj_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_proj_dlg.png new file mode 100644 index 0000000000..84f439c41c Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_proj_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_proj_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_proj_dlg.png.jpeg new file mode 100644 index 0000000000..a0828163fd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/calculator_proj_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/class_btn.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/class_btn.png new file mode 100644 index 0000000000..60bce5ee98 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/class_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/class_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/class_btn.png.jpeg new file mode 100644 index 0000000000..cab8b0264b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/class_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/eclipse_console.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/eclipse_console.png new file mode 100644 index 0000000000..9ef69db7d0 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/eclipse_console.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/eclipse_console.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/eclipse_console.png.jpeg new file mode 100644 index 0000000000..99dd341348 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/eclipse_console.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/first_composite.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/first_composite.png new file mode 100644 index 0000000000..00d3edd3d8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/first_composite.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/first_composite.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/first_composite.png.jpeg new file mode 100644 index 0000000000..58e4733cf4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/first_composite.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.jpg new file mode 100644 index 0000000000..534748845b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.jpg.jpeg new file mode 100644 index 0000000000..6d63cd1c5d Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.png new file mode 100644 index 0000000000..85a24d4a27 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.png.jpeg new file mode 100644 index 0000000000..71c6705477 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/folder_structure.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update.jpg new file mode 100644 index 0000000000..0357e5a253 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update.jpg.jpeg new file mode 100644 index 0000000000..d71bfe84b1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_license.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_license.jpg new file mode 100644 index 0000000000..457b4e7983 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_license.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_license.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_license.jpg.jpeg new file mode 100644 index 0000000000..e488e74fd2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_license.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_verification.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_verification.jpg new file mode 100644 index 0000000000..23ded64414 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_verification.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_verification.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_verification.jpg.jpeg new file mode 100644 index 0000000000..8e88737cea Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_feature_verification.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_finish.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_finish.jpg new file mode 100644 index 0000000000..190036e382 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_finish.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_finish.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_finish.jpg.jpeg new file mode 100644 index 0000000000..bbb6a5ef56 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_finish.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_installation.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_installation.jpg new file mode 100644 index 0000000000..ef1bd53888 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_installation.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_installation.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_installation.jpg.jpeg new file mode 100644 index 0000000000..2fd587e991 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_installation.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_new_site.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_new_site.jpg new file mode 100644 index 0000000000..ced23f111a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_new_site.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_new_site.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_new_site.jpg.jpeg new file mode 100644 index 0000000000..83c882dbd7 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_new_site.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_restart_eclipse.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_restart_eclipse.jpg new file mode 100644 index 0000000000..995daba70d Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_restart_eclipse.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_restart_eclipse.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_restart_eclipse.jpg.jpeg new file mode 100644 index 0000000000..369f562ef2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_restart_eclipse.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_search_results.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_search_results.jpg new file mode 100644 index 0000000000..dcb2ce7afd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_search_results.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_search_results.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_search_results.jpg.jpeg new file mode 100644 index 0000000000..77ae3d0f92 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_search_results.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_sites.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_sites.jpg new file mode 100644 index 0000000000..c32031adcf Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_sites.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_sites.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_sites.jpg.jpeg new file mode 100644 index 0000000000..b929427c48 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/install_update_sites.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/interface_btn.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/interface_btn.png new file mode 100644 index 0000000000..5c342b8194 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/interface_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/interface_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/interface_btn.png.jpeg new file mode 100644 index 0000000000..ee25c45cba Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/interface_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_btn.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_btn.png new file mode 100644 index 0000000000..902fe75507 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_btn.png.jpeg new file mode 100644 index 0000000000..9ed36e4e23 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_dlg.png new file mode 100644 index 0000000000..95b51cf26a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_dlg.png.jpeg new file mode 100644 index 0000000000..be327e7e1f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_folder.png new file mode 100644 index 0000000000..07cd5a0502 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_folder.png.jpeg new file mode 100644 index 0000000000..6b4cd2b9b4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_pkg_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project.png new file mode 100644 index 0000000000..50297b3afa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project.png.jpeg new file mode 100644 index 0000000000..8fdf13e716 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_dlg.png new file mode 100644 index 0000000000..5f051094b9 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_dlg.png.jpeg new file mode 100644 index 0000000000..22d226ce07 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_folder.png new file mode 100644 index 0000000000..8329b143de Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_folder.png.jpeg new file mode 100644 index 0000000000..90231cf672 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_lib.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_lib.png new file mode 100644 index 0000000000..c0b12eea7a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_lib.png.jpeg new file mode 100644 index 0000000000..4537f7d914 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/new_java_project_lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/project_layout.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/project_layout.png new file mode 100644 index 0000000000..9de01ff4d5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/project_layout.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/project_layout.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/project_layout.png.jpeg new file mode 100644 index 0000000000..745f2dbfbd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/project_layout.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.jpg new file mode 100644 index 0000000000..c06fec1d7c Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.jpg.jpeg new file mode 100644 index 0000000000..2ed010eff4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.png new file mode 100644 index 0000000000..38077052b3 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.png.jpeg new file mode 100644 index 0000000000..32e3de3909 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/release_zips.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.jpg new file mode 100644 index 0000000000..1ab42867a2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.jpg.jpeg new file mode 100644 index 0000000000..5339a41827 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.png new file mode 100644 index 0000000000..7dba24bd53 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.png.jpeg new file mode 100644 index 0000000000..00fa4a3ca4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.jpg new file mode 100644 index 0000000000..2eb5f64e93 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.jpg.jpeg new file mode 100644 index 0000000000..5d44c2a867 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.png new file mode 100644 index 0000000000..7d51969a8a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.png.jpeg new file mode 100644 index 0000000000..529ac57071 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/source_attachment_config.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page.png new file mode 100644 index 0000000000..988c62fae7 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page.png.jpeg new file mode 100644 index 0000000000..e52776334f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_1.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_1.png new file mode 100644 index 0000000000..834ef26e35 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_1.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_1.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_1.png.jpeg new file mode 100644 index 0000000000..7247d60368 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_1.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_2.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_2.png new file mode 100644 index 0000000000..c71b600146 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_2.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_2.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_2.png.jpeg new file mode 100644 index 0000000000..0ecef780b1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_2.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_3.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_3.png new file mode 100644 index 0000000000..2560148e19 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_3.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_3.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_3.png.jpeg new file mode 100644 index 0000000000..d05d2288af Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_page_3.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project.png new file mode 100644 index 0000000000..f0d1999ff2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project.png.jpeg new file mode 100644 index 0000000000..fab518699e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_1.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_1.png new file mode 100644 index 0000000000..eb6bd340d2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_1.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_1.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_1.png.jpeg new file mode 100644 index 0000000000..404c40daf8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_1.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_2.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_2.png new file mode 100644 index 0000000000..81119985d8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_2.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_2.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_2.png.jpeg new file mode 100644 index 0000000000..0159ecc040 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_2.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.jpg new file mode 100644 index 0000000000..a682bb2d74 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.jpg.jpeg new file mode 100644 index 0000000000..23b9f5c584 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.png new file mode 100644 index 0000000000..5aaf5ed3fd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.png.jpeg new file mode 100644 index 0000000000..6a5e9220cb Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_3.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.jpg new file mode 100644 index 0000000000..7c7ed0a157 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.jpg.jpeg new file mode 100644 index 0000000000..c0aa95b56b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.png new file mode 100644 index 0000000000..217d10ed25 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.png.jpeg new file mode 100644 index 0000000000..9c90a17f3a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_4.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.jpg new file mode 100644 index 0000000000..4b7e5a9b67 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.jpg.jpeg new file mode 100644 index 0000000000..ea68ebff08 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.png new file mode 100644 index 0000000000..3586520e47 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.png.jpeg new file mode 100644 index 0000000000..3fa840138a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/store_project_5.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.jpg new file mode 100644 index 0000000000..6e7ec70688 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.jpg.jpeg new file mode 100644 index 0000000000..b6019f5311 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.png new file mode 100644 index 0000000000..d58afb88d1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.png.jpeg new file mode 100644 index 0000000000..7ade1f20e5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.jpg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.jpg new file mode 100644 index 0000000000..7fb4ed05c0 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.jpg.jpeg new file mode 100644 index 0000000000..2468cc9b6e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.png b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.png new file mode 100644 index 0000000000..fe79cf56c7 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.png.jpeg new file mode 100644 index 0000000000..d953ca2af1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.data/tuscany_samples_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.html b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.html new file mode 100644 index 0000000000..73a02ac7b2 --- /dev/null +++ b/site/trunk/site-publish/getting-started-with-tuscany-using-tuscany-eclipse-plugin.html @@ -0,0 +1,745 @@ + + + + + + + + + + + + + + + Apache Tuscany : Getting Started with Tuscany (using Tuscany Eclipse Plugin) + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Getting Started with Tuscany (using Tuscany Eclipse Plugin) + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Ready, Set, Go - Getting started with Tuscany

+ +

"Get Started with Store Demo in Eclipse video"
+This guide shows you how to get started with Tuscany in Eclipse by installing the Eclipse plugins and creating a web store shopping cart with SCA technology.

+ +

Install the Latest Tuscany Eclipse Plugin

+ +

"Installing the Apache Tuscany Eclipse Plugins video"

+ +

A quick Step by Step walk through of downloading, installing, and verifying the Tuscany Eclipse Plugins.

+ +

This section shows you how to install the lastest Tuscany Eclipse plugin. The plugin gives you the ability to run an SCA composite file from the Package Explorer. You will see a "Run As Tuscany" menu item when you bring up the context menu on composite files.

+ +

Start Eclipse and go to Help -> Software Updates -> Find and Install. Select "Search for new features to install" and then click next

+ +

Create a new Remote Site. On the next dialog, click on "New Remote Site..." to create a new site entry. Give it a name such as
+"Tuscany" and add the site URL from the latest Tuscany release (e.g http://www.apache.org/dist/tuscany/java/sca/1.5.1/tuscany-sca-1.5.1-updatesite/.

+ +

Select the "Remote Site" you just created, and click "Finish"

+ +

Select the "Apache Tuscany SCA Tools" and click "Next", and then, on the next dialog, click "Finish". Accept the "Plugin License" and next click on "Install All".

+ +

When asked to "restart eclipse", click the "yes" button.

+ +

Create your 1st Composite Service Application

+ +

The following shows the composition diagram for the composite service application you are about
+to create.

+ +

+ +

The composite service application you will create is a composition of four services. The composed
+service provided is that of an on-line store.
+There is a Catalog service which you can ask for catalog items, and depending on its currency
+code property configuration it will provide the item prices in USD or EUR. The Catalog service is not
+doing the currency conversion itself it references a CurrencyConverter service to do that task. Then
+there is the ShoppingCart service into which items chosen from the catalog can be added, it is
+implemented as a REST service. The Catalog is bound using the JSONRPC binding, and the
+ShoppingCart service is bound using the ATOM binding. Finally there is the Store user facing
+service that provides the browser based user interface of the store. The Store service makes use of
+the Catalog and ShoppingCart service using the JSONRPC, and ATOM binding respectively.

+ +

Create a Java Project

+ +

In this step you create a Java Project in Eclipse to hold the composite service application.
+Click on the New Java Project button   in the toolbar to launch the project creation dialog.
+Next you enter "store" as the Project name, and for Project Layout select Create separate
+folders for sources and class files.
+

+

+Hit the Next button, and on the following page go to the Libraries tab. Use the Add Library...
+button on the right to add the Tuscany Library library to the project.

+


+Hit the Finish button to complete the New Java Project dialog to create the "store" java project. 

+

+ +

Construct Services

+ +

First you create two package folders into which later in this step you place service implementations.
+Select the "store" project and click on the New Java Package button in the toolbar to launch
+the package creation dialog.

+ +

Next you enter "services" as the package Name, and press the Finish button to complete the
+dialog.
+

+Repeat the previous step to create another package named "ufservices". The store project now
+should look as follows.

+

+In the following you will place in the "services" package the regular services, and in the "ufservices"
+package the user facing services of the composite service application you create.

+ +

Catalog

+ +

In this step you create the Catalog service interface and implementation.
+Select the "services" package. Next you click on the dropdown arrow next to the New Java Class
+button    and select the New Java Interface    option from the dropdown list. In the dialog
+enter "Catalog" as the Name of the interface and select the Finish button to complete the dialog.
+The Java editor will open on the new created Java interface. Replace the content of the editor by
+copy-paste of the following Java interface code snippet.

+
+
+package services;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Catalog {
+	Item[] get();
+}
+
+
+

Select the "services" package again. Select the New Java Class button . In the dialog enter
+"CatalogImpl" as the Name of the class, add "Catalog" as the interface this class implements, and
+then select Finish to complete the dialog.

+ +

The Java editor will open on the new created Java class. Replace the content of the editor by
+copy-paste of the following Java class code snippet.

+
+
+package services;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+
+public class CatalogImpl implements Catalog {
+	@Property
+	public String currencyCode = "USD";
+	@Reference
+	public CurrencyConverter currencyConverter;
+
+	private List<Item> catalog = new ArrayList<Item>();
+
+	@Init
+	public void init() {
+		String currencySymbol = currencyConverter
+				.getCurrencySymbol(currencyCode);
+		catalog.add(new Item("Apple", currencySymbol
+				+ currencyConverter.getConversion("USD", currencyCode, 2.99)));
+		catalog.add(new Item("Orange", currencySymbol
+				+ currencyConverter.getConversion("USD", currencyCode, 3.55)));
+		catalog.add(new Item("Pear", currencySymbol
+				+ currencyConverter.getConversion("USD", currencyCode, 1.55)));
+	}
+
+	public Item[] get() {
+		Item[] catalogArray = new Item[catalog.size()];
+		catalog.toArray(catalogArray);
+		return catalogArray;
+	}
+}
+
+
+

After completing these steps the content of the "store" project will look as follows.
+

+Note: CatalogImpl is red x'ed because it makes use of the CurrencyConverter interface that we
+have not implemented yet.

+ +

CurrencyConverter

+ +

In this step you create the CurrencyConverter service interface and implementation.
+You follow the same steps that you learned previously to create the interface and implementation.
+First create a Java interface in the "services" package named "CurrencyConverter" and copy-paste
+the following Java interface code snippet into it.
+  

+
+
+package services;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CurrencyConverter {
+    public double getConversion(String fromCurrenycCode, String toCurrencyCode, double amount);
+
+    public String getCurrencySymbol(String currencyCode);
+}
+
+
+

Next create a Java class in the "services" package named "CurrencyConverterImpl" and copy-paste
+the following Java class code snippet into it.

+
+
+package services;
+
+public class CurrencyConverterImpl implements CurrencyConverter {
+    public double getConversion(String fromCurrencyCode,String toCurrencyCode,double amount) {
+        if (toCurrencyCode.equals("USD"))
+            return amount;
+        else if (toCurrencyCode.equals("EUR"))
+            return ((double)Math.round(amount * 0.7256 * 100)) /100;
+        return 0;
+    }
+
+    public String getCurrencySymbol(String currencyCode) {
+        if (currencyCode.equals("USD"))
+            return "$";
+        else if (currencyCode.equals("EUR"))
+            return "E"; //"€";
+        return "?";
+    }
+}
+
+
+
+

After completing these steps the content of the "store" project will look as follows.

+ +

+ +

ShoppingCart

+ +

In this step you create the Item model object, the Cart and Total service interfaces and the ShoppingCart service implementation.
+You follow the same steps that you learned previously to create the interface and implementation.

+ +

Create a Java class in the "services" package named "Item" and copy-paste the
+following code snippet into it.

+ +
+
+package services;
+
+public class Item {
+	private String name;
+	private String price;
+
+	public Item() {
+	}
+
+	public Item(String name, String price) {
+		this.name = name;
+		this.price = price;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getPrice() {
+		return price;
+	}
+
+	public void setPrice(String price) {
+		this.price = price;
+	}
+}
+
+
+ +

Create a Java interface in the "services" package named "Cart" and copy-paste the
+following code snippet into it.

+
+
+package services;
+
+import org.apache.tuscany.sca.data.collection.Collection;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Cart extends Collection<String, Item> {
+
+}
+
+
+ +

Create a Java interface in the "services" package named "Total" and copy-paste the
+following code snippet into it.

+ +
+
+package services;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Total {
+	String getTotal();
+}
+
+
+ +

Create a Java class in the "services" package named "ShoppingCartImpl" and copy-paste the
+following Java class code snippet into it.

+
+
+package services;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.tuscany.sca.data.collection.Entry;
+import org.apache.tuscany.sca.data.collection.NotFoundException;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+
+@Scope("COMPOSITE")
+public class ShoppingCartImpl implements Cart, Total {
+
+	private Map<String, Item> cart;
+
+	@Init
+	public void init() {
+		cart = new HashMap<String, Item>();
+	}
+
+	public Entry<String, Item>[] getAll() {
+		Entry<String, Item>[] entries = new Entry[cart.size()];
+		int i = 0;
+		for (Map.Entry<String, Item> e : cart.entrySet()) {
+			entries[i++] = new Entry<String, Item>(e.getKey(), e.getValue());
+		}
+		return entries;
+	}
+
+	public Item get(String key) throws NotFoundException {
+		Item item = cart.get(key);
+		if (item == null) {
+			throw new NotFoundException(key);
+		} else {
+			return item;
+		}
+	}
+
+	public String post(String key, Item item) {
+		if (key == null) {
+			key = "cart-" + UUID.randomUUID().toString();
+		}
+		cart.put(key, item);
+		return key;
+	}
+
+	public void put(String key, Item item) throws NotFoundException {
+		if (!cart.containsKey(key)) {
+			throw new NotFoundException(key);
+		}
+		cart.put(key, item);
+	}
+
+	public void delete(String key) throws NotFoundException {
+		if (key == null || key.equals("")) {
+			cart.clear();
+		} else {
+			Item item = cart.remove(key);
+			if (item == null)
+				throw new NotFoundException(key);
+		}
+	}
+
+	public Entry<String, Item>[] query(String queryString) {
+		List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
+		if (queryString.startsWith("name=")) {
+			String name = queryString.substring(5);
+			for (Map.Entry<String, Item> e : cart.entrySet()) {
+				Item item = e.getValue();
+				if (item.getName().equals(name)) {
+					entries.add(new Entry<String, Item>(e.getKey(), e
+							.getValue()));
+				}
+			}
+		}
+		return entries.toArray(new Entry[entries.size()]);
+	}
+
+	public String getTotal() {
+		double total = 0;
+		String currencySymbol = "";
+		if (!cart.isEmpty()) {
+			Item item = cart.values().iterator().next();
+			currencySymbol = item.getPrice().substring(0, 1);
+		}
+		for (Item item : cart.values()) {
+			total += Double.valueOf(item.getPrice().substring(1));
+		}
+		return currencySymbol + String.valueOf(total);
+	}
+}
+
+
+

Note: Since the Tuscany conversational support is not ready yet the cart is realized through a hack.
+The cart field is defined as static.

+ +

After completing these steps the content of the "store" project will look as follows.

+ +


+ +

Store

+ +

In this step you create the user facing Store service that will run in a Web browser and provide the
+user interface to the other services you created.

+ +

Select the "ufservices" package. Right click to get the context menu, select New, and then File. In
+the New File dialog enter "store.html" for the File name, and then select Finish to complete the
+dialog.

+ +

The Text editor will open on the new created html file. Replace the content of the editor by copy-paste
+of the following html snippet.

+
+
+<html>
+<head>
+<title>Store</title>
+
+<script type="text/javascript" src="store.js"></script>
+
+<script language="JavaScript">
+
+	//@Reference
+	var catalog = new tuscany.sca.Reference("catalog");
+	
+	//@Reference
+	var shoppingCart = new tuscany.sca.Reference("shoppingCart");
+
+	//@Reference
+	var shoppingTotal = new tuscany.sca.Reference("shoppingTotal");
+	
+	var catalogItems;
+
+	function catalog_getResponse(items) {
+		var catalog = "";
+		for (var i=0; i<items.length; i++) {
+			var item = items[i].name + ' - ' + items[i].price;
+			catalog += '<input name="items" type="checkbox" value="' + 
+						item + '">' + item + ' <br>';
+		}
+		document.getElementById('catalog').innerHTML=catalog;
+		catalogItems = items;
+	}
+	
+	function shoppingCart_getResponse(feed) {
+		if (feed != null) {
+			var entries = feed.getElementsByTagName("entry");              
+			var list = "";
+			for (var i=0; i<entries.length; i++) {
+				var content = entries[i].getElementsByTagName("content")[0];
+				var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
+				var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
+				list += name + ' - ' + price + ' <br>';
+			}
+			document.getElementById("shoppingCart").innerHTML = list;
+
+			if (entries.length != 0) {			
+				shoppingTotal.getTotal(shoppingTotal_getTotalResponse);
+			}
+		}
+	}
+	
+	function shoppingTotal_getTotalResponse(total) {
+		document.getElementById('total').innerHTML = total;
+	}
+	
+	function shoppingCart_postResponse(entry) {
+		shoppingCart.get("", shoppingCart_getResponse);
+	}				
+
+	function addToCart() {
+		var items  = document.catalogForm.items;
+		var j = 0;
+		for (var i=0; i<items.length; i++)
+			if (items[i].checked) {
+				var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title>item</title><content type="text/xml">' +
+                	'<Item xmlns="http://services/">' +
+                	'<name xmlns="">' + catalogItems[i].name + '</name>' + '<price xmlns="">' + catalogItems[i].price + '</price>' +
+                 	'</Item>' + '</content></entry>';
+				shoppingCart.post(entry, shoppingCart_postResponse);
+				items[i].checked = false;
+			}
+	}
+	function checkoutCart() {
+		document.getElementById('store').innerHTML='<h2>' +
+				'Thanks for Shopping With Us!</h2>'+
+				'<h2>Your Order</h2>'+
+				'<form name="orderForm">'+
+					document.getElementById('shoppingCart').innerHTML+
+					'<br>'+
+					document.getElementById('total').innerHTML+
+					'<br>'+
+					'<br>'+
+					'<input type="submit" value="Continue Shopping">'+ 
+				'</form>';
+		shoppingCart.del("", null);
+	}
+	function deleteCart() {
+		shoppingCart.del("", null);
+		document.getElementById('shoppingCart').innerHTML = "";
+		document.getElementById('total').innerHTML = "";	
+	}	
+
+	function init() {
+		catalog.get(catalog_getResponse);
+		shoppingCart.get("", shoppingCart_getResponse);
+	}
+	
+</script>
+
+</head>
+
+<body onload="init()">
+<h1>Store</h1>
+  <div id="store">
+   	<h2>Catalog</h2>
+   	<form name="catalogForm">
+		<div id="catalog" ></div>
+		<br>
+		<input type="button" onClick="addToCart()"  value="Add to Cart">
+   	</form>
+ 
+ 	<br>
+  
+   	<h2>Your Shopping Cart</h2>
+   	<form name="shoppingCartForm">
+		<div id="shoppingCart"></div>
+		<br>
+		<div id="total"></div>
+		<br>		
+		<input type="button" onClick="checkoutCart()" value="Checkout"> 
+		<input type="button" onClick="deleteCart()" value="Empty">     
+	   	<a href="../ShoppingCart/Cart/">(feed)</a>
+	</form>    
+  </div>
+</body>
+</html>
+
+
+

After completing these steps the content of the "store" project will look as follows.

+ +

 

+ +

Compose Services

+ +

Now that you have all the required service implementations you compose them together to provide
+the store composite service. The composition is stored in a .composite file.

+ +

Select the "src" folder of the "store" project. Right click to get the context menu, select New, and
+then File. In the New File dialog enter "store.composite" for the File name, and then select Finish
+to complete the dialog.

+ +

The Text editor will open on the new created composite file. Replace the content of the editor by
+copy-paste of the following composite snippet.

+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+	xmlns:s="http://store" 
+	targetNamespace="http://store" 
+	name="store">
+	
+	<component name="store">
+		<t:implementation.widget location="ufservices/store.html" />
+		<service name="Widget">
+			<t:binding.http uri="http://localhost:8080/store" />
+		</service>
+		<reference name="catalog" target="Catalog">
+			<t:binding.jsonrpc />
+		</reference>
+		<reference name="shoppingCart" target="ShoppingCart/Cart">
+			<t:binding.atom />
+		</reference>
+		<reference name="shoppingTotal" target="ShoppingCart/Total">
+			<t:binding.jsonrpc />
+		</reference>
+	</component>
+
+	<component name="Catalog">
+		<implementation.java class="services.CatalogImpl" />
+		<property name="currencyCode">USD</property>
+		<service name="Catalog">
+			<t:binding.jsonrpc uri="http://localhost:8080/Catalog"/>
+		</service>
+		<reference name="currencyConverter" target="CurrencyConverter" />
+	</component>
+
+	<component name="ShoppingCart">
+		<implementation.java class="services.ShoppingCartImpl" />
+		<service name="Cart">
+			<t:binding.atom uri="http://localhost:8080/ShoppingCart/Cart" />
+		</service>
+		<service name="Total">
+			<t:binding.jsonrpc uri="http://localhost:8080/Total"/>
+		</service>
+	</component>
+
+	<component name="CurrencyConverter">
+		<implementation.java class="services.CurrencyConverterImpl" />
+	</component>
+</composite>
+
+
+

After completing these steps the content of the "store" project will look as follows.

+ +


+ +

Congratulations you completed your 1st composite service applications, now its time to take it into
+action.

+ +

Use Services

+ +

In this step you launch and use the store composite service application you created.

+ +

First select the "store.composite" file. Right click to get the context menu, select Run As, and then Tuscany.
+The Tuscany runtime will start up adding the store composition to its domain.

+ +

The Eclipse console will show the following messages.

+ +

 

+ +

 Next Launch your Web browser and enter the following address:

+ +

http://localhost:8080/store/store.html 

+ +

 You get to the Store user facing service of the composite service application.

+ +

+ +

You can select items from the Catalog and add them to your Shopping Cart.

+ +

+ +

Since the ShoppingCart service is bound using the ATOM binding, you can also look at the
+shopping card content in ATOM feed form by clicking on the feed icon . You get the browsers default rendering for ATOM feeds.

+ +

 

+ +

 Use the browser back button to get back to the Store page.

+ +

+ +

And then you can Checkout to complete your order.

+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project.png b/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project.png new file mode 100644 index 0000000000..48bf481e1d Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project.png.jpeg new file mode 100644 index 0000000000..4a05eb3baa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project_lib.png b/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project_lib.png new file mode 100644 index 0000000000..656465d618 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project_lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project_lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project_lib.png.jpeg new file mode 100644 index 0000000000..268ad62251 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/New_Calc_Java_Project_lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/New_User_Lib.png b/site/trunk/site-publish/getting-started-with-tuscany.data/New_User_Lib.png new file mode 100644 index 0000000000..80b2822afa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/New_User_Lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/New_User_Lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/New_User_Lib.png.jpeg new file mode 100644 index 0000000000..5273a016d2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/New_User_Lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/Tuscany_User_Lib.png b/site/trunk/site-publish/getting-started-with-tuscany.data/Tuscany_User_Lib.png new file mode 100644 index 0000000000..414e376e0f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/Tuscany_User_Lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/Tuscany_User_Lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/Tuscany_User_Lib.png.jpeg new file mode 100644 index 0000000000..3af6676b6f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/Tuscany_User_Lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feed.png b/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feed.png new file mode 100644 index 0000000000..c1da921ee5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feed.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feed.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feed.png.jpeg new file mode 100644 index 0000000000..779e369a2e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feed.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feeds_page.png b/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feeds_page.png new file mode 100644 index 0000000000..6e7c4bb227 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feeds_page.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feeds_page.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feeds_page.png.jpeg new file mode 100644 index 0000000000..82fe4d8111 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/atom_feeds_page.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_eclipse_console.png b/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_eclipse_console.png new file mode 100644 index 0000000000..f7c0fd012b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_eclipse_console.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_eclipse_console.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_eclipse_console.png.jpeg new file mode 100644 index 0000000000..dd108d061a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_eclipse_console.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_proj_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_proj_dlg.png new file mode 100644 index 0000000000..84f439c41c Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_proj_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_proj_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_proj_dlg.png.jpeg new file mode 100644 index 0000000000..a0828163fd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/calculator_proj_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/class_btn.png b/site/trunk/site-publish/getting-started-with-tuscany.data/class_btn.png new file mode 100644 index 0000000000..60bce5ee98 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/class_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/class_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/class_btn.png.jpeg new file mode 100644 index 0000000000..cab8b0264b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/class_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/eclipse_console.png b/site/trunk/site-publish/getting-started-with-tuscany.data/eclipse_console.png new file mode 100644 index 0000000000..9ef69db7d0 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/eclipse_console.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/eclipse_console.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/eclipse_console.png.jpeg new file mode 100644 index 0000000000..99dd341348 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/eclipse_console.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/first_composite.png b/site/trunk/site-publish/getting-started-with-tuscany.data/first_composite.png new file mode 100644 index 0000000000..00d3edd3d8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/first_composite.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/first_composite.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/first_composite.png.jpeg new file mode 100644 index 0000000000..58e4733cf4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/first_composite.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.jpg b/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.jpg new file mode 100644 index 0000000000..655964b482 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.jpg.jpeg new file mode 100644 index 0000000000..6d63cd1c5d Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.png b/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.png new file mode 100644 index 0000000000..85a24d4a27 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.png.jpeg new file mode 100644 index 0000000000..71c6705477 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/folder_structure.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/interface_btn.png b/site/trunk/site-publish/getting-started-with-tuscany.data/interface_btn.png new file mode 100644 index 0000000000..5c342b8194 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/interface_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/interface_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/interface_btn.png.jpeg new file mode 100644 index 0000000000..ee25c45cba Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/interface_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_btn.png b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_btn.png new file mode 100644 index 0000000000..902fe75507 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_btn.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_btn.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_btn.png.jpeg new file mode 100644 index 0000000000..9ed36e4e23 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_btn.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_dlg.png new file mode 100644 index 0000000000..95b51cf26a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_dlg.png.jpeg new file mode 100644 index 0000000000..be327e7e1f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_folder.png b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_folder.png new file mode 100644 index 0000000000..07cd5a0502 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_folder.png.jpeg new file mode 100644 index 0000000000..6b4cd2b9b4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_pkg_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project.png b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project.png new file mode 100644 index 0000000000..50297b3afa Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project.png.jpeg new file mode 100644 index 0000000000..8fdf13e716 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_dlg.png b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_dlg.png new file mode 100644 index 0000000000..5f051094b9 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_dlg.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_dlg.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_dlg.png.jpeg new file mode 100644 index 0000000000..22d226ce07 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_dlg.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_folder.png b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_folder.png new file mode 100644 index 0000000000..8329b143de Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_folder.png.jpeg new file mode 100644 index 0000000000..90231cf672 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_lib.png b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_lib.png new file mode 100644 index 0000000000..c0b12eea7a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_lib.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_lib.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_lib.png.jpeg new file mode 100644 index 0000000000..4537f7d914 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/new_java_project_lib.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/project_layout.png b/site/trunk/site-publish/getting-started-with-tuscany.data/project_layout.png new file mode 100644 index 0000000000..9de01ff4d5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/project_layout.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/project_layout.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/project_layout.png.jpeg new file mode 100644 index 0000000000..745f2dbfbd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/project_layout.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.jpg b/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.jpg new file mode 100644 index 0000000000..2533d27ca9 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.jpg.jpeg new file mode 100644 index 0000000000..2ed010eff4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.png b/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.png new file mode 100644 index 0000000000..38077052b3 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.png.jpeg new file mode 100644 index 0000000000..32e3de3909 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/release_zips.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.jpg b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.jpg new file mode 100644 index 0000000000..a0f58d75b0 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.jpg.jpeg new file mode 100644 index 0000000000..5339a41827 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.png b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.png new file mode 100644 index 0000000000..7dba24bd53 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.png.jpeg new file mode 100644 index 0000000000..00fa4a3ca4 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.jpg b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.jpg new file mode 100644 index 0000000000..d546808aaf Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.jpg.jpeg new file mode 100644 index 0000000000..5d44c2a867 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.png b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.png new file mode 100644 index 0000000000..7d51969a8a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.png.jpeg new file mode 100644 index 0000000000..529ac57071 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/source_attachment_config.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_page.png b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page.png new file mode 100644 index 0000000000..988c62fae7 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_page.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page.png.jpeg new file mode 100644 index 0000000000..e52776334f Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_1.png b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_1.png new file mode 100644 index 0000000000..834ef26e35 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_1.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_1.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_1.png.jpeg new file mode 100644 index 0000000000..7247d60368 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_1.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_2.png b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_2.png new file mode 100644 index 0000000000..c71b600146 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_2.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_2.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_2.png.jpeg new file mode 100644 index 0000000000..0ecef780b1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_2.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_3.png b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_3.png new file mode 100644 index 0000000000..2560148e19 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_3.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_3.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_3.png.jpeg new file mode 100644 index 0000000000..d05d2288af Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_page_3.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project.png b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project.png new file mode 100644 index 0000000000..f0d1999ff2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project.png.jpeg new file mode 100644 index 0000000000..fab518699e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_1.png b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_1.png new file mode 100644 index 0000000000..eb6bd340d2 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_1.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_1.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_1.png.jpeg new file mode 100644 index 0000000000..404c40daf8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_1.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_2.png b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_2.png new file mode 100644 index 0000000000..81119985d8 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_2.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_2.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_2.png.jpeg new file mode 100644 index 0000000000..0159ecc040 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_2.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.jpg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.jpg new file mode 100644 index 0000000000..a682bb2d74 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.jpg.jpeg new file mode 100644 index 0000000000..23b9f5c584 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.png b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.png new file mode 100644 index 0000000000..5aaf5ed3fd Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.png.jpeg new file mode 100644 index 0000000000..6a5e9220cb Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_3.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.jpg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.jpg new file mode 100644 index 0000000000..7c7ed0a157 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.jpg.jpeg new file mode 100644 index 0000000000..c0aa95b56b Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.png b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.png new file mode 100644 index 0000000000..217d10ed25 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.png.jpeg new file mode 100644 index 0000000000..9c90a17f3a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_4.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.jpg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.jpg new file mode 100644 index 0000000000..4b7e5a9b67 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.jpg.jpeg new file mode 100644 index 0000000000..ea68ebff08 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.png b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.png new file mode 100644 index 0000000000..3586520e47 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.png.jpeg new file mode 100644 index 0000000000..3fa840138a Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/store_project_5.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.jpg b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.jpg new file mode 100644 index 0000000000..72d962a512 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.jpg.jpeg new file mode 100644 index 0000000000..b6019f5311 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.png b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.png new file mode 100644 index 0000000000..d58afb88d1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.png.jpeg new file mode 100644 index 0000000000..7ade1f20e5 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.jpg b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.jpg new file mode 100644 index 0000000000..7fb4ed05c0 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.jpg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.jpg.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.jpg.jpeg new file mode 100644 index 0000000000..2468cc9b6e Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.png b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.png new file mode 100644 index 0000000000..fe79cf56c7 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.png differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.png.jpeg b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.png.jpeg new file mode 100644 index 0000000000..d953ca2af1 Binary files /dev/null and b/site/trunk/site-publish/getting-started-with-tuscany.data/tuscany_samples_folder.png.jpeg differ diff --git a/site/trunk/site-publish/getting-started-with-tuscany.html b/site/trunk/site-publish/getting-started-with-tuscany.html new file mode 100644 index 0000000000..dcb2a4901d --- /dev/null +++ b/site/trunk/site-publish/getting-started-with-tuscany.html @@ -0,0 +1,814 @@ + + + + + + + + + + + + + + + Apache Tuscany : Getting Started with Tuscany + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Getting Started with Tuscany + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Ready, Set, Go - Getting started with Tuscany

+ +

This article will show you how to download a Tuscany distribution, add the distribution as a user library in Eclipse, create the Store sample as a Java project, and then run the Store and use it from a web browser.

+ +
Although this guide show some images based on the Java SCA 1.3.2 release, you should be able to use latest Java SCA release while going to the necessary steps for this guide.
+ +

"Get Started with Store Demo in Eclipse video"

+ +

Install the Tuscany Distribution 

+ +

The first thing you do is to create a file system folder into which you will download the TUSCANY distribution.

+ +

+ +

Next you download the latest release distribution. Launch your browser and enter the following URL.
+Latest Release - http://cwiki.apache.org/TUSCANY/sca-java-releases.html
+Download both the bin zip as well as the src zip to the folder that you created on your disk. Once you completed the download you should see the following on your disk.

+ +



+Next you unzip the bin zip in place, you should see the following folder file structure on your disk after unzip is complete.
+

+ +

Setup Eclipse for Tuscany

+ +

Start Eclipse and create a User Library to contain the TUSCANY runtime jar's as well as their
+depending jar's.

+ +

From the menu bar select Window and then Preferences... . The Preferences dialog will appear,
+in its left navigation tree select Java, followed by Build Path, and followed by User Libraries.
+Select the New... pushbutton on the right of the New Libraries dialog to create a new user library.

+ +

+ +

The user library created is empty, select the Add JARs... pushbutton on the right to add all the
+jar's from your Tuscany installation lib folder. When completed all the jar's will appear under the
+TUSCANY user library.

+ +

+ +

Since some of you maybe interested in debugging also the Tuscany runtime code we will attach
+the Tuscany source to the Tuscany runtime jar in the following step. In the User Libraies dialog
+scroll down until you see the Tuscany runtime jar and select its Source attachment.

+ +

+ +

Select the Edit... pushbutton on the right and in the Edit dialog use the External File... pushbutton
+to the select the Tuscany src zip that we downloaded earlier.

+ +

+ +

Select OK to complete this and the Preferences dialog, and you are done with the Tuscany setup
+for Eclipse.

+ +

Create your 1st Composite Service Application

+ +

The following shows the composition diagram for the composite service application you are about
+to create.

+ +

+ +

The composite service application you will create is a composition of four services. The composed
+service provided is that of an on-line store.
+There is a Catalog service which you can ask for catalog items, and depending on its currency
+code property configuration it will provide the item prices in USD or EUR. The Catalog service is not
+doing the currency conversion itself it references a CurrencyConverter service to do that task. Then
+there is the ShoppingCart service into which items chosen from the catalog can be added, it is
+implemented as a REST service. The Catalog is bound using the JSONRPC binding, and the
+ShoppingCart service is bound using the ATOM binding. Finally there is the Store user facing
+service that provides the browser based user interface of the store. The Store service makes use of
+the Catalog and ShoppingCart service using the JSONRPC, and ATOM binding respectively.

+ +

Create a Java Project

+ +

In this step you create a Java Project in Eclipse to hold the composite service application.
+Click on the New Java Project button   in the toolbar to launch the project creation dialog.
+Next you enter "store" as the Project name, and for Project Layout select Create separate
+folders for sources and class files.
+

+

+Hit the Next button, and on the following page go to the Libraries tab. Use the Add Library...
+button on the right to add the TUSCANY user library to the project.

+


+Hit the Finish button to complete the New Java Project dialog to create the "store" java project. 

+

+ +

Construct Services

+ +

First you create two package folders into which later in this step you place service implementations.
+Select the "store" project and click on the New Java Package button in the toolbar to launch
+the package creation dialog.

+ +

Next you enter "services" as the package Name, and press the Finish button to complete the
+dialog.
+

+Repeat the previous step to create another package named "ufservices". The store project now
+should look as follows.

+

+In the following you will place in the "services" package the regular services, and in the "ufservices"
+package the user facing services of the composite service application you create.

+ +

Catalog

+ +

In this step you create the Catalog service interface and implementation.
+Select the "services" package. Next you click on the dropdown arrow next to the New Java Class
+button    and select the New Java Interface    option from the dropdown list. In the dialog
+enter "Catalog" as the Name of the interface and select the Finish button to complete the dialog.
+The Java editor will open on the new created Java interface. Replace the content of the editor by
+copy-paste of the following Java interface code snippet.

+
+
+package services;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Catalog {
+	Item[] get();
+}
+
+
+

Select the "services" package again. Select the New Java Class button . In the dialog enter
+"CatalogImpl" as the Name of the class, add "Catalog" as the interface this class implements, and
+then select Finish to complete the dialog.

+ +

The Java editor will open on the new created Java class. Replace the content of the editor by
+copy-paste of the following Java class code snippet.

+
+
+package services;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+
+public class CatalogImpl implements Catalog {
+	@Property
+	public String currencyCode = "USD";
+	@Reference
+	public CurrencyConverter currencyConverter;
+
+	private List<Item> catalog = new ArrayList<Item>();
+
+	@Init
+	public void init() {
+		String currencySymbol = currencyConverter
+				.getCurrencySymbol(currencyCode);
+		catalog.add(new Item("Apple", currencySymbol
+				+ currencyConverter.getConversion("USD", currencyCode, 2.99)));
+		catalog.add(new Item("Orange", currencySymbol
+				+ currencyConverter.getConversion("USD", currencyCode, 3.55)));
+		catalog.add(new Item("Pear", currencySymbol
+				+ currencyConverter.getConversion("USD", currencyCode, 1.55)));
+	}
+
+	public Item[] get() {
+		Item[] catalogArray = new Item[catalog.size()];
+		catalog.toArray(catalogArray);
+		return catalogArray;
+	}
+}
+
+
+

After completing these steps the content of the "store" project will look as follows.
+

+Note: CatalogImpl is red x'ed because it makes use of the CurrencyConverter interface that we
+have not implemented yet.

+ +

CurrencyConverter

+ +

In this step you create the CurrencyConverter service interface and implementation.
+You follow the same steps that you learned previously to create the interface and implementation.
+First create a Java interface in the "services" package named "CurrencyConverter" and copy-paste
+the following Java interface code snippet into it.
+  

+
+
+package services;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CurrencyConverter {
+    public double getConversion(String fromCurrenycCode, String toCurrencyCode, double amount);
+
+    public String getCurrencySymbol(String currencyCode);
+}
+
+
+
+

Next create a Java class in the "services" package named "CurrencyConverterImpl" and copy-paste
+the following Java class code snippet into it.

+
+
+package services;
+
+public class CurrencyConverterImpl implements CurrencyConverter {
+    public double getConversion(String fromCurrencyCode, String toCurrencyCode, double amount) {
+        if (toCurrencyCode.equals("USD"))
+            return amount;
+        else if (toCurrencyCode.equals("EUR"))
+            return ((double)Math.round(amount * 0.7256 * 100)) /100;
+        return 0;
+    }
+
+    public String getCurrencySymbol(String currencyCode) {
+        if (currencyCode.equals("USD"))
+            return "$";
+        else if (currencyCode.equals("EUR"))
+            return "E"; //"€";
+        return "?";
+    }
+}
+
+
+

After completing these steps the content of the "store" project will look as follows.

+ +

+ +

ShoppingCart

+ +

In this step you create the Item model object, the Cart and Total service interfaces and the ShoppingCart service implementation.
+You follow the same steps that you learned previously to create the interface and implementation.

+ +

Create a Java class in the "services" package named "Item" and copy-paste the
+following code snippet into it.

+ +
+
+package services;
+
+public class Item {
+	private String name;
+	private String price;
+
+	public Item() {
+	}
+
+	public Item(String name, String price) {
+		this.name = name;
+		this.price = price;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getPrice() {
+		return price;
+	}
+
+	public void setPrice(String price) {
+		this.price = price;
+	}
+}
+
+
+ +

Create a Java interface in the "services" package named "Cart" and copy-paste the
+following code snippet into it.

+
+
+package services;
+
+import org.apache.tuscany.sca.data.collection.Collection;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Cart extends Collection<String, Item> {
+
+}
+
+
+ +

Create a Java interface in the "services" package named "Total" and copy-paste the
+following code snippet into it.

+ +
+
+package services;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Total {
+	String getTotal();
+}
+
+
+ +

Create a Java class in the "services" package named "ShoppingCartImpl" and copy-paste the
+following Java class code snippet into it.

+
+
+package services;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.tuscany.sca.data.collection.Entry;
+import org.apache.tuscany.sca.data.collection.NotFoundException;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+
+@Scope("COMPOSITE")
+public class ShoppingCartImpl implements Cart, Total {
+
+	private Map<String, Item> cart;
+
+	@Init
+	public void init() {
+		cart = new HashMap<String, Item>();
+	}
+
+	public Entry<String, Item>[] getAll() {
+		Entry<String, Item>[] entries = new Entry[cart.size()];
+		int i = 0;
+		for (Map.Entry<String, Item> e : cart.entrySet()) {
+			entries[i++] = new Entry<String, Item>(e.getKey(), e.getValue());
+		}
+		return entries;
+	}
+
+	public Item get(String key) throws NotFoundException {
+		Item item = cart.get(key);
+		if (item == null) {
+			throw new NotFoundException(key);
+		} else {
+			return item;
+		}
+	}
+
+	public String post(String key, Item item) {
+		if (key == null) {
+			key = "cart-" + UUID.randomUUID().toString();
+		}
+		cart.put(key, item);
+		return key;
+	}
+
+	public void put(String key, Item item) throws NotFoundException {
+		if (!cart.containsKey(key)) {
+			throw new NotFoundException(key);
+		}
+		cart.put(key, item);
+	}
+
+	public void delete(String key) throws NotFoundException {
+		if (key == null || key.equals("")) {
+			cart.clear();
+		} else {
+			Item item = cart.remove(key);
+			if (item == null)
+				throw new NotFoundException(key);
+		}
+	}
+
+	public Entry<String, Item>[] query(String queryString) {
+		List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
+		if (queryString.startsWith("name=")) {
+			String name = queryString.substring(5);
+			for (Map.Entry<String, Item> e : cart.entrySet()) {
+				Item item = e.getValue();
+				if (item.getName().equals(name)) {
+					entries.add(new Entry<String, Item>(e.getKey(), e
+							.getValue()));
+				}
+			}
+		}
+		return entries.toArray(new Entry[entries.size()]);
+	}
+
+	public String getTotal() {
+		double total = 0;
+		String currencySymbol = "";
+		if (!cart.isEmpty()) {
+			Item item = cart.values().iterator().next();
+			currencySymbol = item.getPrice().substring(0, 1);
+		}
+		for (Item item : cart.values()) {
+			total += Double.valueOf(item.getPrice().substring(1));
+		}
+		return currencySymbol + String.valueOf(total);
+	}
+}
+
+
+

Note: Since the Tuscany conversational support is not ready yet the cart is realized through a hack.
+The cart field is defined as static.

+ +

After completing these steps the content of the "store" project will look as follows.

+ +


+ +

Store

+ +

In this step you create the user facing Store service that will run in a Web browser and provide the
+user interface to the other services you created.

+ +

Select the "ufservices" package. Right click to get the context menu, select New, and then File. In
+the New File dialog enter "store.html" for the File name, and then select Finish to complete the
+dialog.

+ +

The Text editor will open on the new created html file. Replace the content of the editor by copy-paste
+of the following html snippet.

+
+
+<html>
+<head>
+<title>Store</title>
+
+<script type="text/javascript" src="store.js"></script>
+
+<script language="JavaScript">
+
+	//@Reference
+	var catalog = new tuscany.sca.Reference("catalog");
+	
+	//@Reference
+	var shoppingCart = new tuscany.sca.Reference("shoppingCart");
+
+	//@Reference
+	var shoppingTotal = new tuscany.sca.Reference("shoppingTotal");
+	
+	var catalogItems;
+
+	function catalog_getResponse(items) {
+		var catalog = "";
+		for (var i=0; i<items.length; i++) {
+			var item = items[i].name + ' - ' + items[i].price;
+			catalog += '<input name="items" type="checkbox" value="' + 
+						item + '">' + item + ' <br>';
+		}
+		document.getElementById('catalog').innerHTML=catalog;
+		catalogItems = items;
+	}
+	
+	function shoppingCart_getResponse(feed) {
+		if (feed != null) {
+			var entries = feed.getElementsByTagName("entry");              
+			var list = "";
+			for (var i=0; i<entries.length; i++) {
+				var content = entries[i].getElementsByTagName("content")[0];
+				var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
+				var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
+				list += name + ' - ' + price + ' <br>';
+			}
+			document.getElementById("shoppingCart").innerHTML = list;
+
+			if (entries.length != 0) {			
+				shoppingTotal.getTotal(shoppingTotal_getTotalResponse);
+			}
+		}
+	}
+	
+	function shoppingTotal_getTotalResponse(total) {
+		document.getElementById('total').innerHTML = total;
+	}
+	
+	function shoppingCart_postResponse(entry) {
+		shoppingCart.get("", shoppingCart_getResponse);
+	}				
+
+	function addToCart() {
+		var items  = document.catalogForm.items;
+		var j = 0;
+		for (var i=0; i<items.length; i++)
+			if (items[i].checked) {
+				var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title>item</title><content type="text/xml">' +
+                	'<Item xmlns="http://services/">' +
+                	'<name xmlns="">' + catalogItems[i].name + '</name>' + '<price xmlns="">' + catalogItems[i].price + '</price>' +
+                 	'</Item>' + '</content></entry>';
+				shoppingCart.post(entry, shoppingCart_postResponse);
+				items[i].checked = false;
+			}
+	}
+	function checkoutCart() {
+		document.getElementById('store').innerHTML='<h2>' +
+				'Thanks for Shopping With Us!</h2>'+
+				'<h2>Your Order</h2>'+
+				'<form name="orderForm">'+
+					document.getElementById('shoppingCart').innerHTML+
+					'<br>'+
+					document.getElementById('total').innerHTML+
+					'<br>'+
+
+					'<br>'+
+					'<input type="submit" value="Continue Shopping">'+ 
+				'</form>';
+		shoppingCart.del("", null);
+	}
+	function deleteCart() {
+		shoppingCart.del("", null);
+		document.getElementById('shoppingCart').innerHTML = "";
+		document.getElementById('total').innerHTML = "";	
+	}	
+
+	function init() {
+		catalog.get(catalog_getResponse);
+		shoppingCart.get("", shoppingCart_getResponse);
+	}
+	
+</script>
+
+</head>
+
+<body onload="init()">
+<h1>Store</h1>
+  <div id="store">
+   	<h2>Catalog</h2>
+   	<form name="catalogForm">
+		<div id="catalog" ></div>
+		<br>
+		<input type="button" onClick="addToCart()"  value="Add to Cart">
+   	</form>
+ 
+ 	<br>
+  
+   	<h2>Your Shopping Cart</h2>
+   	<form name="shoppingCartForm">
+		<div id="shoppingCart"></div>
+		<br>
+		<div id="total"></div>
+		<br>		
+		<input type="button" onClick="checkoutCart()" value="Checkout"> 
+		<input type="button" onClick="deleteCart()" value="Empty">     
+	   	<a href="../ShoppingCart/Cart/">(feed)</a>
+	</form>    
+  </div>
+</body>
+</html>
+
+
+

After completing these steps the content of the "store" project will look as follows.

+ +

 

+ +

Compose Services

+ +

Now that you have all the required service implementations you compose them together to provide
+the store composite service. The composition is stored in a .composite file.

+ +

Select the "src" folder of the "store" project. Right click to get the context menu, select New, and
+then File. In the New File dialog enter "store.composite" for the File name, and then select Finish
+to complete the dialog.

+ +

The Text editor will open on the new created composite file. Replace the content of the editor by
+copy-paste of the following composite snippet.

+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+	xmlns:s="http://store" 
+	targetNamespace="http://store" 
+	name="store">
+	
+	<component name="store">
+		<t:implementation.widget location="ufservices/store.html" />
+		<service name="Widget">
+			<t:binding.http uri="http://localhost:8080/store" />
+		</service>
+		<reference name="catalog" target="Catalog">
+			<t:binding.jsonrpc />
+		</reference>
+		<reference name="shoppingCart" target="ShoppingCart/Cart">
+			<t:binding.atom />
+		</reference>
+		<reference name="shoppingTotal" target="ShoppingCart/Total">
+			<t:binding.jsonrpc />
+		</reference>
+	</component>
+
+	<component name="Catalog">
+		<implementation.java class="services.CatalogImpl" />
+		<property name="currencyCode">USD</property>
+		<service name="Catalog">
+			<t:binding.jsonrpc uri="http://localhost:8080/Catalog"/>
+		</service>
+		<reference name="currencyConverter" target="CurrencyConverter" />
+	</component>
+
+	<component name="ShoppingCart">
+		<implementation.java class="services.ShoppingCartImpl" />
+		<service name="Cart">
+			<t:binding.atom uri="http://localhost:8080/ShoppingCart/Cart" />
+		</service>
+		<service name="Total">
+			<t:binding.jsonrpc uri="http://localhost:8080/Total"/>
+		</service>
+	</component>
+
+	<component name="CurrencyConverter">
+		<implementation.java class="services.CurrencyConverterImpl" />
+	</component>
+</composite>
+
+
+

After completing these steps the content of the "store" project will look as follows.

+ +


+ +

Launch Services

+ +

In this step you create the code to launch the Tuscany runtime with the new store composite service you created.

+ +

Select the "store" project and click on the New Java Package button in the toolbar to start the package creation dialog. Use the dialog to create a new package named "launch".

+ +

Select the "launch" package. Select the New Java Class button   . In the dialog enter "Launch" as the Name of the class, check the checkbox for creating a main method stub, and then select Finish to complete the dialog.

+ +

The Java editor will open on the new created Java class. Replace the content of the editor by copy-paste of the following Java class code snippet.

+ +
+
+
+package launch;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class Launch {
+    public static void main(String[] args) throws Exception {
+        System.out.println("Starting ...");
+        SCADomain scaDomain = SCADomain.newInstance("store.composite");
+        System.out.println("store.composite ready for big business !!!");
+        System.in.read();
+        System.out.println("Stopping ...");
+        scaDomain.close();
+        System.out.println();
+    }
+}
+
+
+ + +

Congratulations you completed your 1st composite service applications, now its time to take it into
+action.

+ +

Use Services

+ +

In this step you launch and use the store composite service application you created.

+ +

First select the "Launch" class in the "launch" package of your "store" project. Right click to get the
+context menu, select Run As, and then Java application. The Tuscany runtime will start up adding
+the store composition to its domain.

+ +

The Eclipse console will show the following messages.

+ +

 

+ +

 Next Launch your Web browser and enter the following address:

+ +

http://localhost:8080/store/store.html 

+ +

 You get to the Store user facing service of the composite service application.

+ +

+ +

You can select items from the Catalog and add them to your Shopping Cart.

+ +

Note: When adding items for the first time you will be asked for userid and password by the
+browser. Enter "admin" for both.

+ +

+ +

Since the ShoppingCart service is bound using the ATOM binding, you can also look at the
+shopping card content in ATOM feed form by clicking on the feed icon . You get the browsers default rendering for ATOM feeds.

+ +

 

+ +

 Use the browser back button to get back to the Store page.

+ +

+ +

And then you can Checkout to complete your order.

+ +

+ +

Congratulations, you have created an accessible, flexible, reusable Store application using Tuscany SCA technology.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/getting-started.data/eclipse_m2_repo.jpg b/site/trunk/site-publish/getting-started.data/eclipse_m2_repo.jpg new file mode 100644 index 0000000000..f42b3db699 Binary files /dev/null and b/site/trunk/site-publish/getting-started.data/eclipse_m2_repo.jpg differ diff --git a/site/trunk/site-publish/getting-started.data/eclipse_m2_repo.jpg.jpeg b/site/trunk/site-publish/getting-started.data/eclipse_m2_repo.jpg.jpeg new file mode 100644 index 0000000000..19c70d6d83 Binary files /dev/null and b/site/trunk/site-publish/getting-started.data/eclipse_m2_repo.jpg.jpeg differ diff --git a/site/trunk/site-publish/getting-started.html b/site/trunk/site-publish/getting-started.html new file mode 100644 index 0000000000..f5c0e975d4 --- /dev/null +++ b/site/trunk/site-publish/getting-started.html @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + Apache Tuscany : Getting Started + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Getting Started + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Getting Started with Tuscany SCA for Java

+ + +

Overview

+ + +

Set up the development environment

+ +

1) Repository

+ +

Tuscany source code is hosted at Apache subversion repository. If you want to build Tuscany from source, you need to install a subversion client.

+
Where to download the subversion clients?
Command line: http://subversion.tigris.org/ (1.4.2)
+Windows GUI: http://tortoisesvn.tigris.org/ (1.4.1)
+

2) Build

+
Where to download maven?
Maven 2: http://maven.apache.org/ (2.0.4)
+

3) Development IDE

+
Where to download Eclipse/WTP?
Eclipse: http://www.eclipse.org/ (3.2.1)
+Eclipse WTP: http://www.eclipse.org/webtools/ (1.5.2)
+ +

Create a simple project from scratch

+ +
+
+mvn archetype:create -DgroupId=sample -DartifactId=helloworld
+
+
+ +

Configure the project for maven build

+ +
+
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.tuscany.samples.sca</groupId>
+    <version>1.0-incubator-SNAPSHOT</version>
+    <artifactId>sample-mortgage</artifactId>
+    <packaging>jar</packaging>
+    <name>Tuscany Mortgage Sample</name>
+    <description>A sample Mortgage application made of several SCA components wired together.</description>
+
+    <properties>
+        <property name="tuscanyVersion">1.0-incubator-SNAPSHOT</property>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.osoa</groupId>
+            <artifactId>sca-api-r0.95</artifactId>
+            <version>${tuscanyVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>test</artifactId>
+            <version>${tuscanyVersion}</version>
+            <scope>test</scope>
+        </dependency>
+</project>
+
+
+ +

Load the project into Eclipse

+ +

1. Adding M2_REPO classpath variable

+
+
+mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
+
+
+ +

+ +

2. (Optional) Add maven as an external tool for Eclipse

+ +

3. Create Eclispe metadata files

+
+
+mvn -Peclipse eclipse:eclipse
+
+
+ +

4. Import projects into Eclipse
+File --> Import ... --> Existing Projects into Workspace

+ + + +

Develop a simple SCA application

+ +

1. Declare components in the SCDL

+
META-INF/sca/default.scdl
+
+The SCDL file
+
+
+ +

2. Implement the components in java

+
CreditCheckImpl.java
+
+The java file
+
+
+ +

Run the SCA application

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/getting-tuscanys-java-sca-implementation.html b/site/trunk/site-publish/getting-tuscanys-java-sca-implementation.html new file mode 100644 index 0000000000..1237e0f72f --- /dev/null +++ b/site/trunk/site-publish/getting-tuscanys-java-sca-implementation.html @@ -0,0 +1,134 @@ + + + + + + + + Getting Tuscany's Java SCA Implementation + + + + + + + +
+  Apache Tuscany > Index > SCA Java > User Guide > Getting Tuscany's Java SCA Implementation + +
+ + + + + + +
+
+ +
+ +
+ Added by Dan Murphy, last edited by Dan Murphy on Feb 09, 2007 +  (view change) + +
+ +
+
+

Choosing between a package runtime and building your own

+ +

Downloading and installing a release

+ +
+ +
+ Children + + Show Children + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/getting-tuscnays-java-sca.html b/site/trunk/site-publish/getting-tuscnays-java-sca.html new file mode 100644 index 0000000000..e25610ecbe --- /dev/null +++ b/site/trunk/site-publish/getting-tuscnays-java-sca.html @@ -0,0 +1,118 @@ + + + + + + + + Getting Tuscnay's Java SCA + + + + + + + +
+  Apache Tuscany > Index > SCA Java > User Guide > Getting Tuscnay's Java SCA + +
+ + + + + + +
+
+ +
+ +
+ Added by Dan Murphy, last edited by Dan Murphy on Feb 08, 2007 + +
+ +
+
+ +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/graph-merge.html b/site/trunk/site-publish/graph-merge.html new file mode 100644 index 0000000000..a510810570 --- /dev/null +++ b/site/trunk/site-publish/graph-merge.html @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + Apache Tuscany : Graph Merge + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > Graph Merge + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Graph Merge

+ +

Graph Merger utility helps in managing DataObjects creation using DataObjectModel and merging multiple DataObjects into single DataObject.
+The RDBDAS can produce graphs of dynamic DataObjects as well as Static DataObjects.

+ +

Empty Graph and DataObject creation

+ +

When dealing in static way, DAS config's dataObjectModel attribute needs a valid value. Using this and SDO's TypeHelper, DAS can get Types for the Static DataObjects. With these SDO Types, DAS can create an empty DataGraph, add new DataObjects to it which can later be committed to database.

+ +

DataObjects Merge

+ +

Also, two or more DataObjects can be merged into a single DataObject. For this the GraphMerge needs to know the primary key name for all the DataObjects getting merged. The DataObjects being merged can correspond to same or different database tables.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/haleh-sandbox.html b/site/trunk/site-publish/haleh-sandbox.html new file mode 100644 index 0000000000..7a5e5d3543 --- /dev/null +++ b/site/trunk/site-publish/haleh-sandbox.html @@ -0,0 +1,127 @@ + + + + + + + Haleh-Sandbox : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Haleh-Sandbox + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + + + + + +

Welcome to the open source Apache Tuscany project! The Tuscany community is working together to create a robust infrastructure that aims to simplify the development of service oriented (SOA) systems.

+ +

Tuscany is based on open standards defined by the Open SOA Collaboration and is comprised of independent technologies designed to work well together based on:

+ +

Apache Tuscany is based on independent technologies that together provide following:

+
    +
  • Service Component Architecture (SCA) enables composition of service networks through assembly of existing and new services. As an example, a service can be implemented as JAX-WS service, Spring Bean or EJB and exposed as a web service. Tuscany SCA allows services to be implemented in variety of languages such as Java, JavaScript and C++. The Tuscany SCA runtime is implemented in Java and C++ and can easily be extended to support any communication transport, qualities of service or programming model and can be used in conjunction with other technologies such as Spring, Axis and Celtix.
  • +
  • Service Data Object (SDO) provides a uniform interface for handling different forms of data, including XML documents, that can exist in a network of services and provides the mechanism for tracking changes. Apache Tuscany provides Java and C++ implementations for SDO.
  • +
  • Data Access Service (DAS) provides a simple SDO interface to relational databases. Apache Tuscany provides a Java implementation for DAS.
  • +
+ + + +

Please join us to develop this innovative infrastructure and/or provide feedback based on your experiences. With your help Apache Tuscany will become a first class solution for simplifying the development of SOA-based systems.

+
+

Copyright © 2006, The Apache Software Foundation Apache Tuscany is undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Web Services PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/home-subpage.html b/site/trunk/site-publish/home-subpage.html new file mode 100644 index 0000000000..63c8767328 --- /dev/null +++ b/site/trunk/site-publish/home-subpage.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + Apache Tuscany : Home Subpage + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Home Subpage + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ +

In addition, Tuscany is integrated with various technologies and offers:

+
    +
  • a wide range of bindings (pluggable protocols)
  • +
  • various component types including and not limited to Java, C++, BPEL, Spring and scripting
  • +
  • an end to end service and data solution which includes support for Jaxb and SDO
  • +
  • a lightweight runtime that works standalone or with other application servers
  • +
  • a modular architecture that makes it easy to integrate with different technologies and to extend
  • +
  • Integration with web20 technologies
  • +
+ + +

Apache Tuscany SCA is implemented in Java and C++ (referred to as Native) . Learn more about SCA

+ +

Please join us to create a practical SOA infrastructure that addresses the challenges which small to large scale businesses face.

+ +
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/home.data/Logo.png b/site/trunk/site-publish/home.data/Logo.png new file mode 100644 index 0000000000..9b25eddb5d Binary files /dev/null and b/site/trunk/site-publish/home.data/Logo.png differ diff --git a/site/trunk/site-publish/home.data/Logo.png.jpeg b/site/trunk/site-publish/home.data/Logo.png.jpeg new file mode 100644 index 0000000000..f0cd122a0d Binary files /dev/null and b/site/trunk/site-publish/home.data/Logo.png.jpeg differ diff --git a/site/trunk/site-publish/home.data/SCAMessage.JPG b/site/trunk/site-publish/home.data/SCAMessage.JPG new file mode 100644 index 0000000000..d444c21949 Binary files /dev/null and b/site/trunk/site-publish/home.data/SCAMessage.JPG differ diff --git a/site/trunk/site-publish/home.data/SCAMessage.JPG.jpeg b/site/trunk/site-publish/home.data/SCAMessage.JPG.jpeg new file mode 100644 index 0000000000..25f10ba6ee Binary files /dev/null and b/site/trunk/site-publish/home.data/SCAMessage.JPG.jpeg differ diff --git a/site/trunk/site-publish/home.data/TitleC.png b/site/trunk/site-publish/home.data/TitleC.png new file mode 100644 index 0000000000..1d7c1751a5 Binary files /dev/null and b/site/trunk/site-publish/home.data/TitleC.png differ diff --git a/site/trunk/site-publish/home.data/TitleC.png.jpeg b/site/trunk/site-publish/home.data/TitleC.png.jpeg new file mode 100644 index 0000000000..5b6576ab0a Binary files /dev/null and b/site/trunk/site-publish/home.data/TitleC.png.jpeg differ diff --git a/site/trunk/site-publish/home.data/Tuscany Logo.png b/site/trunk/site-publish/home.data/Tuscany Logo.png new file mode 100644 index 0000000000..4e3073ff34 Binary files /dev/null and b/site/trunk/site-publish/home.data/Tuscany Logo.png differ diff --git a/site/trunk/site-publish/home.data/Tuscany Logo.png.jpeg b/site/trunk/site-publish/home.data/Tuscany Logo.png.jpeg new file mode 100644 index 0000000000..8039fa4983 Binary files /dev/null and b/site/trunk/site-publish/home.data/Tuscany Logo.png.jpeg differ diff --git a/site/trunk/site-publish/home.html b/site/trunk/site-publish/home.html new file mode 100644 index 0000000000..1a6e80c912 --- /dev/null +++ b/site/trunk/site-publish/home.html @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + Apache Tuscany : Home + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +
Subprojects
+

SDO
+DAS

+
+ +

Welcome to Apache Tuscany

+

Apache Tuscany simplifies the task of developing SOA solutions by providing a comprehensive infrastructure for SOA development and management that is based on Service Component Architecture (SCA) standard. With SCA as it's foundation, Tuscany offers solution developers the following advantages:

+
    +
  • Provides a model for creating composite applications by defining the services in the fabric and their relationships with one another. The services can be implemented in any technology.
  • +
  • Enables service developers to create reusable services that only contain business logic. Protocols are pushed out of business logic and are handled through pluggable bindings. This lowers development cost.
  • +
  • Applications can easily adapt to infrastructure changes without recoding since protocols are handled via pluggable bindings and quality of services (transaction, security) are handled declaratively.
  • +
  • Existing applications can work with new SCA compositions. This allows for incremental growth towards a more flexible architecture, outsourcing or providing services to others.
  • +
+ + + + +
+ +

In addition, Tuscany is integrated with various technologies and offers:

+
    +
  • a wide range of bindings (pluggable protocols)
  • +
  • various component types including and not limited to Java, C++, BPEL, Spring and scripting
  • +
  • an end to end service and data solution which includes support for Jaxb and SDO
  • +
  • a lightweight runtime that works standalone or with other application servers
  • +
  • a modular architecture that makes it easy to integrate with different technologies and to extend
  • +
  • Integration with web20 technologies
  • +
+ + +

Apache Tuscany SCA is implemented in Java and C++ (referred to as Native) . Learn more about SCA

+ +

Please join us to create a practical SOA infrastructure that addresses the challenges which small to large scale businesses face.

+ +
+ +
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/homenew.html b/site/trunk/site-publish/homenew.html new file mode 100644 index 0000000000..a11eb14a0e --- /dev/null +++ b/site/trunk/site-publish/homenew.html @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Home_new : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home_new + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ + + +
+ + + + + + + + +

Overview

+ +

Welcome to the Apache Tuscany project! The Tuscany community is working to create a robust and easy to use infrastructure that simplifies the development of service-based application networks and addresses real business problems posed in SOA.

+ + +
+

Tuscany is based on specifications defined by the OASIS Open CSAMember Section and the Open SOACollaboration:

+ +
    +
  • Service Component Architecture (SCA) - An essential characteristic of SOA is the ability to assemble new and existing services to create brand new applications that may consist of different technologies. Service Component Architecture defines a simple, service-based model for construction, assembly and deployment of a network of services (existing and new ones) that are defined in a language-neutral way. Tuscany implements the SCA Version 1.0specifications. Learn more about SCA
  • +
+ +
+
+ + + +
+
    +
  • Service Data Objects (SDO) provides a uniform interface for handling different forms of data, including XML documents, that can exist in a network of services and provides the mechanism for tracking changes. Tuscany implements the SDO Version 2.1specifications. Learn more about SDO
  • +
+ + +
    +
  • Data Access Service (DAS) provides a simple SDO interface to relational databases. Learn more about DAS
  • +
+
+ + +
+

The above mentioned technologies provide a full infrastructure for developing and running SOA based applications. They are not dependent on one another and can be used independently.

+ +

Please join us to create a simple, practical, extensible SOA infrastructure to address the problems that large-scale applications and service networks are faced with. We look forward to your participation.

+ +

News

+ + + + +
    +
  • May 21, 2008 - Apache Tuscany is now an offical ASF project!
    +The ASF board has approved graduation from the Apache Incubator to be a fully endorsed ASF top level project.
  • +
+ + +
    +
  • May 11, 2008 - PyCon Italia Due
    +Giorgio Zoppi presents Python e Service Component Architecture covering Python in SCA
  • +
+ + + + + + + + + + + + + + + + + + + + + + + +
    +
  • To view a list of previous releases please go to the download page of each subproject.
  • +
  • past Tuscany events
  • +
+ +
+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/images/bad.gif b/site/trunk/site-publish/images/bad.gif new file mode 100644 index 0000000000..825c2f8bc1 Binary files /dev/null and b/site/trunk/site-publish/images/bad.gif differ diff --git a/site/trunk/site-publish/images/border/border_bottom.gif b/site/trunk/site-publish/images/border/border_bottom.gif new file mode 100644 index 0000000000..b93012ac2a Binary files /dev/null and b/site/trunk/site-publish/images/border/border_bottom.gif differ diff --git a/site/trunk/site-publish/images/border/spacer.gif b/site/trunk/site-publish/images/border/spacer.gif new file mode 100644 index 0000000000..fc2560981e Binary files /dev/null and b/site/trunk/site-publish/images/border/spacer.gif differ diff --git a/site/trunk/site-publish/images/confluence_logo.gif b/site/trunk/site-publish/images/confluence_logo.gif new file mode 100644 index 0000000000..c2ea306578 Binary files /dev/null and b/site/trunk/site-publish/images/confluence_logo.gif differ diff --git a/site/trunk/site-publish/images/confluence_logo_darkbg.gif b/site/trunk/site-publish/images/confluence_logo_darkbg.gif new file mode 100644 index 0000000000..44a1682f1e Binary files /dev/null and b/site/trunk/site-publish/images/confluence_logo_darkbg.gif differ diff --git a/site/trunk/site-publish/images/en_UK.gif b/site/trunk/site-publish/images/en_UK.gif new file mode 100644 index 0000000000..9ee1ca7650 Binary files /dev/null and b/site/trunk/site-publish/images/en_UK.gif differ diff --git a/site/trunk/site-publish/images/encodingtest.jpg b/site/trunk/site-publish/images/encodingtest.jpg new file mode 100644 index 0000000000..7f830ef60e Binary files /dev/null and b/site/trunk/site-publish/images/encodingtest.jpg differ diff --git a/site/trunk/site-publish/images/good.gif b/site/trunk/site-publish/images/good.gif new file mode 100644 index 0000000000..43c5d74ba7 Binary files /dev/null and b/site/trunk/site-publish/images/good.gif differ diff --git a/site/trunk/site-publish/images/icons/about_16.gif b/site/trunk/site-publish/images/icons/about_16.gif new file mode 100644 index 0000000000..7e0720b7eb Binary files /dev/null and b/site/trunk/site-publish/images/icons/about_16.gif differ diff --git a/site/trunk/site-publish/images/icons/about_16.png b/site/trunk/site-publish/images/icons/about_16.png new file mode 100644 index 0000000000..1cdd2f26cf Binary files /dev/null and b/site/trunk/site-publish/images/icons/about_16.png differ diff --git a/site/trunk/site-publish/images/icons/add_16.gif b/site/trunk/site-publish/images/icons/add_16.gif new file mode 100644 index 0000000000..10cdf57be9 Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_16.gif differ diff --git a/site/trunk/site-publish/images/icons/add_blogentry_16.gif b/site/trunk/site-publish/images/icons/add_blogentry_16.gif new file mode 100644 index 0000000000..05ceb847bb Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_blogentry_16.gif differ diff --git a/site/trunk/site-publish/images/icons/add_blogentry_32.gif b/site/trunk/site-publish/images/icons/add_blogentry_32.gif new file mode 100644 index 0000000000..e86cc8b08c Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_blogentry_32.gif differ diff --git a/site/trunk/site-publish/images/icons/add_comment_16.gif b/site/trunk/site-publish/images/icons/add_comment_16.gif new file mode 100644 index 0000000000..e4b29fe096 Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_comment_16.gif differ diff --git a/site/trunk/site-publish/images/icons/add_page_16.gif b/site/trunk/site-publish/images/icons/add_page_16.gif new file mode 100644 index 0000000000..042e1f86c3 Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_page_16.gif differ diff --git a/site/trunk/site-publish/images/icons/add_page_32.gif b/site/trunk/site-publish/images/icons/add_page_32.gif new file mode 100644 index 0000000000..ae3118f65d Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_page_32.gif differ diff --git a/site/trunk/site-publish/images/icons/add_page_child_16.gif b/site/trunk/site-publish/images/icons/add_page_child_16.gif new file mode 100644 index 0000000000..47c252b11b Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_page_child_16.gif differ diff --git a/site/trunk/site-publish/images/icons/add_page_faded_16.gif b/site/trunk/site-publish/images/icons/add_page_faded_16.gif new file mode 100644 index 0000000000..300532f10f Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_page_faded_16.gif differ diff --git a/site/trunk/site-publish/images/icons/add_page_notification_16.gif b/site/trunk/site-publish/images/icons/add_page_notification_16.gif new file mode 100644 index 0000000000..cbac7b1b6d Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_page_notification_16.gif differ diff --git a/site/trunk/site-publish/images/icons/add_space_16.gif b/site/trunk/site-publish/images/icons/add_space_16.gif new file mode 100644 index 0000000000..35ea472d3a Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_space_16.gif differ diff --git a/site/trunk/site-publish/images/icons/add_space_32.gif b/site/trunk/site-publish/images/icons/add_space_32.gif new file mode 100644 index 0000000000..a8f8d7ceda Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_space_32.gif differ diff --git a/site/trunk/site-publish/images/icons/add_space_notification_16.gif b/site/trunk/site-publish/images/icons/add_space_notification_16.gif new file mode 100644 index 0000000000..82cf5c31cf Binary files /dev/null and b/site/trunk/site-publish/images/icons/add_space_notification_16.gif differ diff --git a/site/trunk/site-publish/images/icons/addbk_16.gif b/site/trunk/site-publish/images/icons/addbk_16.gif new file mode 100644 index 0000000000..6968ef6713 Binary files /dev/null and b/site/trunk/site-publish/images/icons/addbk_16.gif differ diff --git a/site/trunk/site-publish/images/icons/adfav_16.gif b/site/trunk/site-publish/images/icons/adfav_16.gif new file mode 100644 index 0000000000..eb30554b99 Binary files /dev/null and b/site/trunk/site-publish/images/icons/adfav_16.gif differ diff --git a/site/trunk/site-publish/images/icons/alarm_16.gif b/site/trunk/site-publish/images/icons/alarm_16.gif new file mode 100644 index 0000000000..fa9c9c7b5f Binary files /dev/null and b/site/trunk/site-publish/images/icons/alarm_16.gif differ diff --git a/site/trunk/site-publish/images/icons/apps_16.gif b/site/trunk/site-publish/images/icons/apps_16.gif new file mode 100644 index 0000000000..e034484abb Binary files /dev/null and b/site/trunk/site-publish/images/icons/apps_16.gif differ diff --git a/site/trunk/site-publish/images/icons/arrow_block_16.gif b/site/trunk/site-publish/images/icons/arrow_block_16.gif new file mode 100644 index 0000000000..0b72031f8a Binary files /dev/null and b/site/trunk/site-publish/images/icons/arrow_block_16.gif differ diff --git a/site/trunk/site-publish/images/icons/arrow_closed_active_16.gif b/site/trunk/site-publish/images/icons/arrow_closed_active_16.gif new file mode 100644 index 0000000000..7fa57047d4 Binary files /dev/null and b/site/trunk/site-publish/images/icons/arrow_closed_active_16.gif differ diff --git a/site/trunk/site-publish/images/icons/arrow_closing_active_16.gif b/site/trunk/site-publish/images/icons/arrow_closing_active_16.gif new file mode 100644 index 0000000000..6fb1e0fc51 Binary files /dev/null and b/site/trunk/site-publish/images/icons/arrow_closing_active_16.gif differ diff --git a/site/trunk/site-publish/images/icons/arrow_open_active_16.gif b/site/trunk/site-publish/images/icons/arrow_open_active_16.gif new file mode 100644 index 0000000000..dce19c1322 Binary files /dev/null and b/site/trunk/site-publish/images/icons/arrow_open_active_16.gif differ diff --git a/site/trunk/site-publish/images/icons/arrow_opening_active_16.gif b/site/trunk/site-publish/images/icons/arrow_opening_active_16.gif new file mode 100644 index 0000000000..dce19c1322 Binary files /dev/null and b/site/trunk/site-publish/images/icons/arrow_opening_active_16.gif differ diff --git a/site/trunk/site-publish/images/icons/atom.gif b/site/trunk/site-publish/images/icons/atom.gif new file mode 100644 index 0000000000..cd7f56725c Binary files /dev/null and b/site/trunk/site-publish/images/icons/atom.gif differ diff --git a/site/trunk/site-publish/images/icons/attach_file_16.gif b/site/trunk/site-publish/images/icons/attach_file_16.gif new file mode 100644 index 0000000000..aa7466f1a7 Binary files /dev/null and b/site/trunk/site-publish/images/icons/attach_file_16.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/excel.gif b/site/trunk/site-publish/images/icons/attachments/excel.gif new file mode 100644 index 0000000000..a7a65c4593 Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/excel.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/file.gif b/site/trunk/site-publish/images/icons/attachments/file.gif new file mode 100644 index 0000000000..358cdacf1a Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/file.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/html.gif b/site/trunk/site-publish/images/icons/attachments/html.gif new file mode 100644 index 0000000000..f5f727f6eb Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/html.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/image.gif b/site/trunk/site-publish/images/icons/attachments/image.gif new file mode 100644 index 0000000000..7f8722cfe7 Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/image.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/java.gif b/site/trunk/site-publish/images/icons/attachments/java.gif new file mode 100644 index 0000000000..4a6832c60b Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/java.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/pdf.gif b/site/trunk/site-publish/images/icons/attachments/pdf.gif new file mode 100644 index 0000000000..5c20645898 Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/pdf.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/powerpoint.gif b/site/trunk/site-publish/images/icons/attachments/powerpoint.gif new file mode 100644 index 0000000000..5b5670a97d Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/powerpoint.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/text.gif b/site/trunk/site-publish/images/icons/attachments/text.gif new file mode 100644 index 0000000000..80bc8fca5a Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/text.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/word.gif b/site/trunk/site-publish/images/icons/attachments/word.gif new file mode 100644 index 0000000000..23e5b0265f Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/word.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/xml.gif b/site/trunk/site-publish/images/icons/attachments/xml.gif new file mode 100644 index 0000000000..43d9641219 Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/xml.gif differ diff --git a/site/trunk/site-publish/images/icons/attachments/zip.gif b/site/trunk/site-publish/images/icons/attachments/zip.gif new file mode 100644 index 0000000000..1eb71ca726 Binary files /dev/null and b/site/trunk/site-publish/images/icons/attachments/zip.gif differ diff --git a/site/trunk/site-publish/images/icons/back_16.gif b/site/trunk/site-publish/images/icons/back_16.gif new file mode 100644 index 0000000000..dd752dfa8a Binary files /dev/null and b/site/trunk/site-publish/images/icons/back_16.gif differ diff --git a/site/trunk/site-publish/images/icons/blogentry_16.gif b/site/trunk/site-publish/images/icons/blogentry_16.gif new file mode 100644 index 0000000000..83d600d097 Binary files /dev/null and b/site/trunk/site-publish/images/icons/blogentry_16.gif differ diff --git a/site/trunk/site-publish/images/icons/blogentry_faded_16.gif b/site/trunk/site-publish/images/icons/blogentry_faded_16.gif new file mode 100644 index 0000000000..cd347b05ac Binary files /dev/null and b/site/trunk/site-publish/images/icons/blogentry_faded_16.gif differ diff --git a/site/trunk/site-publish/images/icons/browse_space.gif b/site/trunk/site-publish/images/icons/browse_space.gif new file mode 100644 index 0000000000..f5a9946414 Binary files /dev/null and b/site/trunk/site-publish/images/icons/browse_space.gif differ diff --git a/site/trunk/site-publish/images/icons/bullet_blue.gif b/site/trunk/site-publish/images/icons/bullet_blue.gif new file mode 100644 index 0000000000..25bfa0cf2b Binary files /dev/null and b/site/trunk/site-publish/images/icons/bullet_blue.gif differ diff --git a/site/trunk/site-publish/images/icons/bullet_creme.gif b/site/trunk/site-publish/images/icons/bullet_creme.gif new file mode 100644 index 0000000000..a18cea17c6 Binary files /dev/null and b/site/trunk/site-publish/images/icons/bullet_creme.gif differ diff --git a/site/trunk/site-publish/images/icons/bullet_creme_6.gif b/site/trunk/site-publish/images/icons/bullet_creme_6.gif new file mode 100644 index 0000000000..d8a7de61d7 Binary files /dev/null and b/site/trunk/site-publish/images/icons/bullet_creme_6.gif differ diff --git a/site/trunk/site-publish/images/icons/bullet_done.gif b/site/trunk/site-publish/images/icons/bullet_done.gif new file mode 100644 index 0000000000..02c5ebc529 Binary files /dev/null and b/site/trunk/site-publish/images/icons/bullet_done.gif differ diff --git a/site/trunk/site-publish/images/icons/bullet_inprogress.gif b/site/trunk/site-publish/images/icons/bullet_inprogress.gif new file mode 100644 index 0000000000..169c7d4557 Binary files /dev/null and b/site/trunk/site-publish/images/icons/bullet_inprogress.gif differ diff --git a/site/trunk/site-publish/images/icons/bullet_notdone.gif b/site/trunk/site-publish/images/icons/bullet_notdone.gif new file mode 100644 index 0000000000..004a483eda Binary files /dev/null and b/site/trunk/site-publish/images/icons/bullet_notdone.gif differ diff --git a/site/trunk/site-publish/images/icons/bullet_red.gif b/site/trunk/site-publish/images/icons/bullet_red.gif new file mode 100644 index 0000000000..05021c628a Binary files /dev/null and b/site/trunk/site-publish/images/icons/bullet_red.gif differ diff --git a/site/trunk/site-publish/images/icons/cal_16.gif b/site/trunk/site-publish/images/icons/cal_16.gif new file mode 100644 index 0000000000..a277a9adc8 Binary files /dev/null and b/site/trunk/site-publish/images/icons/cal_16.gif differ diff --git a/site/trunk/site-publish/images/icons/calc_16.gif b/site/trunk/site-publish/images/icons/calc_16.gif new file mode 100644 index 0000000000..243fe41718 Binary files /dev/null and b/site/trunk/site-publish/images/icons/calc_16.gif differ diff --git a/site/trunk/site-publish/images/icons/cancl_16.gif b/site/trunk/site-publish/images/icons/cancl_16.gif new file mode 100644 index 0000000000..c195996d22 Binary files /dev/null and b/site/trunk/site-publish/images/icons/cancl_16.gif differ diff --git a/site/trunk/site-publish/images/icons/cart_16.gif b/site/trunk/site-publish/images/icons/cart_16.gif new file mode 100644 index 0000000000..fc1addb563 Binary files /dev/null and b/site/trunk/site-publish/images/icons/cart_16.gif differ diff --git a/site/trunk/site-publish/images/icons/cd_16.gif b/site/trunk/site-publish/images/icons/cd_16.gif new file mode 100644 index 0000000000..d916884df6 Binary files /dev/null and b/site/trunk/site-publish/images/icons/cd_16.gif differ diff --git a/site/trunk/site-publish/images/icons/chart_16.gif b/site/trunk/site-publish/images/icons/chart_16.gif new file mode 100644 index 0000000000..f6250cc02f Binary files /dev/null and b/site/trunk/site-publish/images/icons/chart_16.gif differ diff --git a/site/trunk/site-publish/images/icons/close_16.gif b/site/trunk/site-publish/images/icons/close_16.gif new file mode 100644 index 0000000000..d2d9d75e8f Binary files /dev/null and b/site/trunk/site-publish/images/icons/close_16.gif differ diff --git a/site/trunk/site-publish/images/icons/comment_16.gif b/site/trunk/site-publish/images/icons/comment_16.gif new file mode 100644 index 0000000000..6f76e86bd7 Binary files /dev/null and b/site/trunk/site-publish/images/icons/comment_16.gif differ diff --git a/site/trunk/site-publish/images/icons/confg_16.gif b/site/trunk/site-publish/images/icons/confg_16.gif new file mode 100644 index 0000000000..85ad173a27 Binary files /dev/null and b/site/trunk/site-publish/images/icons/confg_16.gif differ diff --git a/site/trunk/site-publish/images/icons/configure_icon_16.gif b/site/trunk/site-publish/images/icons/configure_icon_16.gif new file mode 100644 index 0000000000..cbe90f9dad Binary files /dev/null and b/site/trunk/site-publish/images/icons/configure_icon_16.gif differ diff --git a/site/trunk/site-publish/images/icons/copy_16.gif b/site/trunk/site-publish/images/icons/copy_16.gif new file mode 100644 index 0000000000..3ad03f3b3b Binary files /dev/null and b/site/trunk/site-publish/images/icons/copy_16.gif differ diff --git a/site/trunk/site-publish/images/icons/cut_16.gif b/site/trunk/site-publish/images/icons/cut_16.gif new file mode 100644 index 0000000000..5fc3bb5851 Binary files /dev/null and b/site/trunk/site-publish/images/icons/cut_16.gif differ diff --git a/site/trunk/site-publish/images/icons/del_16.gif b/site/trunk/site-publish/images/icons/del_16.gif new file mode 100644 index 0000000000..fb9bf56243 Binary files /dev/null and b/site/trunk/site-publish/images/icons/del_16.gif differ diff --git a/site/trunk/site-publish/images/icons/del_blogentry_16.gif b/site/trunk/site-publish/images/icons/del_blogentry_16.gif new file mode 100644 index 0000000000..4f29191ade Binary files /dev/null and b/site/trunk/site-publish/images/icons/del_blogentry_16.gif differ diff --git a/site/trunk/site-publish/images/icons/del_comment_16.gif b/site/trunk/site-publish/images/icons/del_comment_16.gif new file mode 100644 index 0000000000..ebeb35e00c Binary files /dev/null and b/site/trunk/site-publish/images/icons/del_comment_16.gif differ diff --git a/site/trunk/site-publish/images/icons/del_page_16.gif b/site/trunk/site-publish/images/icons/del_page_16.gif new file mode 100644 index 0000000000..239ce7150c Binary files /dev/null and b/site/trunk/site-publish/images/icons/del_page_16.gif differ diff --git a/site/trunk/site-publish/images/icons/del_page_notification_16.gif b/site/trunk/site-publish/images/icons/del_page_notification_16.gif new file mode 100644 index 0000000000..b172050b4c Binary files /dev/null and b/site/trunk/site-publish/images/icons/del_page_notification_16.gif differ diff --git a/site/trunk/site-publish/images/icons/del_space_16.gif b/site/trunk/site-publish/images/icons/del_space_16.gif new file mode 100644 index 0000000000..79eb4f8c7f Binary files /dev/null and b/site/trunk/site-publish/images/icons/del_space_16.gif differ diff --git a/site/trunk/site-publish/images/icons/del_space_notification_16.gif b/site/trunk/site-publish/images/icons/del_space_notification_16.gif new file mode 100644 index 0000000000..56ba3465e1 Binary files /dev/null and b/site/trunk/site-publish/images/icons/del_space_notification_16.gif differ diff --git a/site/trunk/site-publish/images/icons/docs_16.gif b/site/trunk/site-publish/images/icons/docs_16.gif new file mode 100644 index 0000000000..8a6368b8ea Binary files /dev/null and b/site/trunk/site-publish/images/icons/docs_16.gif differ diff --git a/site/trunk/site-publish/images/icons/document_attachment.png b/site/trunk/site-publish/images/icons/document_attachment.png new file mode 100644 index 0000000000..f44cfcdf67 Binary files /dev/null and b/site/trunk/site-publish/images/icons/document_attachment.png differ diff --git a/site/trunk/site-publish/images/icons/document_exchange.gif b/site/trunk/site-publish/images/icons/document_exchange.gif new file mode 100644 index 0000000000..f27abbed06 Binary files /dev/null and b/site/trunk/site-publish/images/icons/document_exchange.gif differ diff --git a/site/trunk/site-publish/images/icons/document_exchange.png b/site/trunk/site-publish/images/icons/document_exchange.png new file mode 100644 index 0000000000..745916fcb9 Binary files /dev/null and b/site/trunk/site-publish/images/icons/document_exchange.png differ diff --git a/site/trunk/site-publish/images/icons/document_zoom_in_16.gif b/site/trunk/site-publish/images/icons/document_zoom_in_16.gif new file mode 100644 index 0000000000..8c2759a3b1 Binary files /dev/null and b/site/trunk/site-publish/images/icons/document_zoom_in_16.gif differ diff --git a/site/trunk/site-publish/images/icons/document_zoom_in_16.png b/site/trunk/site-publish/images/icons/document_zoom_in_16.png new file mode 100644 index 0000000000..44809fde6d Binary files /dev/null and b/site/trunk/site-publish/images/icons/document_zoom_in_16.png differ diff --git a/site/trunk/site-publish/images/icons/down_16.gif b/site/trunk/site-publish/images/icons/down_16.gif new file mode 100644 index 0000000000..9b8cc379da Binary files /dev/null and b/site/trunk/site-publish/images/icons/down_16.gif differ diff --git a/site/trunk/site-publish/images/icons/dummy.gif b/site/trunk/site-publish/images/icons/dummy.gif new file mode 100644 index 0000000000..2f75b001f2 Binary files /dev/null and b/site/trunk/site-publish/images/icons/dummy.gif differ diff --git a/site/trunk/site-publish/images/icons/edit_16.gif b/site/trunk/site-publish/images/icons/edit_16.gif new file mode 100644 index 0000000000..8b76d872ad Binary files /dev/null and b/site/trunk/site-publish/images/icons/edit_16.gif differ diff --git a/site/trunk/site-publish/images/icons/edit_blogentry_16.gif b/site/trunk/site-publish/images/icons/edit_blogentry_16.gif new file mode 100644 index 0000000000..c5339fddcc Binary files /dev/null and b/site/trunk/site-publish/images/icons/edit_blogentry_16.gif differ diff --git a/site/trunk/site-publish/images/icons/edit_only_16.gif b/site/trunk/site-publish/images/icons/edit_only_16.gif new file mode 100644 index 0000000000..8b76d872ad Binary files /dev/null and b/site/trunk/site-publish/images/icons/edit_only_16.gif differ diff --git a/site/trunk/site-publish/images/icons/edit_space_16.gif b/site/trunk/site-publish/images/icons/edit_space_16.gif new file mode 100644 index 0000000000..dab223c142 Binary files /dev/null and b/site/trunk/site-publish/images/icons/edit_space_16.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/add.gif b/site/trunk/site-publish/images/icons/emoticons/add.gif new file mode 100644 index 0000000000..0c00fe0d49 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/add.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/add.png b/site/trunk/site-publish/images/icons/emoticons/add.png new file mode 100644 index 0000000000..ad794dc728 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/add.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/biggrin.gif b/site/trunk/site-publish/images/icons/emoticons/biggrin.gif new file mode 100644 index 0000000000..ad04031985 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/biggrin.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/check.gif b/site/trunk/site-publish/images/icons/emoticons/check.gif new file mode 100644 index 0000000000..28bb99943f Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/check.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/check.png b/site/trunk/site-publish/images/icons/emoticons/check.png new file mode 100644 index 0000000000..deefc129d2 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/check.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/error.gif b/site/trunk/site-publish/images/icons/emoticons/error.gif new file mode 100644 index 0000000000..6d68a8cc0b Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/error.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/error.png b/site/trunk/site-publish/images/icons/emoticons/error.png new file mode 100644 index 0000000000..24e2601846 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/error.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/forbidden.gif b/site/trunk/site-publish/images/icons/emoticons/forbidden.gif new file mode 100644 index 0000000000..c6acdec605 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/forbidden.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/forbidden.png b/site/trunk/site-publish/images/icons/emoticons/forbidden.png new file mode 100644 index 0000000000..d33897164e Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/forbidden.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/help_16.gif b/site/trunk/site-publish/images/icons/emoticons/help_16.gif new file mode 100644 index 0000000000..83387c25c6 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/help_16.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/information.gif b/site/trunk/site-publish/images/icons/emoticons/information.gif new file mode 100644 index 0000000000..072ab660fa Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/information.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/information.png b/site/trunk/site-publish/images/icons/emoticons/information.png new file mode 100644 index 0000000000..c7c9a47819 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/information.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/lightbulb.gif b/site/trunk/site-publish/images/icons/emoticons/lightbulb.gif new file mode 100644 index 0000000000..cd72409a47 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/lightbulb.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/lightbulb.png b/site/trunk/site-publish/images/icons/emoticons/lightbulb.png new file mode 100644 index 0000000000..451834ce95 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/lightbulb.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/lightbulb_on.gif b/site/trunk/site-publish/images/icons/emoticons/lightbulb_on.gif new file mode 100644 index 0000000000..3768ef7d12 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/lightbulb_on.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/lightbulb_on.png b/site/trunk/site-publish/images/icons/emoticons/lightbulb_on.png new file mode 100644 index 0000000000..9e42542a24 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/lightbulb_on.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/sad.gif b/site/trunk/site-publish/images/icons/emoticons/sad.gif new file mode 100644 index 0000000000..6aca31070f Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/sad.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/smile.gif b/site/trunk/site-publish/images/icons/emoticons/smile.gif new file mode 100644 index 0000000000..f8dc2782a0 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/smile.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/star_blue.gif b/site/trunk/site-publish/images/icons/emoticons/star_blue.gif new file mode 100644 index 0000000000..9b366cebeb Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/star_blue.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/star_blue.png b/site/trunk/site-publish/images/icons/emoticons/star_blue.png new file mode 100644 index 0000000000..2eb9db9868 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/star_blue.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/star_green.gif b/site/trunk/site-publish/images/icons/emoticons/star_green.gif new file mode 100644 index 0000000000..42d27ec7e8 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/star_green.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/star_green.png b/site/trunk/site-publish/images/icons/emoticons/star_green.png new file mode 100644 index 0000000000..0343b7f87e Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/star_green.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/star_red.gif b/site/trunk/site-publish/images/icons/emoticons/star_red.gif new file mode 100644 index 0000000000..c10acb9f7d Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/star_red.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/star_red.png b/site/trunk/site-publish/images/icons/emoticons/star_red.png new file mode 100644 index 0000000000..cffcdef945 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/star_red.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/star_yellow.gif b/site/trunk/site-publish/images/icons/emoticons/star_yellow.gif new file mode 100644 index 0000000000..0f1d151a32 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/star_yellow.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/star_yellow.png b/site/trunk/site-publish/images/icons/emoticons/star_yellow.png new file mode 100644 index 0000000000..9d695b19d6 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/star_yellow.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/thumbs_down.gif b/site/trunk/site-publish/images/icons/emoticons/thumbs_down.gif new file mode 100644 index 0000000000..855c748864 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/thumbs_down.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/thumbs_up.gif b/site/trunk/site-publish/images/icons/emoticons/thumbs_up.gif new file mode 100644 index 0000000000..7c55feebd8 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/thumbs_up.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/tongue.gif b/site/trunk/site-publish/images/icons/emoticons/tongue.gif new file mode 100644 index 0000000000..fe77df2fa2 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/tongue.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/warning.gif b/site/trunk/site-publish/images/icons/emoticons/warning.gif new file mode 100644 index 0000000000..1c9883b8f7 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/warning.gif differ diff --git a/site/trunk/site-publish/images/icons/emoticons/warning.png b/site/trunk/site-publish/images/icons/emoticons/warning.png new file mode 100644 index 0000000000..56ad042e58 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/warning.png differ diff --git a/site/trunk/site-publish/images/icons/emoticons/wink.gif b/site/trunk/site-publish/images/icons/emoticons/wink.gif new file mode 100644 index 0000000000..24bdea9605 Binary files /dev/null and b/site/trunk/site-publish/images/icons/emoticons/wink.gif differ diff --git a/site/trunk/site-publish/images/icons/exp_16.gif b/site/trunk/site-publish/images/icons/exp_16.gif new file mode 100644 index 0000000000..edcaeee4b5 Binary files /dev/null and b/site/trunk/site-publish/images/icons/exp_16.gif differ diff --git a/site/trunk/site-publish/images/icons/exp_32.gif b/site/trunk/site-publish/images/icons/exp_32.gif new file mode 100644 index 0000000000..6c104e38bf Binary files /dev/null and b/site/trunk/site-publish/images/icons/exp_32.gif differ diff --git a/site/trunk/site-publish/images/icons/fastf_16.gif b/site/trunk/site-publish/images/icons/fastf_16.gif new file mode 100644 index 0000000000..184d42741a Binary files /dev/null and b/site/trunk/site-publish/images/icons/fastf_16.gif differ diff --git a/site/trunk/site-publish/images/icons/favicon.ico b/site/trunk/site-publish/images/icons/favicon.ico new file mode 100644 index 0000000000..bf3fe7269a Binary files /dev/null and b/site/trunk/site-publish/images/icons/favicon.ico differ diff --git a/site/trunk/site-publish/images/icons/favicon.png b/site/trunk/site-publish/images/icons/favicon.png new file mode 100644 index 0000000000..5109be5168 Binary files /dev/null and b/site/trunk/site-publish/images/icons/favicon.png differ diff --git a/site/trunk/site-publish/images/icons/favs_16.gif b/site/trunk/site-publish/images/icons/favs_16.gif new file mode 100644 index 0000000000..32525ee810 Binary files /dev/null and b/site/trunk/site-publish/images/icons/favs_16.gif differ diff --git a/site/trunk/site-publish/images/icons/fax_16.gif b/site/trunk/site-publish/images/icons/fax_16.gif new file mode 100644 index 0000000000..0dffbab6e0 Binary files /dev/null and b/site/trunk/site-publish/images/icons/fax_16.gif differ diff --git a/site/trunk/site-publish/images/icons/feed-icon-10x10.png b/site/trunk/site-publish/images/icons/feed-icon-10x10.png new file mode 100644 index 0000000000..cc869bc617 Binary files /dev/null and b/site/trunk/site-publish/images/icons/feed-icon-10x10.png differ diff --git a/site/trunk/site-publish/images/icons/feed-icon-12x12.png b/site/trunk/site-publish/images/icons/feed-icon-12x12.png new file mode 100644 index 0000000000..291000eab2 Binary files /dev/null and b/site/trunk/site-publish/images/icons/feed-icon-12x12.png differ diff --git a/site/trunk/site-publish/images/icons/feed-icon-16x16.png b/site/trunk/site-publish/images/icons/feed-icon-16x16.png new file mode 100644 index 0000000000..1679ab05b0 Binary files /dev/null and b/site/trunk/site-publish/images/icons/feed-icon-16x16.png differ diff --git a/site/trunk/site-publish/images/icons/feed-icon-24x24.png b/site/trunk/site-publish/images/icons/feed-icon-24x24.png new file mode 100644 index 0000000000..00c896b422 Binary files /dev/null and b/site/trunk/site-publish/images/icons/feed-icon-24x24.png differ diff --git a/site/trunk/site-publish/images/icons/feed-icon-32x32.png b/site/trunk/site-publish/images/icons/feed-icon-32x32.png new file mode 100644 index 0000000000..ea50b84b7c Binary files /dev/null and b/site/trunk/site-publish/images/icons/feed-icon-32x32.png differ diff --git a/site/trunk/site-publish/images/icons/feed_wizard.gif b/site/trunk/site-publish/images/icons/feed_wizard.gif new file mode 100644 index 0000000000..e4419b635f Binary files /dev/null and b/site/trunk/site-publish/images/icons/feed_wizard.gif differ diff --git a/site/trunk/site-publish/images/icons/flag_16.gif b/site/trunk/site-publish/images/icons/flag_16.gif new file mode 100644 index 0000000000..d745cf10d6 Binary files /dev/null and b/site/trunk/site-publish/images/icons/flag_16.gif differ diff --git a/site/trunk/site-publish/images/icons/foldr_16.gif b/site/trunk/site-publish/images/icons/foldr_16.gif new file mode 100644 index 0000000000..b476457795 Binary files /dev/null and b/site/trunk/site-publish/images/icons/foldr_16.gif differ diff --git a/site/trunk/site-publish/images/icons/forwd_16.gif b/site/trunk/site-publish/images/icons/forwd_16.gif new file mode 100644 index 0000000000..4afdf43b8d Binary files /dev/null and b/site/trunk/site-publish/images/icons/forwd_16.gif differ diff --git a/site/trunk/site-publish/images/icons/forwd_24.png b/site/trunk/site-publish/images/icons/forwd_24.png new file mode 100644 index 0000000000..c901e2ea0e Binary files /dev/null and b/site/trunk/site-publish/images/icons/forwd_24.png differ diff --git a/site/trunk/site-publish/images/icons/games_16.gif b/site/trunk/site-publish/images/icons/games_16.gif new file mode 100644 index 0000000000..a35e3ba6b2 Binary files /dev/null and b/site/trunk/site-publish/images/icons/games_16.gif differ diff --git a/site/trunk/site-publish/images/icons/go_16.gif b/site/trunk/site-publish/images/icons/go_16.gif new file mode 100644 index 0000000000..003aa83398 Binary files /dev/null and b/site/trunk/site-publish/images/icons/go_16.gif differ diff --git a/site/trunk/site-publish/images/icons/group_16.gif b/site/trunk/site-publish/images/icons/group_16.gif new file mode 100644 index 0000000000..0c6637c86f Binary files /dev/null and b/site/trunk/site-publish/images/icons/group_16.gif differ diff --git a/site/trunk/site-publish/images/icons/group_anyone_16.gif b/site/trunk/site-publish/images/icons/group_anyone_16.gif new file mode 100644 index 0000000000..f2c70caf09 Binary files /dev/null and b/site/trunk/site-publish/images/icons/group_anyone_16.gif differ diff --git a/site/trunk/site-publish/images/icons/hd_16.gif b/site/trunk/site-publish/images/icons/hd_16.gif new file mode 100644 index 0000000000..d676539457 Binary files /dev/null and b/site/trunk/site-publish/images/icons/hd_16.gif differ diff --git a/site/trunk/site-publish/images/icons/help_16.gif b/site/trunk/site-publish/images/icons/help_16.gif new file mode 100644 index 0000000000..83387c25c6 Binary files /dev/null and b/site/trunk/site-publish/images/icons/help_16.gif differ diff --git a/site/trunk/site-publish/images/icons/help_24.gif b/site/trunk/site-publish/images/icons/help_24.gif new file mode 100644 index 0000000000..2cadd7a836 Binary files /dev/null and b/site/trunk/site-publish/images/icons/help_24.gif differ diff --git a/site/trunk/site-publish/images/icons/help_24.png b/site/trunk/site-publish/images/icons/help_24.png new file mode 100644 index 0000000000..73817ffbe9 Binary files /dev/null and b/site/trunk/site-publish/images/icons/help_24.png differ diff --git a/site/trunk/site-publish/images/icons/hist_16.gif b/site/trunk/site-publish/images/icons/hist_16.gif new file mode 100644 index 0000000000..93d0901757 Binary files /dev/null and b/site/trunk/site-publish/images/icons/hist_16.gif differ diff --git a/site/trunk/site-publish/images/icons/history_16.gif b/site/trunk/site-publish/images/icons/history_16.gif new file mode 100644 index 0000000000..759dc4cce5 Binary files /dev/null and b/site/trunk/site-publish/images/icons/history_16.gif differ diff --git a/site/trunk/site-publish/images/icons/home_16.gif b/site/trunk/site-publish/images/icons/home_16.gif new file mode 100644 index 0000000000..7a902b1be9 Binary files /dev/null and b/site/trunk/site-publish/images/icons/home_16.gif differ diff --git a/site/trunk/site-publish/images/icons/home_faded_16.gif b/site/trunk/site-publish/images/icons/home_faded_16.gif new file mode 100644 index 0000000000..182d1de195 Binary files /dev/null and b/site/trunk/site-publish/images/icons/home_faded_16.gif differ diff --git a/site/trunk/site-publish/images/icons/image_16.gif b/site/trunk/site-publish/images/icons/image_16.gif new file mode 100644 index 0000000000..7c8e9d1716 Binary files /dev/null and b/site/trunk/site-publish/images/icons/image_16.gif differ diff --git a/site/trunk/site-publish/images/icons/import_mbox_16.gif b/site/trunk/site-publish/images/icons/import_mbox_16.gif new file mode 100644 index 0000000000..f40ed56fe9 Binary files /dev/null and b/site/trunk/site-publish/images/icons/import_mbox_16.gif differ diff --git a/site/trunk/site-publish/images/icons/impt_16.gif b/site/trunk/site-publish/images/icons/impt_16.gif new file mode 100644 index 0000000000..2425ff8d38 Binary files /dev/null and b/site/trunk/site-publish/images/icons/impt_16.gif differ diff --git a/site/trunk/site-publish/images/icons/label_16.gif b/site/trunk/site-publish/images/icons/label_16.gif new file mode 100644 index 0000000000..22fbc1d6c6 Binary files /dev/null and b/site/trunk/site-publish/images/icons/label_16.gif differ diff --git a/site/trunk/site-publish/images/icons/layout_northwest.gif b/site/trunk/site-publish/images/icons/layout_northwest.gif new file mode 100644 index 0000000000..21300e353f Binary files /dev/null and b/site/trunk/site-publish/images/icons/layout_northwest.gif differ diff --git a/site/trunk/site-publish/images/icons/layout_northwest.png b/site/trunk/site-publish/images/icons/layout_northwest.png new file mode 100644 index 0000000000..4c9761b29b Binary files /dev/null and b/site/trunk/site-publish/images/icons/layout_northwest.png differ diff --git a/site/trunk/site-publish/images/icons/lgicn_16.gif b/site/trunk/site-publish/images/icons/lgicn_16.gif new file mode 100644 index 0000000000..ad880d9a54 Binary files /dev/null and b/site/trunk/site-publish/images/icons/lgicn_16.gif differ diff --git a/site/trunk/site-publish/images/icons/link_16.gif b/site/trunk/site-publish/images/icons/link_16.gif new file mode 100644 index 0000000000..84631052c1 Binary files /dev/null and b/site/trunk/site-publish/images/icons/link_16.gif differ diff --git a/site/trunk/site-publish/images/icons/link_attachment_7.gif b/site/trunk/site-publish/images/icons/link_attachment_7.gif new file mode 100644 index 0000000000..cb4c386368 Binary files /dev/null and b/site/trunk/site-publish/images/icons/link_attachment_7.gif differ diff --git a/site/trunk/site-publish/images/icons/link_in_bot.gif b/site/trunk/site-publish/images/icons/link_in_bot.gif new file mode 100644 index 0000000000..a03602d43c Binary files /dev/null and b/site/trunk/site-publish/images/icons/link_in_bot.gif differ diff --git a/site/trunk/site-publish/images/icons/link_in_mid.gif b/site/trunk/site-publish/images/icons/link_in_mid.gif new file mode 100644 index 0000000000..43967fbffb Binary files /dev/null and b/site/trunk/site-publish/images/icons/link_in_mid.gif differ diff --git a/site/trunk/site-publish/images/icons/link_in_only.gif b/site/trunk/site-publish/images/icons/link_in_only.gif new file mode 100644 index 0000000000..baa3ffd4b3 Binary files /dev/null and b/site/trunk/site-publish/images/icons/link_in_only.gif differ diff --git a/site/trunk/site-publish/images/icons/link_in_top.gif b/site/trunk/site-publish/images/icons/link_in_top.gif new file mode 100644 index 0000000000..579bf97bf3 Binary files /dev/null and b/site/trunk/site-publish/images/icons/link_in_top.gif differ diff --git a/site/trunk/site-publish/images/icons/link_out_bot.gif b/site/trunk/site-publish/images/icons/link_out_bot.gif new file mode 100644 index 0000000000..f8e8502991 Binary files /dev/null and b/site/trunk/site-publish/images/icons/link_out_bot.gif differ diff --git a/site/trunk/site-publish/images/icons/link_out_mid.gif b/site/trunk/site-publish/images/icons/link_out_mid.gif new file mode 100644 index 0000000000..b26e786bc1 Binary files /dev/null and b/site/trunk/site-publish/images/icons/link_out_mid.gif differ diff --git a/site/trunk/site-publish/images/icons/link_out_top.gif b/site/trunk/site-publish/images/icons/link_out_top.gif new file mode 100644 index 0000000000..b26e786bc1 Binary files /dev/null and b/site/trunk/site-publish/images/icons/link_out_top.gif differ diff --git a/site/trunk/site-publish/images/icons/linkext7.gif b/site/trunk/site-publish/images/icons/linkext7.gif new file mode 100644 index 0000000000..f2dd2dcfa9 Binary files /dev/null and b/site/trunk/site-publish/images/icons/linkext7.gif differ diff --git a/site/trunk/site-publish/images/icons/list_blogentries_32.gif b/site/trunk/site-publish/images/icons/list_blogentries_32.gif new file mode 100644 index 0000000000..74d2583047 Binary files /dev/null and b/site/trunk/site-publish/images/icons/list_blogentries_32.gif differ diff --git a/site/trunk/site-publish/images/icons/list_blogposts_32.gif b/site/trunk/site-publish/images/icons/list_blogposts_32.gif new file mode 100644 index 0000000000..74d2583047 Binary files /dev/null and b/site/trunk/site-publish/images/icons/list_blogposts_32.gif differ diff --git a/site/trunk/site-publish/images/icons/list_less_pages_16.gif b/site/trunk/site-publish/images/icons/list_less_pages_16.gif new file mode 100644 index 0000000000..f0e258644f Binary files /dev/null and b/site/trunk/site-publish/images/icons/list_less_pages_16.gif differ diff --git a/site/trunk/site-publish/images/icons/list_mail_32.gif b/site/trunk/site-publish/images/icons/list_mail_32.gif new file mode 100644 index 0000000000..69ff75cc80 Binary files /dev/null and b/site/trunk/site-publish/images/icons/list_mail_32.gif differ diff --git a/site/trunk/site-publish/images/icons/list_mail_content_16.gif b/site/trunk/site-publish/images/icons/list_mail_content_16.gif new file mode 100644 index 0000000000..1ada2fe2f1 Binary files /dev/null and b/site/trunk/site-publish/images/icons/list_mail_content_16.gif differ diff --git a/site/trunk/site-publish/images/icons/list_mail_faded_16.gif b/site/trunk/site-publish/images/icons/list_mail_faded_16.gif new file mode 100644 index 0000000000..6c7c047550 Binary files /dev/null and b/site/trunk/site-publish/images/icons/list_mail_faded_16.gif differ diff --git a/site/trunk/site-publish/images/icons/list_pages_16.gif b/site/trunk/site-publish/images/icons/list_pages_16.gif new file mode 100644 index 0000000000..66281b6cf9 Binary files /dev/null and b/site/trunk/site-publish/images/icons/list_pages_16.gif differ diff --git a/site/trunk/site-publish/images/icons/list_pages_32.gif b/site/trunk/site-publish/images/icons/list_pages_32.gif new file mode 100644 index 0000000000..6ab121c83b Binary files /dev/null and b/site/trunk/site-publish/images/icons/list_pages_32.gif differ diff --git a/site/trunk/site-publish/images/icons/list_pages_faded_16.gif b/site/trunk/site-publish/images/icons/list_pages_faded_16.gif new file mode 100644 index 0000000000..2c64bc9a67 Binary files /dev/null and b/site/trunk/site-publish/images/icons/list_pages_faded_16.gif differ diff --git a/site/trunk/site-publish/images/icons/lock_16.gif b/site/trunk/site-publish/images/icons/lock_16.gif new file mode 100644 index 0000000000..2b946af8e1 Binary files /dev/null and b/site/trunk/site-publish/images/icons/lock_16.gif differ diff --git a/site/trunk/site-publish/images/icons/locked_pages_16.gif b/site/trunk/site-publish/images/icons/locked_pages_16.gif new file mode 100644 index 0000000000..3ea6bd847b Binary files /dev/null and b/site/trunk/site-publish/images/icons/locked_pages_16.gif differ diff --git a/site/trunk/site-publish/images/icons/logo_add_16.gif b/site/trunk/site-publish/images/icons/logo_add_16.gif new file mode 100644 index 0000000000..4a786ff724 Binary files /dev/null and b/site/trunk/site-publish/images/icons/logo_add_16.gif differ diff --git a/site/trunk/site-publish/images/icons/mail.png b/site/trunk/site-publish/images/icons/mail.png new file mode 100644 index 0000000000..0b7c44cb25 Binary files /dev/null and b/site/trunk/site-publish/images/icons/mail.png differ diff --git a/site/trunk/site-publish/images/icons/mail_16.gif b/site/trunk/site-publish/images/icons/mail_16.gif new file mode 100644 index 0000000000..0386c0d105 Binary files /dev/null and b/site/trunk/site-publish/images/icons/mail_16.gif differ diff --git a/site/trunk/site-publish/images/icons/mail_content_16.gif b/site/trunk/site-publish/images/icons/mail_content_16.gif new file mode 100644 index 0000000000..c98214868f Binary files /dev/null and b/site/trunk/site-publish/images/icons/mail_content_16.gif differ diff --git a/site/trunk/site-publish/images/icons/mail_delete.png b/site/trunk/site-publish/images/icons/mail_delete.png new file mode 100644 index 0000000000..0c6d791f5b Binary files /dev/null and b/site/trunk/site-publish/images/icons/mail_delete.png differ diff --git a/site/trunk/site-publish/images/icons/mail_small.gif b/site/trunk/site-publish/images/icons/mail_small.gif new file mode 100644 index 0000000000..a3b7d9f06f Binary files /dev/null and b/site/trunk/site-publish/images/icons/mail_small.gif differ diff --git a/site/trunk/site-publish/images/icons/mail_thread_16.gif b/site/trunk/site-publish/images/icons/mail_thread_16.gif new file mode 100644 index 0000000000..e4ec117231 Binary files /dev/null and b/site/trunk/site-publish/images/icons/mail_thread_16.gif differ diff --git a/site/trunk/site-publish/images/icons/move_16.gif b/site/trunk/site-publish/images/icons/move_16.gif new file mode 100644 index 0000000000..1d4eb88a4c Binary files /dev/null and b/site/trunk/site-publish/images/icons/move_16.gif differ diff --git a/site/trunk/site-publish/images/icons/music_16.gif b/site/trunk/site-publish/images/icons/music_16.gif new file mode 100644 index 0000000000..b22f819b94 Binary files /dev/null and b/site/trunk/site-publish/images/icons/music_16.gif differ diff --git a/site/trunk/site-publish/images/icons/nav_down.gif b/site/trunk/site-publish/images/icons/nav_down.gif new file mode 100644 index 0000000000..a7e67f5ef8 Binary files /dev/null and b/site/trunk/site-publish/images/icons/nav_down.gif differ diff --git a/site/trunk/site-publish/images/icons/nav_up.gif b/site/trunk/site-publish/images/icons/nav_up.gif new file mode 100644 index 0000000000..28b3e823e7 Binary files /dev/null and b/site/trunk/site-publish/images/icons/nav_up.gif differ diff --git a/site/trunk/site-publish/images/icons/new_16.gif b/site/trunk/site-publish/images/icons/new_16.gif new file mode 100644 index 0000000000..f9530c8edf Binary files /dev/null and b/site/trunk/site-publish/images/icons/new_16.gif differ diff --git a/site/trunk/site-publish/images/icons/news.gif b/site/trunk/site-publish/images/icons/news.gif new file mode 100644 index 0000000000..4b270ddd35 Binary files /dev/null and b/site/trunk/site-publish/images/icons/news.gif differ diff --git a/site/trunk/site-publish/images/icons/notep_16.gif b/site/trunk/site-publish/images/icons/notep_16.gif new file mode 100644 index 0000000000..663666b5c0 Binary files /dev/null and b/site/trunk/site-publish/images/icons/notep_16.gif differ diff --git a/site/trunk/site-publish/images/icons/ntwrk_16.gif b/site/trunk/site-publish/images/icons/ntwrk_16.gif new file mode 100644 index 0000000000..a6e4fd81e4 Binary files /dev/null and b/site/trunk/site-publish/images/icons/ntwrk_16.gif differ diff --git a/site/trunk/site-publish/images/icons/open_16.gif b/site/trunk/site-publish/images/icons/open_16.gif new file mode 100644 index 0000000000..d19cf5492f Binary files /dev/null and b/site/trunk/site-publish/images/icons/open_16.gif differ diff --git a/site/trunk/site-publish/images/icons/opnbr_16.gif b/site/trunk/site-publish/images/icons/opnbr_16.gif new file mode 100644 index 0000000000..7a14b15c30 Binary files /dev/null and b/site/trunk/site-publish/images/icons/opnbr_16.gif differ diff --git a/site/trunk/site-publish/images/icons/opts_16.gif b/site/trunk/site-publish/images/icons/opts_16.gif new file mode 100644 index 0000000000..de7a76a547 Binary files /dev/null and b/site/trunk/site-publish/images/icons/opts_16.gif differ diff --git a/site/trunk/site-publish/images/icons/page_hierarchy_16.gif b/site/trunk/site-publish/images/icons/page_hierarchy_16.gif new file mode 100644 index 0000000000..f4486c6464 Binary files /dev/null and b/site/trunk/site-publish/images/icons/page_hierarchy_16.gif differ diff --git a/site/trunk/site-publish/images/icons/paint_16.gif b/site/trunk/site-publish/images/icons/paint_16.gif new file mode 100644 index 0000000000..2896984f5c Binary files /dev/null and b/site/trunk/site-publish/images/icons/paint_16.gif differ diff --git a/site/trunk/site-publish/images/icons/paste_16.gif b/site/trunk/site-publish/images/icons/paste_16.gif new file mode 100644 index 0000000000..ec009352dc Binary files /dev/null and b/site/trunk/site-publish/images/icons/paste_16.gif differ diff --git a/site/trunk/site-publish/images/icons/pause_16.gif b/site/trunk/site-publish/images/icons/pause_16.gif new file mode 100644 index 0000000000..c8ad8b398a Binary files /dev/null and b/site/trunk/site-publish/images/icons/pause_16.gif differ diff --git a/site/trunk/site-publish/images/icons/phone_16.gif b/site/trunk/site-publish/images/icons/phone_16.gif new file mode 100644 index 0000000000..e4d72a732c Binary files /dev/null and b/site/trunk/site-publish/images/icons/phone_16.gif differ diff --git a/site/trunk/site-publish/images/icons/photo_scenery.gif b/site/trunk/site-publish/images/icons/photo_scenery.gif new file mode 100644 index 0000000000..890e7a5f8a Binary files /dev/null and b/site/trunk/site-publish/images/icons/photo_scenery.gif differ diff --git a/site/trunk/site-publish/images/icons/picts_16.gif b/site/trunk/site-publish/images/icons/picts_16.gif new file mode 100644 index 0000000000..718b8896fb Binary files /dev/null and b/site/trunk/site-publish/images/icons/picts_16.gif differ diff --git a/site/trunk/site-publish/images/icons/play_16.gif b/site/trunk/site-publish/images/icons/play_16.gif new file mode 100644 index 0000000000..d35ebd68dd Binary files /dev/null and b/site/trunk/site-publish/images/icons/play_16.gif differ diff --git a/site/trunk/site-publish/images/icons/plus.gif b/site/trunk/site-publish/images/icons/plus.gif new file mode 100644 index 0000000000..a19d15f48a Binary files /dev/null and b/site/trunk/site-publish/images/icons/plus.gif differ diff --git a/site/trunk/site-publish/images/icons/prefs_16.gif b/site/trunk/site-publish/images/icons/prefs_16.gif new file mode 100644 index 0000000000..88b41298a7 Binary files /dev/null and b/site/trunk/site-publish/images/icons/prefs_16.gif differ diff --git a/site/trunk/site-publish/images/icons/print_16.gif b/site/trunk/site-publish/images/icons/print_16.gif new file mode 100644 index 0000000000..c0da9b9dcf Binary files /dev/null and b/site/trunk/site-publish/images/icons/print_16.gif differ diff --git a/site/trunk/site-publish/images/icons/profilepics/angel.png b/site/trunk/site-publish/images/icons/profilepics/angel.png new file mode 100644 index 0000000000..028d9fb0bf Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/angel.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/businessman.png b/site/trunk/site-publish/images/icons/profilepics/businessman.png new file mode 100644 index 0000000000..ec92d12d18 Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/businessman.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/businessman2.png b/site/trunk/site-publish/images/icons/profilepics/businessman2.png new file mode 100644 index 0000000000..ea039f8a3c Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/businessman2.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/default.png b/site/trunk/site-publish/images/icons/profilepics/default.png new file mode 100644 index 0000000000..991e6364b2 Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/default.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/devil.png b/site/trunk/site-publish/images/icons/profilepics/devil.png new file mode 100644 index 0000000000..67a3aa5a84 Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/devil.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/doctor.png b/site/trunk/site-publish/images/icons/profilepics/doctor.png new file mode 100644 index 0000000000..4ede78e368 Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/doctor.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/dude1.png b/site/trunk/site-publish/images/icons/profilepics/dude1.png new file mode 100644 index 0000000000..751b36ee6b Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/dude1.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/dude2.png b/site/trunk/site-publish/images/icons/profilepics/dude2.png new file mode 100644 index 0000000000..ba49463014 Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/dude2.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/dude3.png b/site/trunk/site-publish/images/icons/profilepics/dude3.png new file mode 100644 index 0000000000..4878d0f472 Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/dude3.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/dude4.png b/site/trunk/site-publish/images/icons/profilepics/dude4.png new file mode 100644 index 0000000000..e14d171d80 Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/dude4.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/dude5.png b/site/trunk/site-publish/images/icons/profilepics/dude5.png new file mode 100644 index 0000000000..07fc86d1e4 Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/dude5.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/ghost.png b/site/trunk/site-publish/images/icons/profilepics/ghost.png new file mode 100644 index 0000000000..2f0b3929d5 Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/ghost.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/security_agent.png b/site/trunk/site-publish/images/icons/profilepics/security_agent.png new file mode 100644 index 0000000000..9920fe51ee Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/security_agent.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/user1.png b/site/trunk/site-publish/images/icons/profilepics/user1.png new file mode 100644 index 0000000000..49e2a5f55c Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/user1.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/user2.png b/site/trunk/site-publish/images/icons/profilepics/user2.png new file mode 100644 index 0000000000..92f17d83be Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/user2.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/user3.png b/site/trunk/site-publish/images/icons/profilepics/user3.png new file mode 100644 index 0000000000..c3128be276 Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/user3.png differ diff --git a/site/trunk/site-publish/images/icons/profilepics/user_headphones.png b/site/trunk/site-publish/images/icons/profilepics/user_headphones.png new file mode 100644 index 0000000000..c2da457a5d Binary files /dev/null and b/site/trunk/site-publish/images/icons/profilepics/user_headphones.png differ diff --git a/site/trunk/site-publish/images/icons/prtpv_16.gif b/site/trunk/site-publish/images/icons/prtpv_16.gif new file mode 100644 index 0000000000..def722ec9e Binary files /dev/null and b/site/trunk/site-publish/images/icons/prtpv_16.gif differ diff --git a/site/trunk/site-publish/images/icons/redo_116.gif b/site/trunk/site-publish/images/icons/redo_116.gif new file mode 100644 index 0000000000..06d01fd67c Binary files /dev/null and b/site/trunk/site-publish/images/icons/redo_116.gif differ diff --git a/site/trunk/site-publish/images/icons/ref_16.gif b/site/trunk/site-publish/images/icons/ref_16.gif new file mode 100644 index 0000000000..c0848758f9 Binary files /dev/null and b/site/trunk/site-publish/images/icons/ref_16.gif differ diff --git a/site/trunk/site-publish/images/icons/refresh_16.png b/site/trunk/site-publish/images/icons/refresh_16.png new file mode 100644 index 0000000000..c7567da63d Binary files /dev/null and b/site/trunk/site-publish/images/icons/refresh_16.png differ diff --git a/site/trunk/site-publish/images/icons/refresh_24.png b/site/trunk/site-publish/images/icons/refresh_24.png new file mode 100644 index 0000000000..9add1322eb Binary files /dev/null and b/site/trunk/site-publish/images/icons/refresh_24.png differ diff --git a/site/trunk/site-publish/images/icons/remov_16.gif b/site/trunk/site-publish/images/icons/remov_16.gif new file mode 100644 index 0000000000..9a4ce81b65 Binary files /dev/null and b/site/trunk/site-publish/images/icons/remov_16.gif differ diff --git a/site/trunk/site-publish/images/icons/rewnd_16.gif b/site/trunk/site-publish/images/icons/rewnd_16.gif new file mode 100644 index 0000000000..9700058c62 Binary files /dev/null and b/site/trunk/site-publish/images/icons/rewnd_16.gif differ diff --git a/site/trunk/site-publish/images/icons/rss.gif b/site/trunk/site-publish/images/icons/rss.gif new file mode 100644 index 0000000000..d86174e6d4 Binary files /dev/null and b/site/trunk/site-publish/images/icons/rss.gif differ diff --git a/site/trunk/site-publish/images/icons/rss10.gif b/site/trunk/site-publish/images/icons/rss10.gif new file mode 100644 index 0000000000..430842e5a1 Binary files /dev/null and b/site/trunk/site-publish/images/icons/rss10.gif differ diff --git a/site/trunk/site-publish/images/icons/rss20.gif b/site/trunk/site-publish/images/icons/rss20.gif new file mode 100644 index 0000000000..99d1a2a8f0 Binary files /dev/null and b/site/trunk/site-publish/images/icons/rss20.gif differ diff --git a/site/trunk/site-publish/images/icons/rss_32.gif b/site/trunk/site-publish/images/icons/rss_32.gif new file mode 100644 index 0000000000..a51f148bad Binary files /dev/null and b/site/trunk/site-publish/images/icons/rss_32.gif differ diff --git a/site/trunk/site-publish/images/icons/run_test_fail_16.gif b/site/trunk/site-publish/images/icons/run_test_fail_16.gif new file mode 100644 index 0000000000..abd8919578 Binary files /dev/null and b/site/trunk/site-publish/images/icons/run_test_fail_16.gif differ diff --git a/site/trunk/site-publish/images/icons/run_test_pass_16.gif b/site/trunk/site-publish/images/icons/run_test_pass_16.gif new file mode 100644 index 0000000000..df29cad086 Binary files /dev/null and b/site/trunk/site-publish/images/icons/run_test_pass_16.gif differ diff --git a/site/trunk/site-publish/images/icons/savas_16.gif b/site/trunk/site-publish/images/icons/savas_16.gif new file mode 100644 index 0000000000..5723c67f8f Binary files /dev/null and b/site/trunk/site-publish/images/icons/savas_16.gif differ diff --git a/site/trunk/site-publish/images/icons/save_16.gif b/site/trunk/site-publish/images/icons/save_16.gif new file mode 100644 index 0000000000..10d632357c Binary files /dev/null and b/site/trunk/site-publish/images/icons/save_16.gif differ diff --git a/site/trunk/site-publish/images/icons/sinfo_16.gif b/site/trunk/site-publish/images/icons/sinfo_16.gif new file mode 100644 index 0000000000..b47b545046 Binary files /dev/null and b/site/trunk/site-publish/images/icons/sinfo_16.gif differ diff --git a/site/trunk/site-publish/images/icons/skipb_16.gif b/site/trunk/site-publish/images/icons/skipb_16.gif new file mode 100644 index 0000000000..38ea581cb1 Binary files /dev/null and b/site/trunk/site-publish/images/icons/skipb_16.gif differ diff --git a/site/trunk/site-publish/images/icons/skipf_16.gif b/site/trunk/site-publish/images/icons/skipf_16.gif new file mode 100644 index 0000000000..b151af2bf4 Binary files /dev/null and b/site/trunk/site-publish/images/icons/skipf_16.gif differ diff --git a/site/trunk/site-publish/images/icons/smicn_16.gif b/site/trunk/site-publish/images/icons/smicn_16.gif new file mode 100644 index 0000000000..79384c3719 Binary files /dev/null and b/site/trunk/site-publish/images/icons/smicn_16.gif differ diff --git a/site/trunk/site-publish/images/icons/splay_16.gif b/site/trunk/site-publish/images/icons/splay_16.gif new file mode 100644 index 0000000000..2e34a54a23 Binary files /dev/null and b/site/trunk/site-publish/images/icons/splay_16.gif differ diff --git a/site/trunk/site-publish/images/icons/srch_16.gif b/site/trunk/site-publish/images/icons/srch_16.gif new file mode 100644 index 0000000000..64fdbc0b6b Binary files /dev/null and b/site/trunk/site-publish/images/icons/srch_16.gif differ diff --git a/site/trunk/site-publish/images/icons/star_grey.gif b/site/trunk/site-publish/images/icons/star_grey.gif new file mode 100644 index 0000000000..f9b3348da6 Binary files /dev/null and b/site/trunk/site-publish/images/icons/star_grey.gif differ diff --git a/site/trunk/site-publish/images/icons/star_yellow.gif b/site/trunk/site-publish/images/icons/star_yellow.gif new file mode 100644 index 0000000000..0f1d151a32 Binary files /dev/null and b/site/trunk/site-publish/images/icons/star_yellow.gif differ diff --git a/site/trunk/site-publish/images/icons/stop_16.gif b/site/trunk/site-publish/images/icons/stop_16.gif new file mode 100644 index 0000000000..ea413a740e Binary files /dev/null and b/site/trunk/site-publish/images/icons/stop_16.gif differ diff --git a/site/trunk/site-publish/images/icons/subtract_16.gif b/site/trunk/site-publish/images/icons/subtract_16.gif new file mode 100644 index 0000000000..071c1a9254 Binary files /dev/null and b/site/trunk/site-publish/images/icons/subtract_16.gif differ diff --git a/site/trunk/site-publish/images/icons/text_abc.gif b/site/trunk/site-publish/images/icons/text_abc.gif new file mode 100644 index 0000000000..bbb80434f2 Binary files /dev/null and b/site/trunk/site-publish/images/icons/text_abc.gif differ diff --git a/site/trunk/site-publish/images/icons/text_abc_16.gif b/site/trunk/site-publish/images/icons/text_abc_16.gif new file mode 100644 index 0000000000..ff4fc11876 Binary files /dev/null and b/site/trunk/site-publish/images/icons/text_abc_16.gif differ diff --git a/site/trunk/site-publish/images/icons/text_bold.gif b/site/trunk/site-publish/images/icons/text_bold.gif new file mode 100644 index 0000000000..6446ca7562 Binary files /dev/null and b/site/trunk/site-publish/images/icons/text_bold.gif differ diff --git a/site/trunk/site-publish/images/icons/text_bold_16.png b/site/trunk/site-publish/images/icons/text_bold_16.png new file mode 100644 index 0000000000..4fb8dd90eb Binary files /dev/null and b/site/trunk/site-publish/images/icons/text_bold_16.png differ diff --git a/site/trunk/site-publish/images/icons/text_italics.gif b/site/trunk/site-publish/images/icons/text_italics.gif new file mode 100644 index 0000000000..a47ee4cf7c Binary files /dev/null and b/site/trunk/site-publish/images/icons/text_italics.gif differ diff --git a/site/trunk/site-publish/images/icons/text_tree.png b/site/trunk/site-publish/images/icons/text_tree.png new file mode 100644 index 0000000000..eccf03e544 Binary files /dev/null and b/site/trunk/site-publish/images/icons/text_tree.png differ diff --git a/site/trunk/site-publish/images/icons/text_tree_16.png b/site/trunk/site-publish/images/icons/text_tree_16.png new file mode 100644 index 0000000000..4ab4288272 Binary files /dev/null and b/site/trunk/site-publish/images/icons/text_tree_16.png differ diff --git a/site/trunk/site-publish/images/icons/text_underlined.gif b/site/trunk/site-publish/images/icons/text_underlined.gif new file mode 100644 index 0000000000..ef84f4c20e Binary files /dev/null and b/site/trunk/site-publish/images/icons/text_underlined.gif differ diff --git a/site/trunk/site-publish/images/icons/text_view.png b/site/trunk/site-publish/images/icons/text_view.png new file mode 100644 index 0000000000..fa05c76c8a Binary files /dev/null and b/site/trunk/site-publish/images/icons/text_view.png differ diff --git a/site/trunk/site-publish/images/icons/text_view_16.png b/site/trunk/site-publish/images/icons/text_view_16.png new file mode 100644 index 0000000000..d9b861b655 Binary files /dev/null and b/site/trunk/site-publish/images/icons/text_view_16.png differ diff --git a/site/trunk/site-publish/images/icons/thread.png b/site/trunk/site-publish/images/icons/thread.png new file mode 100644 index 0000000000..6dab998e8d Binary files /dev/null and b/site/trunk/site-publish/images/icons/thread.png differ diff --git a/site/trunk/site-publish/images/icons/tools_16.gif b/site/trunk/site-publish/images/icons/tools_16.gif new file mode 100644 index 0000000000..d6b7f86553 Binary files /dev/null and b/site/trunk/site-publish/images/icons/tools_16.gif differ diff --git a/site/trunk/site-publish/images/icons/trafficlight_green_16.png b/site/trunk/site-publish/images/icons/trafficlight_green_16.png new file mode 100644 index 0000000000..63bc3088a1 Binary files /dev/null and b/site/trunk/site-publish/images/icons/trafficlight_green_16.png differ diff --git a/site/trunk/site-publish/images/icons/trafficlight_green_24.png b/site/trunk/site-publish/images/icons/trafficlight_green_24.png new file mode 100644 index 0000000000..a170730f03 Binary files /dev/null and b/site/trunk/site-publish/images/icons/trafficlight_green_24.png differ diff --git a/site/trunk/site-publish/images/icons/trafficlight_red_16.png b/site/trunk/site-publish/images/icons/trafficlight_red_16.png new file mode 100644 index 0000000000..2325af01aa Binary files /dev/null and b/site/trunk/site-publish/images/icons/trafficlight_red_16.png differ diff --git a/site/trunk/site-publish/images/icons/trafficlight_red_24.png b/site/trunk/site-publish/images/icons/trafficlight_red_24.png new file mode 100644 index 0000000000..e023a991a6 Binary files /dev/null and b/site/trunk/site-publish/images/icons/trafficlight_red_24.png differ diff --git a/site/trunk/site-publish/images/icons/trash_16.gif b/site/trunk/site-publish/images/icons/trash_16.gif new file mode 100644 index 0000000000..a3f272e899 Binary files /dev/null and b/site/trunk/site-publish/images/icons/trash_16.gif differ diff --git a/site/trunk/site-publish/images/icons/tree_minus.gif b/site/trunk/site-publish/images/icons/tree_minus.gif new file mode 100644 index 0000000000..608bc2908d Binary files /dev/null and b/site/trunk/site-publish/images/icons/tree_minus.gif differ diff --git a/site/trunk/site-publish/images/icons/tree_plus.gif b/site/trunk/site-publish/images/icons/tree_plus.gif new file mode 100644 index 0000000000..87ccefe9d7 Binary files /dev/null and b/site/trunk/site-publish/images/icons/tree_plus.gif differ diff --git a/site/trunk/site-publish/images/icons/tree_square.gif b/site/trunk/site-publish/images/icons/tree_square.gif new file mode 100644 index 0000000000..369070e7e3 Binary files /dev/null and b/site/trunk/site-publish/images/icons/tree_square.gif differ diff --git a/site/trunk/site-publish/images/icons/ulock_16.gif b/site/trunk/site-publish/images/icons/ulock_16.gif new file mode 100644 index 0000000000..ee710dd49b Binary files /dev/null and b/site/trunk/site-publish/images/icons/ulock_16.gif differ diff --git a/site/trunk/site-publish/images/icons/undo_16.gif b/site/trunk/site-publish/images/icons/undo_16.gif new file mode 100644 index 0000000000..b89cad2302 Binary files /dev/null and b/site/trunk/site-publish/images/icons/undo_16.gif differ diff --git a/site/trunk/site-publish/images/icons/up_16.gif b/site/trunk/site-publish/images/icons/up_16.gif new file mode 100644 index 0000000000..6eb38d1f47 Binary files /dev/null and b/site/trunk/site-publish/images/icons/up_16.gif differ diff --git a/site/trunk/site-publish/images/icons/user_12.gif b/site/trunk/site-publish/images/icons/user_12.gif new file mode 100644 index 0000000000..d41511f1b8 Binary files /dev/null and b/site/trunk/site-publish/images/icons/user_12.gif differ diff --git a/site/trunk/site-publish/images/icons/user_16.gif b/site/trunk/site-publish/images/icons/user_16.gif new file mode 100644 index 0000000000..f5a2fb6a3a Binary files /dev/null and b/site/trunk/site-publish/images/icons/user_16.gif differ diff --git a/site/trunk/site-publish/images/icons/user_bw_16.gif b/site/trunk/site-publish/images/icons/user_bw_16.gif new file mode 100644 index 0000000000..207524b571 Binary files /dev/null and b/site/trunk/site-publish/images/icons/user_bw_16.gif differ diff --git a/site/trunk/site-publish/images/icons/wait.gif b/site/trunk/site-publish/images/icons/wait.gif new file mode 100644 index 0000000000..085ccaecaf Binary files /dev/null and b/site/trunk/site-publish/images/icons/wait.gif differ diff --git a/site/trunk/site-publish/images/icons/watch_16.gif b/site/trunk/site-publish/images/icons/watch_16.gif new file mode 100644 index 0000000000..8bd75d7633 Binary files /dev/null and b/site/trunk/site-publish/images/icons/watch_16.gif differ diff --git a/site/trunk/site-publish/images/icons/watch_32.gif b/site/trunk/site-publish/images/icons/watch_32.gif new file mode 100644 index 0000000000..6c204038e0 Binary files /dev/null and b/site/trunk/site-publish/images/icons/watch_32.gif differ diff --git a/site/trunk/site-publish/images/icons/watch_cancel_16.gif b/site/trunk/site-publish/images/icons/watch_cancel_16.gif new file mode 100644 index 0000000000..80f466e669 Binary files /dev/null and b/site/trunk/site-publish/images/icons/watch_cancel_16.gif differ diff --git a/site/trunk/site-publish/images/icons/watch_cancel_32.gif b/site/trunk/site-publish/images/icons/watch_cancel_32.gif new file mode 100644 index 0000000000..e53872b296 Binary files /dev/null and b/site/trunk/site-publish/images/icons/watch_cancel_32.gif differ diff --git a/site/trunk/site-publish/images/icons/web_16.gif b/site/trunk/site-publish/images/icons/web_16.gif new file mode 100644 index 0000000000..99a19c4e71 Binary files /dev/null and b/site/trunk/site-publish/images/icons/web_16.gif differ diff --git a/site/trunk/site-publish/images/icons/web_faded_16.gif b/site/trunk/site-publish/images/icons/web_faded_16.gif new file mode 100644 index 0000000000..74b7433673 Binary files /dev/null and b/site/trunk/site-publish/images/icons/web_faded_16.gif differ diff --git a/site/trunk/site-publish/images/icons/wiz_16.gif b/site/trunk/site-publish/images/icons/wiz_16.gif new file mode 100644 index 0000000000..9214433b9d Binary files /dev/null and b/site/trunk/site-publish/images/icons/wiz_16.gif differ diff --git a/site/trunk/site-publish/images/icons/zoomi_16.gif b/site/trunk/site-publish/images/icons/zoomi_16.gif new file mode 100644 index 0000000000..f2f6aca447 Binary files /dev/null and b/site/trunk/site-publish/images/icons/zoomi_16.gif differ diff --git a/site/trunk/site-publish/images/icons/zoomo_16.gif b/site/trunk/site-publish/images/icons/zoomo_16.gif new file mode 100644 index 0000000000..0191d45b46 Binary files /dev/null and b/site/trunk/site-publish/images/icons/zoomo_16.gif differ diff --git a/site/trunk/site-publish/images/logo.gif b/site/trunk/site-publish/images/logo.gif new file mode 100644 index 0000000000..a95eb33c2d Binary files /dev/null and b/site/trunk/site-publish/images/logo.gif differ diff --git a/site/trunk/site-publish/images/logo2.gif b/site/trunk/site-publish/images/logo2.gif new file mode 100644 index 0000000000..4dcbd34539 Binary files /dev/null and b/site/trunk/site-publish/images/logo2.gif differ diff --git a/site/trunk/site-publish/images/raw/arrow_block.png b/site/trunk/site-publish/images/raw/arrow_block.png new file mode 100644 index 0000000000..58b8152642 Binary files /dev/null and b/site/trunk/site-publish/images/raw/arrow_block.png differ diff --git a/site/trunk/site-publish/images/raw/arrow_closing_active.png b/site/trunk/site-publish/images/raw/arrow_closing_active.png new file mode 100644 index 0000000000..1247788c29 Binary files /dev/null and b/site/trunk/site-publish/images/raw/arrow_closing_active.png differ diff --git a/site/trunk/site-publish/images/raw/arrow_opening_active.png b/site/trunk/site-publish/images/raw/arrow_opening_active.png new file mode 100644 index 0000000000..59c655200d Binary files /dev/null and b/site/trunk/site-publish/images/raw/arrow_opening_active.png differ diff --git a/site/trunk/site-publish/images/raw/attach-file.png b/site/trunk/site-publish/images/raw/attach-file.png new file mode 100644 index 0000000000..7ea7a2e657 Binary files /dev/null and b/site/trunk/site-publish/images/raw/attach-file.png differ diff --git a/site/trunk/site-publish/images/raw/attachment-icons.png b/site/trunk/site-publish/images/raw/attachment-icons.png new file mode 100644 index 0000000000..0c4dfa746f Binary files /dev/null and b/site/trunk/site-publish/images/raw/attachment-icons.png differ diff --git a/site/trunk/site-publish/images/raw/blogentry.png b/site/trunk/site-publish/images/raw/blogentry.png new file mode 100644 index 0000000000..659dc5ac7b Binary files /dev/null and b/site/trunk/site-publish/images/raw/blogentry.png differ diff --git a/site/trunk/site-publish/images/raw/blogentry_24.png b/site/trunk/site-publish/images/raw/blogentry_24.png new file mode 100644 index 0000000000..cd5475f780 Binary files /dev/null and b/site/trunk/site-publish/images/raw/blogentry_24.png differ diff --git a/site/trunk/site-publish/images/raw/blogentry_add_32.png b/site/trunk/site-publish/images/raw/blogentry_add_32.png new file mode 100644 index 0000000000..936741b51a Binary files /dev/null and b/site/trunk/site-publish/images/raw/blogentry_add_32.png differ diff --git a/site/trunk/site-publish/images/raw/blogentry_faded_16.png b/site/trunk/site-publish/images/raw/blogentry_faded_16.png new file mode 100644 index 0000000000..fc13c64a7d Binary files /dev/null and b/site/trunk/site-publish/images/raw/blogentry_faded_16.png differ diff --git a/site/trunk/site-publish/images/raw/bullet_done.png b/site/trunk/site-publish/images/raw/bullet_done.png new file mode 100644 index 0000000000..a1d9a11c3a Binary files /dev/null and b/site/trunk/site-publish/images/raw/bullet_done.png differ diff --git a/site/trunk/site-publish/images/raw/bullet_inprogress.png b/site/trunk/site-publish/images/raw/bullet_inprogress.png new file mode 100644 index 0000000000..bc2f5cad45 Binary files /dev/null and b/site/trunk/site-publish/images/raw/bullet_inprogress.png differ diff --git a/site/trunk/site-publish/images/raw/bullet_notdone.png b/site/trunk/site-publish/images/raw/bullet_notdone.png new file mode 100644 index 0000000000..5bbcdcea28 Binary files /dev/null and b/site/trunk/site-publish/images/raw/bullet_notdone.png differ diff --git a/site/trunk/site-publish/images/raw/comment-add.png b/site/trunk/site-publish/images/raw/comment-add.png new file mode 100644 index 0000000000..bf99fdf984 Binary files /dev/null and b/site/trunk/site-publish/images/raw/comment-add.png differ diff --git a/site/trunk/site-publish/images/raw/comment-del.png b/site/trunk/site-publish/images/raw/comment-del.png new file mode 100644 index 0000000000..04fb743da8 Binary files /dev/null and b/site/trunk/site-publish/images/raw/comment-del.png differ diff --git a/site/trunk/site-publish/images/raw/comment.png b/site/trunk/site-publish/images/raw/comment.png new file mode 100644 index 0000000000..57a88d19ce Binary files /dev/null and b/site/trunk/site-publish/images/raw/comment.png differ diff --git a/site/trunk/site-publish/images/raw/configure_icon_16.png b/site/trunk/site-publish/images/raw/configure_icon_16.png new file mode 100644 index 0000000000..2958966b11 Binary files /dev/null and b/site/trunk/site-publish/images/raw/configure_icon_16.png differ diff --git a/site/trunk/site-publish/images/raw/discussion-large.png b/site/trunk/site-publish/images/raw/discussion-large.png new file mode 100644 index 0000000000..c44a99e7da Binary files /dev/null and b/site/trunk/site-publish/images/raw/discussion-large.png differ diff --git a/site/trunk/site-publish/images/raw/edit_16.png b/site/trunk/site-publish/images/raw/edit_16.png new file mode 100644 index 0000000000..bb8dcc2526 Binary files /dev/null and b/site/trunk/site-publish/images/raw/edit_16.png differ diff --git a/site/trunk/site-publish/images/raw/edit_only_16.png b/site/trunk/site-publish/images/raw/edit_only_16.png new file mode 100644 index 0000000000..47628b6f29 Binary files /dev/null and b/site/trunk/site-publish/images/raw/edit_only_16.png differ diff --git a/site/trunk/site-publish/images/raw/group-anyone.png b/site/trunk/site-publish/images/raw/group-anyone.png new file mode 100644 index 0000000000..b11a740ac2 Binary files /dev/null and b/site/trunk/site-publish/images/raw/group-anyone.png differ diff --git a/site/trunk/site-publish/images/raw/history_arrow.png b/site/trunk/site-publish/images/raw/history_arrow.png new file mode 100644 index 0000000000..6de6af20ca Binary files /dev/null and b/site/trunk/site-publish/images/raw/history_arrow.png differ diff --git a/site/trunk/site-publish/images/raw/home_16_faded.png b/site/trunk/site-publish/images/raw/home_16_faded.png new file mode 100644 index 0000000000..44b1208853 Binary files /dev/null and b/site/trunk/site-publish/images/raw/home_16_faded.png differ diff --git a/site/trunk/site-publish/images/raw/import_mbox_16.png b/site/trunk/site-publish/images/raw/import_mbox_16.png new file mode 100644 index 0000000000..187b451c36 Binary files /dev/null and b/site/trunk/site-publish/images/raw/import_mbox_16.png differ diff --git a/site/trunk/site-publish/images/raw/left-nav-theme.png b/site/trunk/site-publish/images/raw/left-nav-theme.png new file mode 100644 index 0000000000..b1400e766f Binary files /dev/null and b/site/trunk/site-publish/images/raw/left-nav-theme.png differ diff --git a/site/trunk/site-publish/images/raw/link-attachment.png b/site/trunk/site-publish/images/raw/link-attachment.png new file mode 100644 index 0000000000..3d85098e55 Binary files /dev/null and b/site/trunk/site-publish/images/raw/link-attachment.png differ diff --git a/site/trunk/site-publish/images/raw/link-external.png b/site/trunk/site-publish/images/raw/link-external.png new file mode 100644 index 0000000000..3bd2cba422 Binary files /dev/null and b/site/trunk/site-publish/images/raw/link-external.png differ diff --git a/site/trunk/site-publish/images/raw/list-pages-large.png b/site/trunk/site-publish/images/raw/list-pages-large.png new file mode 100644 index 0000000000..c3267cc3c4 Binary files /dev/null and b/site/trunk/site-publish/images/raw/list-pages-large.png differ diff --git a/site/trunk/site-publish/images/raw/list-pages.png b/site/trunk/site-publish/images/raw/list-pages.png new file mode 100644 index 0000000000..db994aa68a Binary files /dev/null and b/site/trunk/site-publish/images/raw/list-pages.png differ diff --git a/site/trunk/site-publish/images/raw/list-pages_faded_16.png b/site/trunk/site-publish/images/raw/list-pages_faded_16.png new file mode 100644 index 0000000000..3397bafaad Binary files /dev/null and b/site/trunk/site-publish/images/raw/list-pages_faded_16.png differ diff --git a/site/trunk/site-publish/images/raw/list_blogentries_32.png b/site/trunk/site-publish/images/raw/list_blogentries_32.png new file mode 100644 index 0000000000..9b4e59dd5f Binary files /dev/null and b/site/trunk/site-publish/images/raw/list_blogentries_32.png differ diff --git a/site/trunk/site-publish/images/raw/list_less_pages_16.png b/site/trunk/site-publish/images/raw/list_less_pages_16.png new file mode 100644 index 0000000000..758a541d20 Binary files /dev/null and b/site/trunk/site-publish/images/raw/list_less_pages_16.png differ diff --git a/site/trunk/site-publish/images/raw/list_mail_16.png b/site/trunk/site-publish/images/raw/list_mail_16.png new file mode 100644 index 0000000000..77f1f4fbbf Binary files /dev/null and b/site/trunk/site-publish/images/raw/list_mail_16.png differ diff --git a/site/trunk/site-publish/images/raw/list_mail_32.png b/site/trunk/site-publish/images/raw/list_mail_32.png new file mode 100644 index 0000000000..d11da48576 Binary files /dev/null and b/site/trunk/site-publish/images/raw/list_mail_32.png differ diff --git a/site/trunk/site-publish/images/raw/list_mail_faded_16.png b/site/trunk/site-publish/images/raw/list_mail_faded_16.png new file mode 100644 index 0000000000..b367ad581d Binary files /dev/null and b/site/trunk/site-publish/images/raw/list_mail_faded_16.png differ diff --git a/site/trunk/site-publish/images/raw/locked-pages_16.png b/site/trunk/site-publish/images/raw/locked-pages_16.png new file mode 100644 index 0000000000..87010e2c13 Binary files /dev/null and b/site/trunk/site-publish/images/raw/locked-pages_16.png differ diff --git a/site/trunk/site-publish/images/raw/mail_16.png b/site/trunk/site-publish/images/raw/mail_16.png new file mode 100644 index 0000000000..d6f57305f0 Binary files /dev/null and b/site/trunk/site-publish/images/raw/mail_16.png differ diff --git a/site/trunk/site-publish/images/raw/mail_small.png b/site/trunk/site-publish/images/raw/mail_small.png new file mode 100644 index 0000000000..4df5ebd19d Binary files /dev/null and b/site/trunk/site-publish/images/raw/mail_small.png differ diff --git a/site/trunk/site-publish/images/raw/mail_thread_16.png b/site/trunk/site-publish/images/raw/mail_thread_16.png new file mode 100644 index 0000000000..e9470a98bb Binary files /dev/null and b/site/trunk/site-publish/images/raw/mail_thread_16.png differ diff --git a/site/trunk/site-publish/images/raw/main-theme.png b/site/trunk/site-publish/images/raw/main-theme.png new file mode 100644 index 0000000000..7517e23887 Binary files /dev/null and b/site/trunk/site-publish/images/raw/main-theme.png differ diff --git a/site/trunk/site-publish/images/raw/open-active.png b/site/trunk/site-publish/images/raw/open-active.png new file mode 100644 index 0000000000..38b287347a Binary files /dev/null and b/site/trunk/site-publish/images/raw/open-active.png differ diff --git a/site/trunk/site-publish/images/raw/page-add-child.png b/site/trunk/site-publish/images/raw/page-add-child.png new file mode 100644 index 0000000000..431b360098 Binary files /dev/null and b/site/trunk/site-publish/images/raw/page-add-child.png differ diff --git a/site/trunk/site-publish/images/raw/page-add-large.png b/site/trunk/site-publish/images/raw/page-add-large.png new file mode 100644 index 0000000000..d7a9597592 Binary files /dev/null and b/site/trunk/site-publish/images/raw/page-add-large.png differ diff --git a/site/trunk/site-publish/images/raw/page-add.png b/site/trunk/site-publish/images/raw/page-add.png new file mode 100644 index 0000000000..436f2dce7e Binary files /dev/null and b/site/trunk/site-publish/images/raw/page-add.png differ diff --git a/site/trunk/site-publish/images/raw/page-add_faded_16.png b/site/trunk/site-publish/images/raw/page-add_faded_16.png new file mode 100644 index 0000000000..b8a2ba45a9 Binary files /dev/null and b/site/trunk/site-publish/images/raw/page-add_faded_16.png differ diff --git a/site/trunk/site-publish/images/raw/page-del.png b/site/trunk/site-publish/images/raw/page-del.png new file mode 100644 index 0000000000..01f80e7b78 Binary files /dev/null and b/site/trunk/site-publish/images/raw/page-del.png differ diff --git a/site/trunk/site-publish/images/raw/page-hierarchy-large.png b/site/trunk/site-publish/images/raw/page-hierarchy-large.png new file mode 100644 index 0000000000..5ca7520b7b Binary files /dev/null and b/site/trunk/site-publish/images/raw/page-hierarchy-large.png differ diff --git a/site/trunk/site-publish/images/raw/page-hierarchy.png b/site/trunk/site-publish/images/raw/page-hierarchy.png new file mode 100644 index 0000000000..371d6a6a23 Binary files /dev/null and b/site/trunk/site-publish/images/raw/page-hierarchy.png differ diff --git a/site/trunk/site-publish/images/raw/page-history.png b/site/trunk/site-publish/images/raw/page-history.png new file mode 100644 index 0000000000..ac85c07e3a Binary files /dev/null and b/site/trunk/site-publish/images/raw/page-history.png differ diff --git a/site/trunk/site-publish/images/raw/page-notification.png b/site/trunk/site-publish/images/raw/page-notification.png new file mode 100644 index 0000000000..eb0c9d73d0 Binary files /dev/null and b/site/trunk/site-publish/images/raw/page-notification.png differ diff --git a/site/trunk/site-publish/images/raw/plus_sign.png b/site/trunk/site-publish/images/raw/plus_sign.png new file mode 100644 index 0000000000..e2f8774b24 Binary files /dev/null and b/site/trunk/site-publish/images/raw/plus_sign.png differ diff --git a/site/trunk/site-publish/images/raw/rss.png b/site/trunk/site-publish/images/raw/rss.png new file mode 100644 index 0000000000..0765b6f3c9 Binary files /dev/null and b/site/trunk/site-publish/images/raw/rss.png differ diff --git a/site/trunk/site-publish/images/raw/rss_32.png b/site/trunk/site-publish/images/raw/rss_32.png new file mode 100644 index 0000000000..f200b24633 Binary files /dev/null and b/site/trunk/site-publish/images/raw/rss_32.png differ diff --git a/site/trunk/site-publish/images/raw/space-add-large.png b/site/trunk/site-publish/images/raw/space-add-large.png new file mode 100644 index 0000000000..1f048f1ebf Binary files /dev/null and b/site/trunk/site-publish/images/raw/space-add-large.png differ diff --git a/site/trunk/site-publish/images/raw/space-add.png b/site/trunk/site-publish/images/raw/space-add.png new file mode 100644 index 0000000000..4338ac5a36 Binary files /dev/null and b/site/trunk/site-publish/images/raw/space-add.png differ diff --git a/site/trunk/site-publish/images/raw/space-del.png b/site/trunk/site-publish/images/raw/space-del.png new file mode 100644 index 0000000000..eddf94c1b7 Binary files /dev/null and b/site/trunk/site-publish/images/raw/space-del.png differ diff --git a/site/trunk/site-publish/images/raw/space-edit.png b/site/trunk/site-publish/images/raw/space-edit.png new file mode 100644 index 0000000000..7113adb1c6 Binary files /dev/null and b/site/trunk/site-publish/images/raw/space-edit.png differ diff --git a/site/trunk/site-publish/images/raw/space-notification.png b/site/trunk/site-publish/images/raw/space-notification.png new file mode 100644 index 0000000000..c16afa08b0 Binary files /dev/null and b/site/trunk/site-publish/images/raw/space-notification.png differ diff --git a/site/trunk/site-publish/images/raw/test-ran-green.png b/site/trunk/site-publish/images/raw/test-ran-green.png new file mode 100644 index 0000000000..43e13371e2 Binary files /dev/null and b/site/trunk/site-publish/images/raw/test-ran-green.png differ diff --git a/site/trunk/site-publish/images/raw/test-ran-red.png b/site/trunk/site-publish/images/raw/test-ran-red.png new file mode 100644 index 0000000000..2c26dc76ff Binary files /dev/null and b/site/trunk/site-publish/images/raw/test-ran-red.png differ diff --git a/site/trunk/site-publish/images/raw/tree_square.png b/site/trunk/site-publish/images/raw/tree_square.png new file mode 100644 index 0000000000..869c87d973 Binary files /dev/null and b/site/trunk/site-publish/images/raw/tree_square.png differ diff --git a/site/trunk/site-publish/images/raw/uat-test-theme.png b/site/trunk/site-publish/images/raw/uat-test-theme.png new file mode 100644 index 0000000000..ddbe239079 Binary files /dev/null and b/site/trunk/site-publish/images/raw/uat-test-theme.png differ diff --git a/site/trunk/site-publish/images/raw/user_small.png b/site/trunk/site-publish/images/raw/user_small.png new file mode 100644 index 0000000000..6272d9ab6c Binary files /dev/null and b/site/trunk/site-publish/images/raw/user_small.png differ diff --git a/site/trunk/site-publish/images/raw/watch-large.png b/site/trunk/site-publish/images/raw/watch-large.png new file mode 100644 index 0000000000..560d038c16 Binary files /dev/null and b/site/trunk/site-publish/images/raw/watch-large.png differ diff --git a/site/trunk/site-publish/images/raw/watch_16.png b/site/trunk/site-publish/images/raw/watch_16.png new file mode 100644 index 0000000000..9c445a6cbe Binary files /dev/null and b/site/trunk/site-publish/images/raw/watch_16.png differ diff --git a/site/trunk/site-publish/images/raw/web_faded_16.png b/site/trunk/site-publish/images/raw/web_faded_16.png new file mode 100644 index 0000000000..d6fd7140e4 Binary files /dev/null and b/site/trunk/site-publish/images/raw/web_faded_16.png differ diff --git a/site/trunk/site-publish/images/themes/left-nav-theme.gif b/site/trunk/site-publish/images/themes/left-nav-theme.gif new file mode 100644 index 0000000000..47fe1a7ab9 Binary files /dev/null and b/site/trunk/site-publish/images/themes/left-nav-theme.gif differ diff --git a/site/trunk/site-publish/images/themes/main-theme.gif b/site/trunk/site-publish/images/themes/main-theme.gif new file mode 100644 index 0000000000..01a04b4883 Binary files /dev/null and b/site/trunk/site-publish/images/themes/main-theme.gif differ diff --git a/site/trunk/site-publish/images/themes/no-icon.gif b/site/trunk/site-publish/images/themes/no-icon.gif new file mode 100644 index 0000000000..f0f5efe178 Binary files /dev/null and b/site/trunk/site-publish/images/themes/no-icon.gif differ diff --git a/site/trunk/site-publish/images/xtree/I.png b/site/trunk/site-publish/images/xtree/I.png new file mode 100644 index 0000000000..e8512fb911 Binary files /dev/null and b/site/trunk/site-publish/images/xtree/I.png differ diff --git a/site/trunk/site-publish/images/xtree/L.png b/site/trunk/site-publish/images/xtree/L.png new file mode 100644 index 0000000000..eb334edaea Binary files /dev/null and b/site/trunk/site-publish/images/xtree/L.png differ diff --git a/site/trunk/site-publish/images/xtree/Lminus.png b/site/trunk/site-publish/images/xtree/Lminus.png new file mode 100644 index 0000000000..f7c43c0aa3 Binary files /dev/null and b/site/trunk/site-publish/images/xtree/Lminus.png differ diff --git a/site/trunk/site-publish/images/xtree/Lplus.png b/site/trunk/site-publish/images/xtree/Lplus.png new file mode 100644 index 0000000000..848ec2fc3b Binary files /dev/null and b/site/trunk/site-publish/images/xtree/Lplus.png differ diff --git a/site/trunk/site-publish/images/xtree/T.png b/site/trunk/site-publish/images/xtree/T.png new file mode 100644 index 0000000000..3017325406 Binary files /dev/null and b/site/trunk/site-publish/images/xtree/T.png differ diff --git a/site/trunk/site-publish/images/xtree/Thumbs.db b/site/trunk/site-publish/images/xtree/Thumbs.db new file mode 100644 index 0000000000..34d625a329 Binary files /dev/null and b/site/trunk/site-publish/images/xtree/Thumbs.db differ diff --git a/site/trunk/site-publish/images/xtree/Tminus.png b/site/trunk/site-publish/images/xtree/Tminus.png new file mode 100644 index 0000000000..2260e4248c Binary files /dev/null and b/site/trunk/site-publish/images/xtree/Tminus.png differ diff --git a/site/trunk/site-publish/images/xtree/Tplus.png b/site/trunk/site-publish/images/xtree/Tplus.png new file mode 100644 index 0000000000..2c8d8f4fd3 Binary files /dev/null and b/site/trunk/site-publish/images/xtree/Tplus.png differ diff --git a/site/trunk/site-publish/images/xtree/blank.png b/site/trunk/site-publish/images/xtree/blank.png new file mode 100644 index 0000000000..cee9cd37a1 Binary files /dev/null and b/site/trunk/site-publish/images/xtree/blank.png differ diff --git a/site/trunk/site-publish/images/xtree/file.png b/site/trunk/site-publish/images/xtree/file.png new file mode 100644 index 0000000000..a20c6fa0c8 Binary files /dev/null and b/site/trunk/site-publish/images/xtree/file.png differ diff --git a/site/trunk/site-publish/images/xtree/foldericon.png b/site/trunk/site-publish/images/xtree/foldericon.png new file mode 100644 index 0000000000..2684748b0a Binary files /dev/null and b/site/trunk/site-publish/images/xtree/foldericon.png differ diff --git a/site/trunk/site-publish/images/xtree/new.png b/site/trunk/site-publish/images/xtree/new.png new file mode 100644 index 0000000000..a20c6fa0c8 Binary files /dev/null and b/site/trunk/site-publish/images/xtree/new.png differ diff --git a/site/trunk/site-publish/images/xtree/openfoldericon.png b/site/trunk/site-publish/images/xtree/openfoldericon.png new file mode 100644 index 0000000000..15fcd56711 Binary files /dev/null and b/site/trunk/site-publish/images/xtree/openfoldericon.png differ diff --git a/site/trunk/site-publish/images/xtree/pspbrwse.jbf b/site/trunk/site-publish/images/xtree/pspbrwse.jbf new file mode 100644 index 0000000000..1485c07673 Binary files /dev/null and b/site/trunk/site-publish/images/xtree/pspbrwse.jbf differ diff --git a/site/trunk/site-publish/implementationscript.html b/site/trunk/site-publish/implementationscript.html new file mode 100644 index 0000000000..8d12d08459 --- /dev/null +++ b/site/trunk/site-publish/implementationscript.html @@ -0,0 +1,136 @@ + + + + + + + implementation.script : Apache Tuscany + + + + + + + + + + + + + +
+ + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > implementation.script + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+ + + + +
Development
+ +

<implementation.script>

+ +

The Tuscany Java SCA runtime supports implementing SCA components in a wide variety of dynamic or scripting languages by using the <implementation.script> SCDL extension.

+ +

Any language that supports the "Scripting for Java" APIs defined by JSR-223 is supported, this includes Groovy, JavaScript, JRuby, Jython, and many others.

+ +

To use these languages the SCA assembly SCDL is extended with an "implementation.script" element which has the following options:

+ + +
+
<implementation.script [ script="" | language="" ] >
+     [inline src]
+</implementation.script>
+
+ +

The source code for the script maybe defined in a seperate file pointed to by the 'script=' attribute, or the source code maybe embedded within the SCDL inline inside the <implementation.script> element.

+ +

The 'language=' attribute defines the language of the program. The language attribute is optional when the source code is in a separate file in which case the file extension of the file is used to determine the language.

+ +

Some examples:

+ + +

A Ruby program defined in a file 'myScript.rb' in a folder named 'test':

+ +
+
<implementation.script script="test/myScript.rb"/>
+
+ + +

A JavaScript program defined inline:

+ +
+
<implementation.script language="js">
+      function sayHello(name) {
+         return "Hello " + name;
+      }
+</implementation.script>
+
+ + +

When using inline scripts which contain special characters such as XML markup you may need to enclose the source within a CDATA region, for example:

+ +
+
<implementation.script language="js"><![CDATA[
+      function sayHello(inXML) {
+         return <sayHelloResponse>Hello { inXML..name }</sayHelloResponse>;
+      }
+]]></implementation.script>
+
+ +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libraries.png b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libraries.png new file mode 100644 index 0000000000..6d45c34a9d Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libraries.png differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libs.png b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libs.png new file mode 100644 index 0000000000..112e04fd99 Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libs.png differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libs.png.jpeg b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libs.png.jpeg new file mode 100644 index 0000000000..4c60fe104a Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-libs.png.jpeg differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-sources.png b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-sources.png new file mode 100644 index 0000000000..a49d800983 Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-sources.png differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-sources.png.jpeg b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-sources.png.jpeg new file mode 100644 index 0000000000..b432e7aac0 Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project-sources.png.jpeg differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project.png b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project.png new file mode 100644 index 0000000000..f6ed9e0909 Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project.png differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project.png.jpeg b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project.png.jpeg new file mode 100644 index 0000000000..4d4d731c4a Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project.png.jpeg differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project2.png b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project2.png new file mode 100644 index 0000000000..f6ed9e0909 Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project2.png differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project2.png.jpeg b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project2.png.jpeg new file mode 100644 index 0000000000..4d4d731c4a Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/create-java-project2.png.jpeg differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/project-properties.png b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/project-properties.png new file mode 100644 index 0000000000..af4ef71404 Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/project-properties.png differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/project-properties.png.jpeg b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/project-properties.png.jpeg new file mode 100644 index 0000000000..9aa8c97c36 Binary files /dev/null and b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.data/project-properties.png.jpeg differ diff --git a/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.html b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.html new file mode 100644 index 0000000000..0aee9df74d --- /dev/null +++ b/site/trunk/site-publish/import-existing-tuscany-sca-projects-into-eclipse.html @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + Apache Tuscany : Import existing Tuscany SCA projects into Eclipse + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Import existing Tuscany SCA projects into Eclipse + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

There is already a page that describes how to get started with Eclipse by building a new Tuscany SCA project from scratch. How do you though use the various existing samples and examples that are provided with Tuscany from within Eclipse? Here we'll provide some instructions about how to do just that for both the Maven user and the non-Maven user. As an example we'll look specifically at how to import the introducing-trips contributions and the jumpstart launcher that runs it from the Tuscany SCA Travel Sample. We'll also explain how to use the same approach to import other samples such as the samples in the Tuscany SCA Java binary distribution and the complete travel sample code.

+ +

These instructions assume that the sample code being loaded into Eclipse has been downloaded and unzipped and the sample modules have already been compiled using Maven or Ant following the instructions in the sample's README. This is important because some of the source in sample modules is generated during the compile stage and you'll need to import that into Eclipse along with the other source code and resources that the sample modules contain. These instructions were written using Eclipse 3.5.2.

+ +

Both of the approaches described below import the sample modules into Eclipse without copying them. This means that any edits to the sample resources that you make in Eclipse will result in changes in the directories where you unzipped the sample, and you won't see copies of these projects appear in the Eclipse workspace directory on disc. This is generally a useful approach as it lets you work directly on projects outside of the Eclipse workspace. In the case of the travel sample it's particularly important because there are some cross references between the various modules in the sample. If you copy the projects out of the sample structure they won't run properly without further editing.

+ + +

1 - For the Maven user

+ +

1.1 - Creating Eclipse project files

+ +

Maven has a plugin which will convert a Maven project into an Eclipse project. For example, to load the travel sample's introducing-trips contribution into Eclipse as a project first do the following:

+ +
+
+cd travelsample/contributions/introducing-trips
+mvn eclipse:eclipse
+
+
+ +

That generates, amongst other things, .classpath and .project files into the introducing-trips directory. These files effectively make the introducing-trips module an Eclipse project that can be loaded directly into Eclipse. This Eclipse project will reference dependencies in the local Maven repository, based on the contents of the pom.xml file. These dependency references are constructed using an Eclipse classpath variable called M2_REPO.

+ +

The previous example shows how to run a mvn command to create a single Eclipse project. It's often useful to run a single mvn command from a top-level directory to create multiple Eclipse projects. For example, to create Eclipse projects for all the samples in the Tuscany SCA Java 1.6.1 (or later 1.x) binary distribution, you can do the following:

+ +
+
+cd samples
+mvn eclipse:eclipse
+
+
+ +

This runs the mvn eclipse:eclipse command for all the samples under the top-level samples directory. As well as being more convenient than running a mvn eclipse:eclipse command for each sample, using a single mvn eclipse:eclipse command from a top-level directory enables the Maven plugin to discover any dependency relationships between the samples and create corresponding dependency relationships between the generated Eclipse projects. You can do this for the complete travel sample by doing the following:

+ +
+
+cd travelsample
+mvn eclipse:eclipse
+
+
+ +

1.2 - Setting the M2_REPO variable

+ +

Before loading the project into Eclipse you need to set M2_REPO as a classpath variable in your workspace to tell it where the Maven repository is.

+ +

You can do this with Maven using the following command.

+ +

mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo

+ +

Alternatively you can do it manually by opening the Eclipse workspace you’re going to use and then:

+ +

Select Window/Preferences
+From the resulting “Preferences” dialog select Java/Build Path/Classpath Variables
+Select the “New…” button
+In the “Name:” field type M2_REPO
+In the “Path:” field type <path to your maven repo>

+ +

1.3 - Loading an existing project into Eclipse

+ +

Once M2_REPO is set you can load the project(s) into Eclipse by opening the Eclipse workspace you’re going to use and then:

+ +

Select menu File/Import…
+From the resulting “Select” dialog box select General/Existing Projects into Workspace
+From the resulting “Import Projects” dialog box select the “Browse…” button to locate the directory containing the project(s) to import
+Select “Finish”

+ +

For example, to load the contributions/introducing-trips project from the travel sample, you would select the travelsample/contributions/introducing-trips directory. To load all the Tuscany binary distribution samples you would select the samples directory, and to load the complete travel sample you would select the travelsample directory.

+ +

The project should now appear in your workspace.

+ +

1.4 - Running the sample

+ +

Now you have introducing-trips loaded you can repeat the process for the travel sample launchers/jumpstart module. Repeat step 1.1 for launchers/jumpstart and then load it into Eclipse with step 1.3. You don't need to repeat step 1.2 as M2_REPO will remain set.

+ +

Now open up the scatours-launcher-jumpstart project in Eclipse (the project name comes from the Maven module name specified in the pom.xml file) and look for the JumpstartLauncher.java file. If you right click on that file and select Run As Application the sample should run. Alternatively you can select Debug As Application if you want to set debugging breakpoints.

+ +

You can run other samples by finding the main class and selecting Run As Application.

+ +

2 - For the non-Maven user

+ +

Maven gives a fair bit of help in creating Eclipse projects from existing project. Most of the effort is involved in working out what the dependencies are.

+ +

To import projects without using Maven you first need to make all of the Tuscany libraries available to the SCA projects you'll be loading into Eclipse. You can do this by creating a TUSCANY library variable. Once you have this set you can create new projects, load existing resources into them and associate them with the TUSCANY variable so that all the dependencies are satisfied.

+ +

2.1 - Install the Tuscany distribution

+ +

Follow the steps detailing in the "Install the Tuscany distribution" section of the page that discussed how to get started with Eclipse. For the travel sample you'll need to install the 1.6 (or later 1.x) release of the Tuscany SCA Java runtime.

+ +

2.2 - Setup Eclipse for Tuscany

+ +

Follow the steps detailing in the "Setup Eclipse for Tuscany" section of the page that discussed how to get started with Eclipse. For the travel sample you'll need to install the 1.6 (or later 1.x) release of the Tuscany SCA Java runtime. It's at this stage that the TUSCANY library variable gets set.

+ +

2.3 - Create a Java project to contain the SCA artifacts

+ +

Select File/New/Java Project to open the "Create a Java Project" dialog and the give the project a sensible name.
+

+ +

Note that the "Create project from existing source" option is selected and the location of the introducing-trips project has been specified.

+ +

Now press the "Next >" button

+ +

2.4 - Import the SCA artifacts

+ +

The next panel allows you to set up the structure of the new project. The source tab allows you to determine where the source code and other resources can be found.
+In this case you can just leave the defaults. You'll need to configure the introducing-trips/src/main/resources folder as a source folder for the project but it's easier to do this once the project has been created.

+ +

2.5 - Specifying dependency projects

+ +

The Projects tab allows you to specify which other projects this project depends on. Some of the travel sample modules rely on other other modules, for example, the contributions/common module. However this is not the case here so you can just leave this tab with the default setting.

+ +

2.6 - Specifying other dependencies

+ +

The Libraries tab allows you to specify the Tuscany jars that are required to compile this module.

+ +

+ +

You've already configured the TUSCANY library in step 2.2 so you can select this using the Add Library button an selecting User Library in the resulting dialog.

+ +

Once that's done you can press the Finish button at the bottom of the dialog. The result should be an introducing-trips project.

+ +

2.7 - Adding extra source folders

+ +

Eclipse doesn't automatically pick up some of the folders that have been configured in the Maven modules. These are usually:

+ +
+
+src/main/resources
+src/test/resources
+target/jaxws-source
+
+
+ +

You need to configure these manually as source directories. Right click on the project and select "Properties" options.

+ +

+ +

Now press the "Add Folder" button and select the project folder that you want to include as a source folder, in this case src/main/resources. Press OK to return.

+ +

2.8 - Running the sample

+ +

To run the sample you need to import launchers/jumpstart by repeating steps 2.3, 2.4, 2.5, 2.6 and 2.7 for the jumpstart project. There is extra work required at step 2.6 this time though. The jumpstart module has unit tests that depend on the junit-4.5.jar that ships in the tuscany-scatours-1.0\lib\junit directory. Add this as a dependency of the project using the "Add External Jars..." button.

+ +

Once done you should have a jumpstart project that compiles without errors.

+ +

Now open up the scatours-launcher-jumpstart project in Eclipse (the project name comes from the Maven module name specified in the pom.xml file) and look for the JumpstartLauncher.java file. If you right click on that file and select Run As Application the sample should run.

+ +

3 - Using the Maven plugin for Eclipse

+ +

3.1 - Install the m2eclipse plugin into Eclipse

+ +

m2eclipse offers integration of Maven with the Eclipse platform. It provides two plugins which give you different levels of integration:

+ +
    +
  • m2eclipse Core - will be installing of the core Wizards, the POM Editor, Maven Repository integration, and Maven integration.
  • +
  • m2eclipse Extras - will be installing more features like Maven SCM integration, Eclipse Web Tools Platform integration and others.
  • +
+ + +

In order to install the plugins, open Eclipse and go to Help -> Install New Software.... In the newly opened window click Add... from the Work with area and enter the following update sites:

+ + + + +

Continue installation by selecting which modules to install and accepting terms of agreement.

+ +

m2eclipse uses an embedded installation of Maven by default. This can be changed with a specific instance of Maven found on the disk by entering the Windows -> Preferences menu in Eclipse. Click the Maven section and all the Maven integration related options will be displayed. In the Installations category, changes can be performed regarding the Maven instance and configuration file to use.

+ +

3.2 - Import the SCA artifacts

+ +

Go to File -> Import... in the Eclipse menu. From the Maven category, choose Existing Maven Projects and click Next. In the next step, choose a root directory and the plugin will show you all the Maven projects inside it and it's subdirectories. Choose one of them and click Next. From here on, m2eclipse will take care of resolving the dependencies, generating the Eclipse specific files.

+ +

Notice the project icon containing an M in the top left corner indicating the Maven nature of the project. To disable the Maven nature of a project, right click on the project, go to the Maven context menu and click Disable Dependency Management.

+ +

3.3 - Running SCA contributions and webapps

+ +

Once imported, Maven projects can be run in Eclipse using the well-known context menu Run As and choosing the appropriate category.

+ +

Also, Maven related tasks (goals like compile, test, package, install, etc.) can be run by using the project context menu and going to the Maven sub-menu.

+ +

Web applications can also be run from inside the Servers view as the m2eclipse extras plugin provides integration with Eclipse WTP. This enables Eclipse to recognize web applications managed by Maven. To add an application to a server, right click the server in the Servers view and go to Add and Remove.... Select which apps to publish to a particular server. Managing server state (starting, stopping, restarting, starting in debug mode) can be done using the provided buttons in the Servers view. Source code or resource changes are automatically synchronized with the published version on the server. The view also indicates if the application server needs to be restarted in order to apply major changes.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/incubator-m2.html b/site/trunk/site-publish/incubator-m2.html new file mode 100644 index 0000000000..a1f5b92e3d --- /dev/null +++ b/site/trunk/site-publish/incubator-m2.html @@ -0,0 +1,185 @@ + + + + + + + Incubator-M2 : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Releases > Incubator-M2 + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

The SCA Java Incubator-M2 was released in Nov 2006.

+ +

Windows

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Description File
Signature
Binary Tuscany M2 SCA tuscany-sca-1.0-incubator-M2-bin.zip     PGP
Source Tuscany M2 SCA tuscany-sca-1.0-incubator-M2-src.zip     PGP
Source Tuscany M2 SCA Samples
tuscany-sca-1.0-incubator-M2-samples.zip
    PGP
Source Tuscany Commonj Specs tuscany-spec-commonj-1.1-incubator-M2-src.zip
    PGP
Source Tuscany SCA Specs.r.0.95
tuscany-spec-sca-r0.95-incubator-M2-src.zip     PGP
+ +

Linux

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Description
File
Signature
Binary Tuscany M2 SCA tuscany-sca-1.0--incubator-M2-bin.tar.gz     PGP
Source Tuscany M2 SCA tuscany-sca-1.0-incubator-M2-src.tar.gz     PGP
Source Tuscany M2 SCA Samples tuscany-sca-1.0-incubator-M2-samples.tar.gz
    PGP
Source Tuscany Commonj Specs tuscany-spec-commonj-1.1-incubator-M2-src.tar.gz
    PGP
Source Tuscany SCA Specs.r.0.95 tuscany-spec-sca-r0.95-incubator-M2-src.tar.gz     PGP
+ +

JavaDocs Archive

+ + + + + + + + + + + + + + + + + + + + + + +
Description File
Signature
Tuscany M2 SCA Javadocs tuscany-sca-1.0-incubator-M2-javadoc.zip     PGP
Tuscany Commonj Specs tuscany-spec-commonj-1.1-incubator-M2-javadoc.zip     PGP
Tuscany SCA Specs.r.0.95 tuscany-spec-sca-r0.95-incubator-M2-javadoc.zip     PGP
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/incubator-report-may-2007.html b/site/trunk/site-publish/incubator-report-may-2007.html new file mode 100644 index 0000000000..5f0cc09060 --- /dev/null +++ b/site/trunk/site-publish/incubator-report-may-2007.html @@ -0,0 +1,115 @@ + + + + + + + Incubator report - May 2007 : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > To Be Deleted > Incubator Reports > Incubator report - May 2007 + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

iPMC Reviewers: dims, jerenkrantz, yoavs, jukka, twl

+ +

Tuscany provides infrastructure for developing service-oriented applications based on Service Component Architecture (SCA) specification and Service Data Objects (SDO) specifications. These specifications were submitted to OASIS in March 2007 by OSOA (www.osoa.org)

+ + +

Top issue? Need to get back on track with agreed project goals, provide a stable codebase/SPIs, and follow up with regular releases. This should create an environment that will attract a growing and diverse community of users and developers. We are working towards this.

+ +

Community aspects:

+ +
    +
  • Voted in Adriano Crestani, an individual contributor, as a committer for his contributions to DAS project.
  • +
  • Voted in Andy Grove from RogueWave as a committer for his lengthy list of contributions to the SDO project.
  • +
  • Have been receiving many good user questions and have received good feedback on quality of responses that were provided.
  • +
  • Enhanced Tuscany website to improve information sharing. We are working on user and architecture guides for contributors or users of Tuscany.
  • +
  • Integration with Apache projects +
      +
    • Working with Apache Directory to provide DAS LDAP.
    • +
    • Integrated with BSF and Axis2.
    • +
    +
  • +
  • Fractal is working on integration with Tuscany SCA Java
  • +
  • 3 of the commmitters (Jeremy Boynes, Jim Marino and Meeraj)chose to start a new open source project called Fabric3 in March 2007.
  • +
+ + +

Code:

+
    +
  • Released M3 incubator release of Native SCA and SDO C++ in early May.
  • +
  • Formed Community Test Suite for SDO which has been receiving many contributions, over 300 tests.
  • +
  • In the process of releasing Java SDO Beta1 incubator release. It has community approval and is going through IPMC approval.
  • +
  • In the process of releasing SCA Java. This release is focused on improved usability, stability (stable SPIs) and modularity. Stable and simple SPIs and modularity enhance extensibility of SCA for integration with other open source projects.
  • +
+ + +

Note: OSOA is a collaboration group where the first version of SCA and SDO spec were developed, see: http://www.osoa.org

+ +
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/incubator-reports.html b/site/trunk/site-publish/incubator-reports.html new file mode 100644 index 0000000000..a0134a71b6 --- /dev/null +++ b/site/trunk/site-publish/incubator-reports.html @@ -0,0 +1,80 @@ + + + + + + + Incubator Reports : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > To Be Deleted > Incubator Reports + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ +
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/index.html b/site/trunk/site-publish/index.html new file mode 100644 index 0000000000..75cdfb095c --- /dev/null +++ b/site/trunk/site-publish/index.html @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + Apache Tuscany : Index + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Index + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +
Subprojects
+

SDO
+DAS

+
+ +

Welcome to Apache Tuscany

+

Apache Tuscany simplifies the task of developing SOA solutions by providing a comprehensive infrastructure for SOA development and management that is based on Service Component Architecture (SCA) standard. With SCA as it's foundation, Tuscany offers solution developers the following advantages:

+
    +
  • Provides a model for creating composite applications by defining the services in the fabric and their relationships with one another. The services can be implemented in any technology.
  • +
  • Enables service developers to create reusable services that only contain business logic. Protocols are pushed out of business logic and are handled through pluggable bindings. This lowers development cost.
  • +
  • Applications can easily adapt to infrastructure changes without recoding since protocols are handled via pluggable bindings and quality of services (transaction, security) are handled declaratively.
  • +
  • Existing applications can work with new SCA compositions. This allows for incremental growth towards a more flexible architecture, outsourcing or providing services to others.
  • +
+ + + + +
+ +

In addition, Tuscany is integrated with various technologies and offers:

+
    +
  • a wide range of bindings (pluggable protocols)
  • +
  • various component types including and not limited to Java, C++, BPEL, Spring and scripting
  • +
  • an end to end service and data solution which includes support for Jaxb and SDO
  • +
  • a lightweight runtime that works standalone or with other application servers
  • +
  • a modular architecture that makes it easy to integrate with different technologies and to extend
  • +
  • Integration with web20 technologies
  • +
+ + +

Apache Tuscany SCA is implemented in Java and C++ (referred to as Native) . Learn more about SCA

+ +

Please join us to create a practical SOA infrastructure that addresses the challenges which small to large scale businesses face.

+ +
+ +
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/introduction.html b/site/trunk/site-publish/introduction.html new file mode 100644 index 0000000000..03e1a5ecdf --- /dev/null +++ b/site/trunk/site-publish/introduction.html @@ -0,0 +1,124 @@ + + + + + + + + Introduction + + + + + + + +
+  Apache Tuscany > Index > SCA Java > User Guide > Introduction + +
+ + + + + + +
+
+ +
+ +
+ Added by Shelita Overton, last edited by Shelita Overton on Feb 09, 2007 + +
+ +
+
+

What Is SCA?

+ +

Service Component Architecture (SCA) is a simple model for creating service-oriented applications.

+ +

Service Oriented Architecture (SOA) is an architectural approach driven by the need to overcome the challenges of tightly coupled and department-specific applications. SOA promises benefits such as improved business agility, improved flexibility, cost reduction, and the easy sharing of information in heterogeneous and distributed environments.

+ +

Service Component Architecture (SCA) addresses the complexity of developing an SOA solution through its simple model for creating service-oriented applications for the whole enterprise - from the client to the back-end.

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/issue-management.html b/site/trunk/site-publish/issue-management.html new file mode 100644 index 0000000000..6db23de728 --- /dev/null +++ b/site/trunk/site-publish/issue-management.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Issue Management + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SDO Overview > SDO Java > Issue Management + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SDO Java Issues are managed in our JIRA environment. The components for the Tuscany SDO implementation are "Java SDO Implementation", "Java SDO Tools" and "Java SDO Samples"

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/issue-tracking.html b/site/trunk/site-publish/issue-tracking.html new file mode 100644 index 0000000000..7bebd196f1 --- /dev/null +++ b/site/trunk/site-publish/issue-tracking.html @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + Apache Tuscany : Issue Tracking + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Issue Tracking + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+

Reporting an Issue or Asking For New Features

+ +

Please use ApacheJIRA system to report bugs or request new features. First time users need to create a login.

+ +

Search the existing JIRAs to see if what you want to create is already there. If not, create a new one. Make sure JIRAs are categorized correctly using JIRA categories and are created under the correct component area. Please include as much information as possible in your JIRA to help resolve the issue quicker. This can include version of the software used, platforms running on, steps to reproduce, test case, details of your requirement or even a patch if you have one.

+ +

Submitting a Patch

+ +

Please follow the steps below to create a patch. It will be reviewed and committed by a committer in the project.

+ +
    +
  • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
  • +
  • Confirm that the problem is fixed and include a test case where possible to help the person who is applying the patch to verify the fix.
  • +
  • Generate the patch using svn diff File > patchfile
  • +
  • Try to give your patch files meaningful names, including the JIRA number
  • +
  • Add your patch file as an attachment to the associated JIRA issue +
      +
    • Clicking on the 'Patch Available' box in the screen where the patch is being submitted will help identify available patches quicker.
    • +
    +
  • +
+ + +

How do I get my JIRAs into a release?

+

You can always propose a release and drive the release with the content that you want. Another way to get a JIRA into a release is by providing a patch or working with other community members (volunteers) to help you get the problem fixed. You can also help by providing test cases.

+ +

Each release is managed by a release manager. Make sure that the Release Manager is aware of why a fix to a JIRA is important to your business. In general, the best attempt is made to include as many JIRAs as possible depending on the level of community help. The voting mechanism in the JIRA system can be used to raise the importance of a JIRA to the attention of the release manager. Adding comments in the JIRA would help the release manager understand why a JIRA is important to include in a given release.

+ +

How is a release done?

+

Anyone can volunteer to be a release manager and drive a release. Based on Apache guidelines, a release requires at least three PMC +1 votes and more +1s than -1s. A release can not be vetoed so a -1 does not block a release. The steps for how to create a Tuscany release are documented here

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/j2se-sample.html b/site/trunk/site-publish/j2se-sample.html new file mode 100644 index 0000000000..80f36e97c3 --- /dev/null +++ b/site/trunk/site-publish/j2se-sample.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + Apache Tuscany : J2SE Sample + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > J2SE Sample + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

RDB DAS Customer Sample

+ +

This stand-alone sample demonstrates the RDB Data Access Service in the context of a simple java application.
+So, this simple application covers all CRUD operations. The sample runs on Eclipse or from the command line, and employs a Derby database accessed via a DriverManager.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-das-please-remove.html b/site/trunk/site-publish/java-das-please-remove.html new file mode 100644 index 0000000000..ffcbb52726 --- /dev/null +++ b/site/trunk/site-publish/java-das-please-remove.html @@ -0,0 +1,118 @@ + + + + + + + + Java DAS - please remove + + + + + + + +
+  Apache Tuscany > Java DAS - please remove + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Mar 06, 2007 + +
+ +
+
+ +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-das.html b/site/trunk/site-publish/java-das.html new file mode 100644 index 0000000000..62936184e6 --- /dev/null +++ b/site/trunk/site-publish/java-das.html @@ -0,0 +1,119 @@ + + + + + + + + Java DAS + + + + + + + +
+  Apache Tuscany > Home > Java DAS + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Mar 07, 2007 +  (view change) + +
+ +
+
+ +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-implementation-model-for-event-processing.html b/site/trunk/site-publish/java-implementation-model-for-event-processing.html new file mode 100644 index 0000000000..f1e560b58a --- /dev/null +++ b/site/trunk/site-publish/java-implementation-model-for-event-processing.html @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java Implementation Model for Event Processing + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Event Processing > Java Implementation Model for Event Processing + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

This page describes the Java Implementation for Event Processing.

+ +

The Java Implementation for Event Processing is an extension of the standard SCA Java Implementation model. All the standard SCA Java implementation features continue to be available to Java implementations. The following features are added:

+
    +
  • Ability to define one or more methods of the implementation class to be consumer methods, consuming one or more event types
  • +
  • Ability to define a field or setter method of the implementation class as an event producer, with one or more business methods producing one or more event types 
  • +
  • Ability to define event types as Java POJO classes
  • +
+ + +

Event Types

+ +

Event types are defined through Java classes which are annotated with a @EventType annotation.  The @EventType annotation has a single parameter which is the name of the event type.

+
+
@EventType(ExampleEvent)
+public class ExampleEvent {
+
+     public String eventData;
+
+} // end class ExampleEvent
+
+
+

The name may be:

+
    +
  • unqualified, in which case the EventType name is qualified by the package name of the class itself
  • +
  • qualified, in which case the EventType name is used as it is declared
  • +
+ + +

Note that the Event Type name maps to an XSD QName using the Java-to-WSDL mapping as defined by JAX-WS.

+ +

The Event type(s) handled by a consumer method or a producer method is defined in one of two ways:

+
    +
  1. The method has a parameter that is of a class annotated with the @EventType annotation (of a single event type)
  2. +
  3. The method is itself annotated with the @EventTypes annotation for one or more event types - where the method parameter is of some generic type such as java.lang.Object which does not specify an EventType
  4. +
+ + +

Event Consumer methods

+ +

Each method of the implementation that is a consumer for events is annotated with a @Consumer annotation.  Each method must have a void return type and a single parameter that is either a specific event type or a superclass of one or more event types, including java.lang.Object, which is treated as the supertype of all event types.

+
+
public class ConsumerrExample {
+
+    private ExampleProducer eventProducer;
+
+    @Consumer(ExampleConsumer)
+    public void someBusinessMethod( ExampleEvent theEvent ) {
+        String businessData = theEvent.eventData;
+        // do business processing...
+    } // end method someBusinessMethod
+
+} // end class
+
+
+ +

Event Producers

+ +

Event Producers are identified as a Field or a Setter method annotated with a @Producer annotation

+ +

It is required that the Field or Setter method is typed by a Java interface.  The Java interface must have one or more methods, each of which has a void return type and a single parameter that is either a specific event type or a superclass of one or more event types, including java.lang.Object, which is treated as the supertype of all event types.

+
+
@Remotable
+public interface ExampleProducer {
+
+    void produceExampleEvent( ExampleEvent theEvent);
+
+} // end interface ExampleProducer
+
+@EventType(ExampleEvent)
+public class ExampleEvent {
+
+     public String eventData;
+
+} // end class ExampleEvent
+
+
+public class ProducerExample {
+
+    private ExampleProducer eventProducer;
+
+    @Producer(ExampleEvent)
+    public void setEventProducer( ExampleProducer theProducer ) {
+        eventProducer = theProducer;
+        return;
+    } // end method setEventProducer
+
+    public void someBusinessMethod() {
+        theEvent = new ExampleEvent();
+        theEvent.eventData = "Some Data";
+        eventProducer.produceExampleEvent( theEvent );
+    } // end method someBusinessMethod
+
+} // end class
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-implementation.html b/site/trunk/site-publish/java-implementation.html new file mode 100644 index 0000000000..48cc93dba9 --- /dev/null +++ b/site/trunk/site-publish/java-implementation.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java Implementation + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Java Implementation + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

Here is a really simple SCA component implemented in Java:

+ +
+
+public interface Orange {  
+  // methods
+}
+public class AppleImpl implements Apple {  
+  private Orange orange;  
+  public AppleImpl(Orange orange) {    
+    this.orange = orange;  
+  }
+  // other methods
+}
+
+
+

Yes, this is the same as the simplest possible Pico component and it really is a fully functional SCA implementation. Tuscany uses the following conventions to figure out how to run this when you include it in an SCA assembly:

+
    +
  • the class implements a single interface "Apple", so there is one service defined by that interface
  • +
  • there is a single constructor with a value that is not a simple type, we treat that as a reference to the "Orange" service
  • +
  • there are no properties or intents to deal with
  • +
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-090-release-contents.html b/site/trunk/site-publish/java-sca-090-release-contents.html new file mode 100644 index 0000000000..f8748ca8f2 --- /dev/null +++ b/site/trunk/site-publish/java-sca-090-release-contents.html @@ -0,0 +1,283 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA 0.90 Release Contents + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Java SCA 0.90 Release Contents + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

Next Java SCA Release Contents

+ +

This page outlines the features being planned for the next Java SCA release.

+ +

The next release is targted for mid May 2007. A focus will be on the stability and consumability for the runtime core functions

+

Working on

+
    +
  • tidy up runtime after all the recent rewrite/refactors +
      +
    • Composite component wiring and promotion hierarchy (jsdelfino)
    • +
    • Package/Class naming consistency across modules +
        +
      • rename the core-spi package (Venkat)
      • +
      +
    • +
    • Package dependencies
    • +
    • Setting data bindings on interfaces +
        +
      • using the contribution service to remove the need of import.sdo (rfeng)
      • +
      +
    • +
    • Type scoping and contexts
    • +
    +
  • +
+ + +
    +
  • define a clear set of runtime and extension APIs which we can keep stable over future releases +
      +
    • working out the invocation chain based on the new SPIs (rfeng)
    • +
    • refactor extensions (Java, script, axis2, rmi etc) to use new SPIs
    • +
    +
  • +
+ + +
    +
  • logging stratergy and better error reporting +
      +
    • in the assembly model (jsdelfino)
    • +
    • in the contribution service (lresende)
    • +
    +
  • +
+ + +
    +
  • manage lifecycle
  • +
+ + +
    +
  • Tomcat and Jetty http +
      +
    • which port to start an http connector
    • +
    +
  • +
+ + +
    +
  • work on a Domain concept (drops out of this releases)
  • +
+ + +
    +
  • better integration with App Servers
  • +
  • web app support including tomcat deep integration
  • +
+ + +
    +
  • Java components
  • +
  • script components (JavaScript/JRuby/Jython/...?)
  • +
  • Axis2 Web service binding
  • +
+ + +
    +
  • what samples? +
      +
    • a web app sample (lresende)
    • +
    • a script language sample
    • +
    • das-service sample
    • +
    • example Ant build script for sample (slaws)
    • +
    +
  • +
+ + +
    +
  • decide on distributions, create build scripts (ant, and...?) +
      +
    • try out the distributions (slaws, and...?)
    • +
    +
  • +
+ + + + + +
    +
  • good documentation for all the above on the website +
      +
    • Start of user guide - Haleh
    • +
    • Extension developers guide (once we've sorted out the SPIs) - (ant, and...?)
    • +
    • What else?
    • +
    +
  • +
+ + +

Already in the trunk and will be included in the release

+

What is new over M2 Release? Things that have been worked on already?

+
    +
  • Improved databinding
  • +
  • Contribution Services
    +..
  • +
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-091-release-contents.html b/site/trunk/site-publish/java-sca-091-release-contents.html new file mode 100644 index 0000000000..f5f3f759d2 --- /dev/null +++ b/site/trunk/site-publish/java-sca-091-release-contents.html @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA 0.91 Release Contents + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Java SCA 0.91 Release Contents + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

0.91 Java SCA Release Contents

+ +

This page outlines the features being planned for the 0.91 Java SCA release.

+ +

The 0.91 is targeted for early July 2007, this follows on from the 0.90 release in June.

+ +

Working on

+ +
    +
  • Improvements to the dynamic language and scripting support +
      +
    • remove requirement for .componentType side files
    • +
    • support for language specific XML representations (eg E4X)
    • +
    +
  • +
+ + +
    +
  • new <binding.ajax> and allignment with <binding.jsonrpc>
  • +
+ + +
    +
  • new simplified SPI for implementing binding and implementation extensions
  • +
+ + +
    +
  • cotribution import/export (lresende - under investigation)
  • +
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-099-release-contents.html b/site/trunk/site-publish/java-sca-099-release-contents.html new file mode 100644 index 0000000000..0a5b7bd30b --- /dev/null +++ b/site/trunk/site-publish/java-sca-099-release-contents.html @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA 0.99 Release Contents + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Java SCA 0.99 Release Contents + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

0.99 Java SCA Release Contents

+ +

This page outlines the features being planned for the 0.99 Java SCA release.

+ +

The 0.99 release is targeted for August 2007, this follows on from the 0.91 release in July.

+ +

Working on

+ +
    +
  • Improvements to the Web services support / Axis2 binding (very rough list, more desired than actually working on yet) +
      +
    • work without pre-existing wsdl doc
    • +
    • support attachments
    • +
    • support accessing/setting SOAP headers
    • +
    • WS-RM and WS-Security
    • +
    • support WSA EPR in < binding.ws>
    • +
    • async
    • +
    • conversational
    • +
    • Fix open jira's about ?wsdl and endpoint url
    • +
    • support setting some optional stuff like Axis2 handlers, chunking, soap version etc
    • +
    • Axis2 rest style / pox over http support
    • +
    • Sort out our WSDL tooling story - get SDO integrated into Axis2?
    • +
    • support WSDL 2.0
    • +
    +
  • +
+ + +
    +
  • Policy Framework Implementation (Venkat) +
      +
    • (I'll fill up the specifics soon)
    • +
    +
  • +
+ + +
    +
  • Distributed Domain support (SimonL) +
      +
    • SCA Binding
    • +
    • Topology model
    • +
    • Distributed domain
    • +
    • Node implementation
    • +
    • Management assembly (can be used for other management tasks also)
    • +
    • Also I need some of the ws items, in particular the ability to run without wsdl, so can help out there.
    • +
    +
  • +
+ + +
    +
  • Logging, error handling and events +
      +
    • To improve the usability of the runtime we need a proper story on logging and error handling. This has been discussed previously on the list but not yet actioned. The management assembly has a role to play here.
    • +
    +
  • +
+ + +
    +
  • JMS Binding +
      +
    • I'd like to see the JMS binding in the release but can't commit to doing lots more work on including spec features. It's been working fine for me in my limited synchronous/rpc scenario. If I get time I'll take a look to see what it will take to add minimum asynch support but if anyone else fancies having a go at this then it's a good way to learn about Tuscany extensions.
    • +
    +
  • +
+ + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-10-release-contents.html b/site/trunk/site-publish/java-sca-10-release-contents.html new file mode 100644 index 0000000000..40522e310b --- /dev/null +++ b/site/trunk/site-publish/java-sca-10-release-contents.html @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA 1.0 Release Contents + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Java SCA 1.0 Release Contents + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

Please provide input for the content of this release by updating this page.

+ +

1.0 Java SCA Release Contents

+ +

This page outlines the features being planned for the 1.0 Java SCA release.

+ +

The 1.0 release (0.9x?) is targeted for September 2007, this follows on from the 0.99 release in August.

+ + +

For consideration

+

Raised by Tuscany users: JIRAs 1666, 1667, 1668, 1669

+ + +

Working on

+

Policy Framework.. security
+OSGI

+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.doc b/site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.doc new file mode 100644 index 0000000000..ea6ffe669e Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.doc differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.jpg new file mode 100644 index 0000000000..0c9f07c9f5 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.jpg.jpeg new file mode 100644 index 0000000000..0182bbcd46 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/architectureOverview.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/assembly.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/assembly.jpg new file mode 100644 index 0000000000..5a00bda9e6 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/assembly.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/assembly.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/assembly.jpg.jpeg new file mode 100644 index 0000000000..ab6277356c Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/assembly.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap.jpg new file mode 100644 index 0000000000..af8e30deae Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap.jpg.jpeg new file mode 100644 index 0000000000..bdaf3f1277 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap_seq.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap_seq.jpg new file mode 100644 index 0000000000..f222230cf4 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap_seq.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap_seq.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap_seq.jpg.jpeg new file mode 100644 index 0000000000..c5b7fb2288 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/bootstrap_seq.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/component.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/component.jpg new file mode 100644 index 0000000000..ed8ac08425 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/component.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/component.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/component.jpg.jpeg new file mode 100644 index 0000000000..29195ebba1 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/component.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/contribution_overview.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/contribution_overview.jpg new file mode 100644 index 0000000000..e54dc7904f Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/contribution_overview.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/contribution_overview.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/contribution_overview.jpg.jpeg new file mode 100644 index 0000000000..680b96a1c4 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/contribution_overview.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/model.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/model.jpg new file mode 100644 index 0000000000..ecbf04798f Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/model.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/model.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/model.jpg.jpeg new file mode 100644 index 0000000000..b7f4e64b84 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/model.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-model.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-model.jpg new file mode 100644 index 0000000000..e43c97848a Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-model.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-model.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-model.jpg.jpeg new file mode 100644 index 0000000000..99999c7a20 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-model.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-wire.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-wire.jpg new file mode 100644 index 0000000000..1a4b48cd35 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-wire.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-wire.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-wire.jpg.jpeg new file mode 100644 index 0000000000..6ecf8ef3cd Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/runtime-wire.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_composite_hierarchy.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_composite_hierarchy.jpg new file mode 100644 index 0000000000..fd1f8d4318 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_composite_hierarchy.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg new file mode 100644 index 0000000000..a4e3e2b1e3 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_layers.jpg b/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_layers.jpg new file mode 100644 index 0000000000..0c47a208b1 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_layers.jpg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_layers.jpg.jpeg b/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_layers.jpg.jpeg new file mode 100644 index 0000000000..96806ed1e7 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-guide.data/tuscany_layers.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-architecture-guide.html b/site/trunk/site-publish/java-sca-architecture-guide.html new file mode 100644 index 0000000000..e75b13fa25 --- /dev/null +++ b/site/trunk/site-publish/java-sca-architecture-guide.html @@ -0,0 +1,367 @@ + + + + + + + Java SCA Architecture Guide : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > Java SCA Documentation Menu > Java SCA Architecture Guide + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+ + + + + + +
Resources
+
+ + + +

Overview

+ +

The SCA Java runtime is composed of core and extensions. The core is essentially a multi-VM wiring engine that connects components together using the principles of Dependency Injection, or Inversion of Control.

+ +

Core

+ +

The Core is designed to be simple and limited in its capabilities. It wires functional units together and provides SPIs that extensions can interact with. Capabilities such as service discovery, reliability, support for transport protocols, etc. are provided through extensions.

+ +

Extension

+ +

Extensions enhance SCA runtime functionality. Extension types are not fixed and core is designed to be as flexible as possible by providing an open-ended extension model. However, there are a number of known extension types defined including:

+
    +
  • Component implementation types, e.g. Spring, Groovy, and JavaScript
  • +
  • Binding types, e.g. Axis, CXF, AMQP, ActiveMQ, JXTA
  • +
  • DataBinding types, e.g. JAXB, SDO, XmlBeans
  • +
  • Interface Binding types, e.g. WSDL, Java
  • +
+ + +

Details of how to implement an extension can be can be found in the Extensions Guide.

+ +

Runtime

+ +

The core is designed to be embedded in, or provisioned to, a number of different host environments. For example, the core may be provisioned to an OSGi container, a standalone runtime, a servlet engine, or J2EE application server. Runtime capabilities may vary based on the host environment.

+ +

+ +

High level overview of Java SCA runtime

+ +

The diagram shown below is a high level view of the SCA runtime which consists of the following key modules/packages:

+
    +
  1. SCA Spec API: The APIs defined by the SCA Java Client and Implementation Spec
  2. +
  3. API: Tuscany APIs which extend the SCA spec APIs
  4. +
  5. Core: The runtime implementation and the SPIs to extend it
  6. +
  7. Extensions: +
      +
    1. Container implementation - For extending language support, for example BPEL, Python, C++, Ruby,..
    2. +
    3. Binding - for extending protocol support, for example Axis2, CXF,..
    4. +
    5. Interface Binding - for service definition, for example WSDL, Java, ...
    6. +
    7. Databinding - for extending data support, for example SDO, JAXB, ...
    8. +
    +
  8. +
  9. Host Platforms: The environments that host the Tuscany runtime.
  10. +
+ + +

+ +

Internals High Level View

+ +

[Note: Do we want to link to Kernel-Structure]?

+ +

Bootsrap

+ +

Bootstrap process is controlled by Host environment. The default process is implemented in DefaultBootstrapper.
+The runtime processes service assemblies serialized using SCA Assembly XML which can take other forms.

+
    +
  • The load phase processes SCDL and creates an in-memory model and produces corresponding runtime artifacts (e.g. components, services, references)
  • +
  • The connect/wire phase wires references to services
  • +
+ + +

+ +

Metadata

+ +

+ +

Contribution

+ +

+ +
    +
  • Package processors scans the contribution being installed and generate a list of artifacts that needs to be processed. Currently there is support for folder/file system and jar contribution packages. In order to be available to the contribution service, a package processors needs to register itself with the package processor extension.
  • +
+ + +
    +
  • Artifact processors are used to process each artifact available on the contribution. In order to be available to the contribution service, a artifact processor needs to register itself with the artifact processor extension. An artifact processor will be called for each artifact in two phases :
  • +
+ + +
    +
  • +
      +
    • read phase : This is where you read an artifact (a document, an XML element, classes etc.), populate a model representing the artifact and return it. The SCA contribution service calls ArtifactProcessor.read() on all artifacts that have an ArtifactProcessor registered for them. If your model points to other models, instead of trying to load these other models right away, you should just keep the information representing that reference, which you'll turn into a pointer to the referenced model in the resolve() phase. Note that you don't necessarily need to fully read and populate your model at this point, you can choose to complete it later.
    • +
    +
  • +
+ + +
    +
  • +
      +
    • resolve phase : This phase gives you the opportunity to resolve references to other models (a WSDL, a class, another composite, a componentType). At this point, all models representing the artifacts in your SCA contribution have been read, registered in the contribution's ArtifactResolver, and are ready to be resolved.
    • +
    +
  • +
+ + +
    +
  • All deployable composites should be now ready to get deployed to the SCA Domain
  • +
+ + +

Binding Extension

+ + +

Component Implementation Extension

+ + +

Data Binding Extension

+ + +

Wiring

+ +

This section needs to be updated
+To understand how wiring works, we need to detail how Components function in the system. Let's start with Atomic Components and then discuss Composite Components.

+ +

Atomic Component

+ +

AtomicComponent is the most basic component form. It corresponds to the spec concept which offers services, has references and properties

+
    +
  • Implementation types e.g. Java, XSLT, etc.
  • +
  • Are wired
  • +
  • Have properties
  • +
+ + +

Atomic Components have implementation instances. Instances are associated with a scope: e.g. request, conversation, composite. A SCDL entry is used to define a Component.

+ +

Atomic components use a ScopeContainer to manage implementation instances:

+
    +
  • Composite, HTTP Session, Request, Stateless
  • +
  • ScopeContainers track implementation instances by scope id and the AtomicComponent instance identity
  • +
  • Instances are stored in an InstanceWrapper which is specific to the component implementation type (e.g. PojoInstanceWrapper.java)
  • +
+ + +

Component Wiring

+ +

Component references are connected to services through wires

+
    +
  • Two sides +
      +
    • InboundWire - handles the source side of a wire, including policy
    • +
    • OutboundWire - handles the target side of a wire, including policy
    • +
    +
  • +
  • The runtime connects inbound and outbound wires, performing optimizations if possible +
      +
    • Inbound and outbound wires may be associated with different service contracts
    • +
    • Different implementation types
    • +
    • "Standard" wires contain invocation chains that have Interceptors that perform some form of mediation (e.g. policy)
    • +
    • Other wire types exist that, for example, do not perform mediations
    • +
    +
  • +
+ + +

Invocation Chains

+ +

is "around-style" mediation an accepted term. If so what does it mean. Googling it doesn't return anything appropriate.
+A wire has an InvocationChain per service operation. An InvocationChain may have interceptors - "around-style" mediation. Component implementation instances access a wire through a WireInvocationHandler associated with a reference.

+
    +
  • WireInvocationHandlers may (or may not depending on the component type) be fronted by a proxy
  • +
  • WireInvocationHandlers dispatch an invocation to the correct chain
    +A wire has a TargetInvoker that is created from the target side AtomicComponent or Reference and is stored on the source wire invocation handler. The TargetInvoker is resposnible for dispatching the request to the target instance when the message hits the end of the target invocation chain.
  • +
+ + +

Invocation Overview

+ +
    +
  • An invocation is dispatched to the WireInvocationHandler
  • +
  • The WireInvocationHandler looks up the correct InvocationChain
  • +
  • It then creates a message, sets the payload, sets the TargetInvoker, and passes the message down the chain
  • +
  • When the message reaches the end of the chain, the TargetInvoker is called, which in turn is responsible for dispatching to the target
  • +
  • Having the TargetInvoker stored on the outbound side allows it to cache the target instance when the wire source has a scope of equal or lesser value than the target (e.g. request-->composite
  • +
+ + +

The runtime provides components with InboundWires and OutboundWires. InvocationChains are held in component wires and are therefore stateless which allows for dynamic behavior such as introduction of new interceptors or re-wiring.

+ +

Loading SCA assemblies

+ + +

Artifact Processor

+ +

Artifact processors are responsible for processing each artifact available in a contribution package, these processors are going to be invoked in two phases

+ +
    +
  • read phase : This is where you read an artifact (a document, an XML element, classes etc.), populate a model representing the artifact and return it. The SCA contribution service calls ArtifactProcessor.read() on all artifacts that have an ArtifactProcessor registered for them. If your model points to other models, instead of trying to load these other models right away, you should just keep the information representing that reference, which you'll turn into a pointer to the referenced model in the resolve() phase. Note that you don't necessarily need to fully read and populate your model at this point, you can choose to complete it later.
  • +
+ + +
    +
  • resolve phase : This phase gives you the opportunity to resolve references to other models (a WSDL, a class, another composite, a componentType). At this point, all models representing the artifacts in your SCA contribution have been read, registered in the contribution's ArtifactResolver, and are ready to be resolved.
  • +
+ + +

Loading Java SCA

+ +

SCA service assemblies are deployed to the SCA domain in the format of SCDL files. Tuscany runtime artifact processor loads the SCDLs into model objects which are a set of java beans to hold the metadata.

+ +

There are two types of loaders:

+
    +
  • StAXElementLoader: Load the XML element from the StAX events
  • +
  • ComponentTypeLoader: Load the Component Type for an implementation either by introspection or paring a side file
  • +
+ + +

Loading Component Type

+ +

Loads the component type definition for a specific implementation

+
    +
  • How it does this is implementation-specific
  • +
  • May load XML sidefile (location set by implementation)
  • +
  • May introspect an implementation artifact (e.g. Java annotations)
  • +
  • ... or anything else
  • +
+ + +

Loading Composite ComponentType Loader

+
    +
  • Load SCDL from supplied URL
  • +
  • Extract and load SCDL from composite package
  • +
+ + +

POJO ComponentType Loader

+
    +
  • Introspect Java annotations
  • +
  • Uses a pluggable "annotation processing" framework to introspect Java classes
  • +
+ + +

Class diagram for the runtime artifacts

+ +

+ +

Spring Integration

+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-architecture-overview.data/TuscanyJAVASCAM2.pdf b/site/trunk/site-publish/java-sca-architecture-overview.data/TuscanyJAVASCAM2.pdf new file mode 100644 index 0000000000..aa2f5ffe41 Binary files /dev/null and b/site/trunk/site-publish/java-sca-architecture-overview.data/TuscanyJAVASCAM2.pdf differ diff --git a/site/trunk/site-publish/java-sca-architecture-overview.html b/site/trunk/site-publish/java-sca-architecture-overview.html new file mode 100644 index 0000000000..a55273589a --- /dev/null +++ b/site/trunk/site-publish/java-sca-architecture-overview.html @@ -0,0 +1,201 @@ + + + + + + + + Java SCA Architecture Overview + + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > Java SCA Menu > Java SCA Architecture Overview + +
+ + + + + + +
+
+ +
+ +
+ Added by jmarino, last edited by haleh mahbod on Apr 27, 2007 +  (view change) + +
+ +
+
+
Apache Tuscany SCA Java Architecture
+

This page is work in progress. Thanks for your contribution
+At the moment we are pulling different pieces of information in one place and then we'll decide on how to organize the information.

+ + + +


+
+ +

Architecture Overview

+

The SCA Java runtime is composed of a kernel and extensions. The kernel is essentially a multi-VM wiring engine that connects components together using the principles of Dependency Injection, or Inversion of Control.

+ +

Kernel

+

The kernel is designed to be simple and limited in its capabilities: it wires functional units together. Capabilities such as service discovery, reliability, support for transport protocols, etc. are provided through extensions. The kernel extension model is based on the SCA 1.0 Java programming and assembly model. In otherwords, the kernel uses SCA to bootstrap itself. The mechanics of how this is done are described in detail in Kernel Architecture Guide.

+ +

The kernel is divided into a number of modules: api, host_api, spi and core. The api module defines Tuscany proprietary programming model annotations and APIs. The host_api module defines APIs for interacting with the kernel. The spi module defines extension points and abstract helper classes. The core module contains the kernel implementation.

+ +

Extension

+

Extensions enhance the kernel with specific sets of functionality. Extension types are not fixed and the kernel is designed to be as flexible as possible by providing an open-ended extension model. From the kernel perspective, extensions are just a set of SCA components. However, there are a number of known extension types defined by the spi module, including:

+ +
    +
  • Component implementation types, e.g. Spring, Groovy, and JavaScript
  • +
  • Binding types, e.g. Axis, CXF, AMQP, ActiveMQ, JXTA
  • +
  • DataBinding types, e.g. JAXB, SDO, XmlBeans
  • +
+ + +

There are also a number of add-on extensions that do not correspond to a well-know type:

+ +
    +
  • The JPA extension for O/R mapping
  • +
  • The Geronimo Transaction Manager extension for transactional support in the runtime
  • +
  • The HOWL-based Persistent Store extension for high-throughput persistence of conversational state
  • +
+ + +

More detail can be found in the Extensions Guide.

+ +

Runtime

+

The kernel is designed to be embedded in, or provisioned to, a number of different host environments. For example, the kernel may be provisioned to an OSGi container, a standalone runtime, a servlet engine, or JEE application server. There is even a Maven runtime that embeds kernel for integration testing. Runtime capabilities may vary based on the host environment.

+ + +

Data Binding

+

Not sure if this belongs to this page or not

+ +

Data provides transparent data mapping between different types of data that can be exchanged between caller of a service and the service itself given the format of the data that will be supplied by the client. Data Mediator will do this transformation given the following information:

+
    +
  1. format of the data that can be consumed by the service
  2. +
  3. format of the data that will be sent by the client
  4. +
+ + +

You can find more detailed information about databinding at this link

+ +

+ +
+ +
+ Children + + Show Children + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-architecture.html b/site/trunk/site-publish/java-sca-architecture.html new file mode 100644 index 0000000000..b737ed7349 --- /dev/null +++ b/site/trunk/site-publish/java-sca-architecture.html @@ -0,0 +1,196 @@ + + + + + + + + Java SCA Architecture + + + + + + + +
+  Apache Tuscany > Home > Java SCA > Java SCA Menu > Java SCA Architecture + +
+ + + + + + +
+
+ +
+ +
+ Added by jmarino, last edited by jmarino on Mar 03, 2007 +  (view change) + +
+ +
+
+

Overview

+ +

The SCA Java runtime is composed of a kernel and extensions. The kernel is essentially a multi-VM wiring engine that connects components together using the principles of Dependency Injection, or Inversion of Control.

+ +

Kernel

+ +

The kernel is designed to be simple and limited in its capabilities: it wires functional units together. Capabilities such as service discovery, reliability, support for transport protocols, etc. are provided through extensions. The kernel extension model is based on the SCA 1.0 Java programming and assembly model. In otherwords, the kernel uses SCA to bootstrap itself. The mechanics of how this is done are described in detail elsewhere Kernel Architecture.

+ +

The kernel is divided into a number of modules: api, host_api, spi and core. The api module defines Tuscany proprietary programming model annotations and APIs. The host_api module defines APIs for interacting with the kernel. The spi module defines extension points and abstract helper classes. The core module contains the kernel implementation.

+ +

Extensions

+ +

Extensions enhance the kernel with specific sets of functionality. Extension types are not fixed and the kernel is designed to be as flexible as possible by providing an open-ended extension model. From the kernel perspective, extensions are just a set of SCA components. However, there are a number of known extension types defined by the spi module, including:

+ +
    +
  • Component implementation types, e.g. Spring, Groovy, and JavaScript
  • +
  • Binding types, e.g. Axis, CXF, AMQP, ActiveMQ, JXTA
  • +
  • DataBinding types, e.g. JAXB, SDO, XmlBeans
  • +
+ + +

There are also a number of add-on extensions that do not correspond to a well-know type:

+ +
    +
  • The JPA extension for O/R mapping
  • +
  • The Geronimo Transaction Manager extension for transactional support in the runtime
  • +
  • The HOWL-based Persistent Store extension for high-throughput persistence of conversational state
  • +
+ + +

More detail can be found in the Extensions Guide section, but a few high-level best practices for designing extensions are listed here:

+ +
    +
  • Make sure you are familiar with SCA 1.0 Assembly and the SCA Java 1.0 programming model. Specifications can be found at www.osoa.org.
  • +
+ + +
    +
  • Never reference any classes in core. These classes are implementation-specific and subject to change; they are not part of the public SPI contract.
  • +
+ + +
    +
  • Use autowire when assembling extension components.
  • +
+ + +
    +
  • Do not mess with classloaders such as setting the current context classloader unless it is absolutely necessary, i.e. a library used by an extension makes assumptions about context classloaders. Ideally the library can be refactored to not make these assumptions. If not, make sure the extension properly resets the current context classloader.
  • +
+ + +
    +
  • Preferrably use EasyMock for mocking kernel functionality during extension unit testing.
  • +
+ + + + + +
    +
  • Preferrably use EasyMock for mocking kernel functionality during extension unit testing.
  • +
+ + + + + +

Runtimes

+ +

The kernel is designed to be embedded in, or provisioned to, a number of different host environments. For example, the kernel may be provisioned to an OSGi container, a standalone runtime, a servlet engine, or JEE application server. There is even a Maven runtime that embeds kernel for integration testing. Runtime capabilities may vary based on the host environment.

+ + + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-developer-guide.html b/site/trunk/site-publish/java-sca-developer-guide.html new file mode 100644 index 0000000000..449aad8e83 --- /dev/null +++ b/site/trunk/site-publish/java-sca-developer-guide.html @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Developer Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > Java SCA Developer Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

The Java SCA sub-project aims to provide enterprise-grade service infrastructure based on SCA. Some of our principles include:

+ +
    +
  • Tuscany SCA is not just a reference implementation. We encourage innovation based on the tenets of SCA. A lot of work we do provides feedback to the specifications.
  • +
  • We build runtimes that are distributed under the Apache Software License.
  • +
  • We believe developing highly scalable service-based systems should be easier than it currently is.
  • +
  • We believe in providing users with flexibility and choice. We do not dictate programming models but support many. Our runtimes are designed to be highly extensible so users may customize them to fit their needs.
  • +
  • We provide frequent releases of our software so users can experience the newest features and have access to the latest bug fixes.
  • +
+ + +

For those looking at or developing the Tuscany Java SCA source code this page provides some description of the code structure and associated conventions that are used.

+ +

Getting the Source - Subversion Access

+ +

The Java SCA project Subversion repository is located at https://svn.apache.org/repos/asf/incubator/tuscany/java/sca.

+ +

The respository can also be viewed online at http://svn.apache.org/viewvc/incubator/tuscany/java/

+ +

Anyone can check code out of Subversion. You only need to specify a username and password in order to update the Subversion repository, and only Tuscany committers have the permissions to do so.

+ +

Checking out from Subversion

+ +

Use a command like:

+ +
+
+svn checkout https://svn.apache.org/repos/asf/incubator/tuscany/java/sca
+
+
+ +

Committing Changes to Subversion
+Any Tuscany committer should have a shell account on svn.apache.org. Before you can commit, you'll need to set a Subversion password for yourself. To do that, log in to svn.apache.org and run the command svnpasswd.

+ +

Once your password is set, you can use a command like this to commit:

+ +
+
+svn commit
+
+
+ +

If Subversion can't figure out your username, you can tell it explicitly:

+ +
+
+svn --username <name> commit
+
+
+ +

Subversion will prompt you for a password, and once you enter it once, it will remember it for you. Note this is the password you configured with svnpasswd, not your shell or other password.

+ +

Getting Setup for Development

+ +

Prerequisites
+Java SCA requires the following:

+ + + + +

Some Definitions

+ +

Module - we use the term module to refer to a leaf of the maven build tree. I.e a directory containing source code and resources that will be compiled to a releasable artifact, e.g. a jar file.

+ +

...

+ +

Source and Build Structure

+

Looking at the source code for Java SCA you will see the following directory structure.

+
+
java/
+ pom/parent/pom.xml
+ ...
+ sca/
+   pom.xml - The maven pom that builds all of the releasable Tuscany Java SCA modules
+
+   contrib/ - A temporary direcoty that holds modules not currently being developed or targetted for a release
+     ...
+
+   doc/ - Tuscany Java SCA documentation that will be included with the release
+     ...
+
+   itest/ - Integration tests that test system performace using combinations of Tuscany Java features
+     pom.xml
+     ...
+
+   modules/ - A flat direcory structure holding all of the separate modules that make up Tuscany Java SCA. 
+     pom.xml
+     ...
+
+   samples/ - Tuscany Java SCA samples which show how to use the various features of the software
+     build.xml <-- Samples build with Ant as well as Maven - TBD
+     pom.xml
+     ...
+
+
+ +

Naming Conventions

+
    +
  • Use all lowercases and dashes in folder names (like in the jar names)
  • +
  • Maven artifact id = tuscany-<folder name>
  • +
  • Package names within modules should include the module name so that source code can be located in the source tree easily. So, for example, the module
  • +
+ + +
+
+java/sca/module/implementation-java
+
+
+ +

contains code in the package structure

+ +
+
+org.apache.tuscany.implementation.java.*
+
+
+ +

Module Location

+

If people want to work on some new modules that won't be part of the
+next release and are not included in the top-down build, that's fine, we can
+just avoid listing these modules in java/sca/modules/pom.xml. So, they
+can be there in the same source tree but they won't break the release
+top-down build, and they won't have to be building at all times.

+ +

Maven Build Structure

+
    +
  • sca/pom.xml's parent will be pom/parent/pom.xml
  • +
  • Other poms will use the pom from the parent folder as parent pom
  • +
  • Group ids:
    + org.apache.tuscany.sca
    + org.apache.tuscany.sca.samples,
    + org.apache.tuscany.sca.itest
  • +
  • Version of our modules will be specified once in java/sca/pom.xml, child poms don't need specify a version as they get it from their parent
  • +
  • pom names begin Apache Tuscany SCA
  • +
  • Eclipse projects are generated for all built modules using mvn -Peclipse eclipse:eclipse
  • +
+ + +

Building From The Source

+

First of all check out all of the java source code.

+ +
+
+svn checkout https://svn.apache.org/repos/asf/incubator/tuscany/java
+
+
+ +

Building the SCA source code is simple

+ +
+
+cd java/sca
+mvn
+
+
+ +

It should work even if you start with an empty Maven local repository, and it should always work. This assumes that maven is able to retrieve a SNAPSHOT version of SDO (and of course the rest of software that SCA depends on) as we haven't built anything other than SCA here. There can be occasional problems downloading artifacts from remote Maven repositories so if mvn fails with network related sounding messages sometimes just trying again can fix the problem.

+ +

Coding style and Testing

+ +

Tuscany has some basic coding standards - use spaces not tabs, keep a reasonable line length, and include enough comments in the code. Tests are good, both unit and functional testing is encouraged. When modifying existing code try to use the style already in place or if necessary reformat the whole file so the style is consistent.

+ +

The ASF has some requirements on the license header that should be included in most files, for details see http://www.apache.org/legal/src-headers.html.

+ +

In the Tuscany SVN there is a folder tuscany/java/etc which contains various templates that can be used to configure your development environment, for example, codestyle template files which can be imported into the Eclipse or IDEA IDE's. Some Tuscany modules are set up to use the Maven Checkstyle facility which may be run using the Maven -Psourcecheck option.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-distributed.html b/site/trunk/site-publish/java-sca-distributed.html new file mode 100644 index 0000000000..850b909dfa --- /dev/null +++ b/site/trunk/site-publish/java-sca-distributed.html @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Distributed + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Java SCA Distributed + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

note moved all node related content from the old user doc to here. This page can explain node in the context of distributed calculator.

+ + +

Tuscany SCA Node

+

In order to run an SCA application Tuscany SCA Java provides a runtime that is wrapped up in a Node. The runtime itself is made up of many of the modules that are present in the modules directory of the Tuscany SCA Java distribution. As you might expect there are functions that read XML, create an in memory mode model of the SCA assembly, create the components and wire them together ready to process incoming messages. All of these functions are wrapped up in a Node. A node is configured using SCA contributions and will run a single composite. When running standalone the node also defines the scope of component services that references can target by name. SCA defines the term Domain to describe this scope. Unable to render embedded object: File (calculator2.png) not found.
+A node runs within a single JVM. A JVM can run many Nodes.

+ +

host embedded

+

For a long time in Tuscany we have had a modules called host.embedded that contains the code required to get the runtime up and running in standalone configuration. This was developed before the distributed domain support was added but the main interface here is called an SCADomain. It's just a very small domain with only one node inside it. You can't see the node and you configure and access it via the SCADomain interface. The majority of samples and tests use this today. However the new SCA Node implementation can work in both standalone and distributed configuration so may be more appropriate in situations other than the simple Tuscany samples and tests. We will convert more samples ant tests to this approach over time to show the benefit of using the node implementation.

+ +

Tuscany SCA Node Implementation

+

Available from release 1.2 there is a new domain/node implementation. The node part of this can be run either stand alone or as part of a distributed domain. Most of the sample and test code has not started using this implementation yet and there may be more changes to the API.

+ +

Creating and Configuring Node

+ +

Creating a node in code is straightforward. For example,

+ +
+
+SCANode2 node = SCANode2Factory.newInstance().createSCANodeFromClassLoader("calculator.composite", null);
+
+
+

The node uses current classes classloader to located the named composite file. The location of the composite file is assumed to be the location if the SCA contribution. The assumption here is that only one contribution is required.

+ +

If more contributions must be loaded by the node the following interface can be used.

+
+
+SCANode2  node = SCANode2Factory.newInstance().createSCANode("file:/C:/CalculatorContribution1/Calculator.composite",
+        		                               new SCAContribution("CalculatorContribution1",
+        		                                                               "file:/C:/CalculatorContribution1"),
+                                                       new SCAContribution("CalculatorContribution2",
+        		                                                               "file:/C:/CalculatorContribution2"));
+
+
+

Where

+
+
+"file:/C:/CalculatorContribution1/Calculator.composite"
+
+
+

Is the explicit location of the composite file to be run and

+
+
+new SCAContribution("CalculatorContribution1",
+        		        "file:/C:/CalculatorContribution1")
+
+
+

Shows how to provide contribution details. Multiple contributions can be specified. You might have multiple contributions if, for example, you have chosen to separate common artifacts from those specific to this composite. The contribution containing common artifacts can then be used in other SCA applications without change.

+ +

Starting a Node

+ +

Once the node is created it is configured and ready for use. It can be started as follows.

+
+
+node.start();
+
+
+ +

Locating Services

+ +

A local service reference can be retrieved in the following way.

+
+
+calculatorService = ((SCAClient)node).getService(CalculatorService.class, "CalculatorServiceComponent");
+
+
+ +

Stopping a Node

+ +

If you are done with the node or need to stop is processing messages use the following.

+
+
+node.stop();
+
+
+ +

+ +
Hosting Tuscany SCA Nodes
+ +

You can run SCA applications in many different ways but the same underlying runtime is used but packaged in slightly different ways as follows

+ +

Command Line

+ +

Most of the samples that are shipped with the Tuscany SCA Java distribution run from the command line by driving the Node API or old SCADomain API programmatically.

+ +

There is a pre-packaed launcher that has a mainline for starting nodes. When run from the command line it expects to be running in the context of the binary distribution where "modules" and "lib" directories are present.

+ +

It loads all of the jars from

+ +

1) the directory where the launcher class is found.
+2) the ../modules directory
+3) the ../libs directory

+ +

It then repeats the process looking for ../modules and ../lib dirs based on the contents of a TUSCANY_HOME environment variable

+ +

With the final list it creates a URLClassLoader with the current classloader as the parent and enforces a parent first classloading strategy.

+ +

TODO - how does it find the composite file to run?

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-documentation-menu.html b/site/trunk/site-publish/java-sca-documentation-menu.html new file mode 100644 index 0000000000..2b7305c6b6 --- /dev/null +++ b/site/trunk/site-publish/java-sca-documentation-menu.html @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Documentation Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + + +
+

SCA Java Documentation for 1.x

+ +
Getting Started with Tuscany
+

These guides help you to get setup in Tuscany, develop and run a simple application using comand line or Eclipse.

+ + +
+ + +
SCA Introduction
+

provides a quick introduction to SCA and links to the SCA specifications
+Introduction to SCA

+
+ +
Tuscany SCA User Guide
+

These guides provide the following information:

+
    +
  • How to develop and run applications using Tuscany in a single node or multi node environment
    +User Guide
  • +
  • What are the available Tuscany extensions and how to use them? This includes bindings, impelementation types, interface types, policies, databindings.
    +Extension Guide
  • +
  • Available development and management tools for Tuscany
    +SCA Java Tools Guides
  • +
+
+ + +
Tuscany SCA Extension Development Guides
+

Although Tuscany provides many extensions, you might be interested to add an extension that is not available today. This guide helps you understand how to develop extensions such
+as new bindings, implementation types, interfaces, policies, etc.

+ +

You are welcome to contribute these new extensions to Tuscany and make them available to others in the community.

+ + +
+ +
Tuscany SCA Java Development Guides
+

These guides help you learn more about Tuscany architecture and how to get involved in the
+development of Tuscnay. We look forward to your help.

+ +
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-documentation-toc.html b/site/trunk/site-publish/java-sca-documentation-toc.html new file mode 100644 index 0000000000..bea83c896c --- /dev/null +++ b/site/trunk/site-publish/java-sca-documentation-toc.html @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Documentation TOC + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Java SCA Documentation TOC + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

This page provides you with links to resources about SCA and Tuscany.

+ + + + + + +
+
SCA Java User Documentations
+ +
+ + + + +
Apache Tuscany blog
+
Unknown macro: {rss}
+
+
PlanetApache.org blog
+
Unknown macro: {rss}
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-download-page.html b/site/trunk/site-publish/java-sca-download-page.html new file mode 100644 index 0000000000..5d4de2523e --- /dev/null +++ b/site/trunk/site-publish/java-sca-download-page.html @@ -0,0 +1,142 @@ + + + + + + + Java SCA Download Page : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > Java SCA Download Page + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
    +
  • work in progress template for Java SCA download page*
  • +
+ + +

Latest SCA Java Release - Release Name

+

This release supports specification level such and such.

+ + + + + + + + + + + + + + + + + + + + +
Platform Download LinkMD5PGP
Linuxdownload linksignaturelink
Windowsdownload linksignaturelink
+ +

What's in this release

+

Put the change history for the latest release here.

+ + +

Previous Releases

+

release Name, availability date, spec level, Link to readme

+ + + + + + + + + + + + + +
PlatformDownload LinkMD5PGP
Linux download linksignaturelink
+ +

release Name, availability date, spec level, Link to readme

+ + + + + + + + + + + + + +
PlatformDownload LinkMD5PGP
Linux download linksignaturelink
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-extension-developer-guide.data/ExtendingTuscany.ppt b/site/trunk/site-publish/java-sca-extension-developer-guide.data/ExtendingTuscany.ppt new file mode 100644 index 0000000000..e04b2e5b43 Binary files /dev/null and b/site/trunk/site-publish/java-sca-extension-developer-guide.data/ExtendingTuscany.ppt differ diff --git a/site/trunk/site-publish/java-sca-extension-developer-guide.html b/site/trunk/site-publish/java-sca-extension-developer-guide.html new file mode 100644 index 0000000000..8b971c6aed --- /dev/null +++ b/site/trunk/site-publish/java-sca-extension-developer-guide.html @@ -0,0 +1,241 @@ + + + + + + + Java SCA Extension Developer Guide : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > Java SCA Documentation Menu > Java SCA Extension Developer Guide + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
Apache Tuscany SCA Java Extension Guide
+ +
+ +

This page is work in progress. Thanks for your contribution
+This is a guide for developers who would like to extend Tuscany SCA Java.

+ + + + + + +

A presentation on how to extend Tuscany in Microsoft PowerPoint format

+

ExtendingTuscany

+ + +

What is an extension?

+ +

Extension is a module (or a set of modules),when built with Tuscany SCA, can extend it to work with additional bindings, language implementations, programming models or databindings.

+ +

SCA assembly model is defined such that extensions can be added for new interface types or for new implementation types such as ruby and python, or new binding types such as CXF. However, the definition of extension SPIs is left to the implementor. Tuscany SCA Java provides a simple set of SPIs for implementing extensions. It also defines additional extension points such as data binding, for example support for SDO and JAXB.

+ +

This guide explains the steps to add each of these extension types. Please help us refine the guide as you go through the steps of adding extensions.

+ +

Name spaces used by extensions

+ + +

How to add a new component implementation?

+ +

Musings on Adding a New Component Type by Mike E 

+ +

How to add a new binding?

+ + +

How to add a new interface binding?

+ + +

How to add a new databinding?

+ + +

General guide for developing extensions

+ +
    +
  • Familiarize yourself with SCA 1.0 Assembly and the SCA Java 1.0 programming model. Specifications can be found at www.osoa.org.
  • +
  • Never reference any classes in core. These classes are implementation-specific and subject to change; they are not part of the public SPI contract.
  • +
  • Use autowire when assembling extension components.
  • +
  • Do not play with classloaders such as setting the current context classloader unless it is absolutely necessary, i.e. a library used by an extension makes assumptions about context classloaders. Ideally the library can be refactored to not make these assumptions. If not, make sure the extension properly resets the current context classloader.
  • +
+ + +

Detail on extension architecture

+ + +

The ExtensionPointRegistry

+ +
+
package org.apache.tuscany.sca.core;
+
+
+/**
+ * The registry for the Tuscany core extension points. As the point of contact
+ * for all extension artifacts this registry allows loaded extensions to find
+ * all other parts of the system and register themselves appropriately.
+ *
+ * @version $Rev: 539355 $ $Date: 2007-05-18 03:05:14 -0700 (Fri, 18 May 2007) $
+ */
+public interface ExtensionPointRegistry {
+
+    /**
+     * Add an extension point to the registry
+     * @param extensionPoint The instance of the extension point
+     */
+    void addExtensionPoint(Object extensionPoint);
+
+    /**
+     * Get the extension point by the interface
+     * @param extensionPointType The lookup key (extension point interface)
+     * @return The instance of the extension point
+     */
+    <T> T getExtensionPoint(Class<T> extensionPointType);
+
+    /**
+     * Remove an extension point
+     * @param extensionPoint The extension point to remove
+     */
+    void removeExtensionPoint(Object extensionPoint);
+}
+
+ +

The ModuleActivator

+ +
+
package org.apache.tuscany.core;
+
+import java.util.Map;
+
+/**
+ * ModuleActivator represents a module that plugs into the Tuscany system. Each module should
+ * provide an implementation of this interface and registry the implementation class by defining
+ * a file named as "META-INF/services/org.apache.tuscany.spi.bootstrp.ModuleActivator". The
+ * content of the file is the class name of the implementation. The implementation class must
+ * have a no-arg constructor. The same instance will be used to invoke all the methods during
+ * different phases of the module activation.
+ *
+ * @version $Rev: 529327 $ $Date: 2007-04-16 10:10:43 -0700 (Mon, 16 Apr 2007) $
+ */
+public interface ModuleActivator {
+    /**
+     * Get a map of the extension points defined by this module. The key is the
+     * java interface to represent the extension point and the the value is the
+     * instance of the implementation of the interface.
+     *
+     * @return All the extension points defined by this module
+     */
+    Map<Class, Object> getExtensionPoints();
+
+    /**
+     * This method is invoked when the module is started by the Tuscany system.
+     * It can be used by this module to registr extensions against extension
+     * points.
+     *
+     * @param registry The extension point registry
+     */
+    void start(ExtensionPointRegistry registry);
+
+    /**
+     * This method is invoked when the module is stopped by the Tuscany system.
+     * It can be used by this module to unregister extensions against the
+     * extension points.
+     *
+     * @param registry The extension point registry
+     */
+    void stop(ExtensionPointRegistry registry);
+}
+
+

The ModuleActivator represents a module that plugs into the Tuscany system.
+Each module should provide an implementation 3 of this interface and
+registry the implementation class by defining a file named as
+"META-INF/services/org.apache.tuscany.spi.bootstrp.ModuleActivator" 4. The
+content of the file is the class name of the implementation. The
+implementation class must have a no-arg constructor. The same instance will
+be used to invoke all the methods during different phases of the module
+activation.

+ +

During bootstraping, the following sequence will happen:

+ +

1) All the module activators will be discovered by the presence of
+META-INF/services/org.apache.tuscany.spi.bootstrp.ModuleActivator
+2) The activator class is instantiated using the no-arg constructor.
+3) ModuleActivator.getExtensionPoints() is invoked for all modules and the
+extension points contributed by each module are added to the
+ExtensionRegistry.
+4) ModuleActivator.start(ExtensionRegistry) is invoked for all the modules.
+The module can then get interested extension points and contribute
+extensions to them. The contract bwteen the extension and extension point is
+private to the extension point. The extension point can follow similar
+patterns such as Registry. If it happens that one extension point has a
+dependency on another extension point, they can linked at this phase.

+ +

During shutting down, the stop() method is invoked for all the modules to
+perform cleanups. A module can choose to unregister the extension from the
+extension points.

+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-extension-guide.html b/site/trunk/site-publish/java-sca-extension-guide.html new file mode 100644 index 0000000000..ddd87b18d9 --- /dev/null +++ b/site/trunk/site-publish/java-sca-extension-guide.html @@ -0,0 +1,297 @@ + + + + + + + + Java SCA Extension Guide + + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > Java SCA Menu > Java SCA Extension Guide + +
+ + + + + + +
+
+ +
+ +
+ Added by Raymond Feng, last edited by Mike Edwards on May 03, 2007 +  (view change) + +
+ +
+
+
Apache Tuscany SCA Java Extension Guide
+

This page is work in progress. Thanks for your contribution
+This is a guide for developers who would like to extend Tuscany SCA Java.

+ + + + +
+
+ +

What is an extension?

+ +

Extension is a module (or a set of modules),when built with Tuscany SCA, can extend it to work with additional bindings, language implementations, programming models or databindings.

+ +

SCA assembly model is defined such that extensions can be added for new interface types or for new implementation types such as ruby and python, or new binding types such as CXF. However, the definition of extension SPIs is left to the implementor. Tuscany SCA Java provides a simple set of SPIs for implementing extensions. It also defines additional extension points such as data binding, for example support for SDO and JAXB.

+ +

This guide explains the steps to add each of these extension types. Please help us refine the guide as you go through the steps of adding extensions.

+ +

Name spaces used by extensions

+ + +

How to add a new component implementation?

+ +

Musings on Adding a New Component Type by Mike E 

+ +

How to add a new binding?

+ + +

How to add a new interface binding?

+ + +

How to add a new databinding?

+ + +

General guide for developing extensions

+ +
    +
  • Familiarize yourself with SCA 1.0 Assembly and the SCA Java 1.0 programming model. Specifications can be found at www.osoa.org.
  • +
  • Never reference any classes in core. These classes are implementation-specific and subject to change; they are not part of the public SPI contract.
  • +
  • Use autowire when assembling extension components.
  • +
  • Do not play with classloaders such as setting the current context classloader unless it is absolutely necessary, i.e. a library used by an extension makes assumptions about context classloaders. Ideally the library can be refactored to not make these assumptions. If not, make sure the extension properly resets the current context classloader.
  • +
+ + +

Detail on extension architecture

+ + +

The ExtensionPointRegistry

+ +
+
package org.apache.tuscany.core;
+
+/**
+ * The registry for the Tuscany core extension points.
+ *
+ * @version $Rev: 529327 $ $Date: 2007-04-16 10:10:43 -0700 (Mon, 16 Apr 2007) $
+ */
+public interface ExtensionPointRegistry {
+
+    /**
+     * Add an extension point to the registry
+     * @param <T>
+     * @param extensionPointType The interface of the extension point
+     * @param extensionPoint The instance of the extension point
+     */
+    <T> void addExtensionPoint(Class<T> extensionPointType, T extensionPoint);
+
+    /**
+     * Get the extension point by the interface
+     * @param <T>
+     * @param extensionPointType
+     * @return
+     */
+    <T> T getExtensionPoint(Class<T> extensionPointType);
+
+    /**
+     * Remove an extension point
+     * @param extensionPoint
+     */
+    void removeExtensionPoint(Class extensionPoint);
+}
+
+ +

The ModuleActivator

+ +
+
package org.apache.tuscany.core;
+
+import java.util.Map;
+
+/**
+ * ModuleActivator represents a module that plugs into the Tuscany system. Each module should
+ * provide an implementation of this interface and registry the implementation class by defining
+ * a file named as "META-INF/services/org.apache.tuscany.spi.bootstrp.ModuleActivator". The
+ * content of the file is the class name of the implementation. The implementation class must
+ * have a no-arg constructor. The same instance will be used to invoke all the methods during
+ * different phases of the module activation.
+ *
+ * @version $Rev: 529327 $ $Date: 2007-04-16 10:10:43 -0700 (Mon, 16 Apr 2007) $
+ */
+public interface ModuleActivator {
+    /**
+     * Get a map of the extension points defined by this module. The key is the
+     * java interface to represent the extension point and the the value is the
+     * instance of the implementation of the interface.
+     *
+     * @return All the extension points defined by this module
+     */
+    Map<Class, Object> getExtensionPoints();
+
+    /**
+     * This method is invoked when the module is started by the Tuscany system.
+     * It can be used by this module to registr extensions against extension
+     * points.
+     *
+     * @param registry The extension point registry
+     */
+    void start(ExtensionPointRegistry registry);
+
+    /**
+     * This method is invoked when the module is stopped by the Tuscany system.
+     * It can be used by this module to unregister extensions against the
+     * extension points.
+     *
+     * @param registry The extension point registry
+     */
+    void stop(ExtensionPointRegistry registry);
+}
+
+

The ModuleActivator represents a module that plugs into the Tuscany system.
+Each module should provide an implementation 3 of this interface and
+registry the implementation class by defining a file named as
+"META-INF/services/org.apache.tuscany.spi.bootstrp.ModuleActivator" 4. The
+content of the file is the class name of the implementation. The
+implementation class must have a no-arg constructor. The same instance will
+be used to invoke all the methods during different phases of the module
+activation.

+ +

During bootstraping, the following sequence will happen:

+ +

1) All the module activators will be discovered by the presence of
+META-INF/services/org.apache.tuscany.spi.bootstrp.ModuleActivator
+2) The activator class is instantiated using the no-arg constructor.
+3) ModuleActivator.getExtensionPoints() is invoked for all modules and the
+extension points contributed by each module are added to the
+ExtensionRegistry.
+4) ModuleActivator.start(ExtensionRegistry) is invoked for all the modules.
+The module can then get interested extension points and contribute
+extensions to them. The contract bwteen the extension and extension point is
+private to the extension point. The extension point can follow similar
+patterns such as Registry. If it happens that one extension point has a
+dependency on another extension point, they can linked at this phase.

+ +

During shutting down, the stop() method is invoked for all the modules to
+perform cleanups. A module can choose to unregister the extension from the
+extension points.

+
+ +
+ Children + + Show Children + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-extensions-menu.html b/site/trunk/site-publish/java-sca-extensions-menu.html new file mode 100644 index 0000000000..1f9dd996df --- /dev/null +++ b/site/trunk/site-publish/java-sca-extensions-menu.html @@ -0,0 +1,100 @@ + + + + + + + Java SCA Extensions Menu : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Java SCA Extensions Menu + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Implementation Types

+

Groovy
+JavaScript
+Spring

+ +

Bindings

+

ActiveMQ
+AMQP
+Axis
+CXF
+JMS

+ +

Databindings

+

JAXB
+SDO General Menu
+XmlBeans

+ +

Add-Ons

+

DataSource
+Journal Store
+JPA
+Transaction Manager

+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-extensions.html b/site/trunk/site-publish/java-sca-extensions.html new file mode 100644 index 0000000000..2913632af8 --- /dev/null +++ b/site/trunk/site-publish/java-sca-extensions.html @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Extensions + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > Java SCA Extensions + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+
Unable to render {include} Couldn't find a page to include called: Java SCA Extensions Menu
+ +

Extensions

+ +

Extensions add functionality to the kernel such as support for new component implementation types or bindings. They are modular additions to the kernel and are released independently. Please see the wiki pages for detailed information and status of each extension.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-implementationdata.html b/site/trunk/site-publish/java-sca-implementationdata.html new file mode 100644 index 0000000000..3d5bf81dfe --- /dev/null +++ b/site/trunk/site-publish/java-sca-implementationdata.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Implementation.data + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Java SCA Implementation.data + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-implementationscript.html b/site/trunk/site-publish/java-sca-implementationscript.html new file mode 100644 index 0000000000..e8b5125f81 --- /dev/null +++ b/site/trunk/site-publish/java-sca-implementationscript.html @@ -0,0 +1,170 @@ + + + + + + + Java SCA implementation.script : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > Java SCA Documentation Menu > Java SCA implementation.script + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+
General
+
+ +

<implementation.script>

+ +

The Tuscany Java SCA runtime supports implementing SCA components in a wide variety of dynamic or scripting languages by using the <implementation.script> SCDL extension.

+ +

Any language that supports the "Scripting for Java" APIs defined by JSR-223 is supported, this includes Groovy, JavaScript, JRuby, Jython, and many others.

+ +

To use these languages the SCA assembly SCDL is extended with an "implementation.script" element which has the following options:

+ + +
+
<implementation.script [ script="" | language="" ] >
+     [inline src]
+</implementation.script>
+
+ +

The source code for the script maybe defined in a seperate file pointed to by the 'script=' attribute, or the source code maybe embedded within the SCDL inline inside the <implementation.script> element.

+ +

The 'language=' attribute defines the language of the program. The language attribute is optional when the source code is in a separate file in which case the file extension of the file is used to determine the language.

+ +

Some examples:

+ + +

A Ruby program defined in a file 'myScript.rb' in a folder named 'test':

+ +
+
<implementation.script script="test/myScript.rb"/>
+
+ + +

A JavaScript program defined inline:

+ +
+
<implementation.script language="js">
+      function sayHello(name) {
+         return "Hello " + name;
+      }
+</implementation.script>
+
+ + +

When using inline scripts which contain special characters such as XML markup you may need to enclose the source within a CDATA region, for example:

+ +
+
<implementation.script language="js"><![CDATA[
+      function sayHello(inXML) {
+         return <sayHelloResponse>Hello { inXML..name }</sayHelloResponse>;
+      }
+]]></implementation.script>
+
+ +

The previous example demonstrated using JavaScript's E4X language extension for manipulating XML. Many dynamic languages have enhanced XML capabilities like this which can make working with XML much easier than in a more traditional language such as Java. For example, along with JavaScript's E4X, Ruby has ReXML and Groovy has its markup builders.

+ +

Tuscany tries to simplify this for the script program developer and will try to automatically ensure arguments are in the native XML format of the language when the component is wired to a WSDL interface.

+ +

As an example of this the following shows a composite that can replace the Tuscany helloworld-ws-service sample and requires no other files other than the asscociated WSDL document packaged with the contribution:

+ +
+
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	targetNamespace="http://helloworld"
+	xmlns:hw="http://helloworld"
+        name="helloworldws">
+
+    <service name="HelloWorldService" promote="HelloWorldServiceComponent">
+       <interface.wsdl interface="http://helloworld#wsdl.interface(HelloWorld)" />
+       <binding.ws uri=""/>
+    </service>
+
+    <component name="HelloWorldServiceComponent">
+        <implementation.script language="js"><![CDATA[
+
+           function getGreetings(xmlIn) {
+              return <ns1:getGreetings xmlns:ns1="http://helloworld">
+                        <ns1:name>Hello { xmlIn..name }</ns1:name>
+                     </ns1:getGreetings>
+           }
+
+        ]]></implementation.script>
+    </component>
+
+</composite>
+
+ +
Best practice?
+

Using inline scripts can make creating simple components very easier however there are issues around whether or not this is good practice.
+Depending on the circumstance consideration should be given as to if it would be better to define the script in a seperate file.

+ +
0.90
+

In release 0.90 and before, inline scripts are not supported and scripts require an associated .componentType side file

+ +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap.jpg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap.jpg new file mode 100644 index 0000000000..af8e30deae Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap.jpg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap.jpg.jpeg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap.jpg.jpeg new file mode 100644 index 0000000000..7a1c2140b9 Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap_seq.jpg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap_seq.jpg new file mode 100644 index 0000000000..f222230cf4 Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap_seq.jpg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap_seq.jpg.jpeg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap_seq.jpg.jpeg new file mode 100644 index 0000000000..c5b7fb2288 Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/bootstrap_seq.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/component.jpg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/component.jpg new file mode 100644 index 0000000000..ed8ac08425 Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/component.jpg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/component.jpg.jpeg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/component.jpg.jpeg new file mode 100644 index 0000000000..29195ebba1 Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/component.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/model.jpg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/model.jpg new file mode 100644 index 0000000000..ecbf04798f Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/model.jpg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/model.jpg.jpeg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/model.jpg.jpeg new file mode 100644 index 0000000000..b7f4e64b84 Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/model.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_composite_hierarchy.jpg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_composite_hierarchy.jpg new file mode 100644 index 0000000000..fd1f8d4318 Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_composite_hierarchy.jpg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg new file mode 100644 index 0000000000..a4e3e2b1e3 Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_layers.jpg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_layers.jpg new file mode 100644 index 0000000000..0c47a208b1 Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_layers.jpg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_layers.jpg.jpeg b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_layers.jpg.jpeg new file mode 100644 index 0000000000..96806ed1e7 Binary files /dev/null and b/site/trunk/site-publish/java-sca-kernel-architecture-guide.data/tuscany_layers.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-kernel-architecture-guide.html b/site/trunk/site-publish/java-sca-kernel-architecture-guide.html new file mode 100644 index 0000000000..24aede3557 --- /dev/null +++ b/site/trunk/site-publish/java-sca-kernel-architecture-guide.html @@ -0,0 +1,476 @@ + + + + + + + + Java SCA Kernel Architecture Guide + + + + + + + +
+  Apache Tuscany > Home > SCA Java > Java SCA Kernel Architecture Guide + +
+ + + + + + +
+
+ +
+ +
+ Added by Raymond Feng, last edited by Raymond Feng on Apr 16, 2007 +  (view change) + +
+ +
+
+
Apache Tuscany SCA Java Kernel Architecture Guide
+

This page is work in progress. Thanks for your contribution

+ + + +


+
+ +

Kernel Overview

+ +

This is a high level architecture document for Tuscany Java implementation of Service Component Architecture (SCA) which is defined in the specifications located at (http://wwww.osoa.org).

+ +

This is a live document and is more focused on what is implemented rather than the end vision.
+Goal of this document is to help users/developers better understand what Tuscany SCA offers and enable them to help with the development if interested.

+ +

Tuscany provides the infrastructure for creating, assembling and deploying services in a distributed environment.
+At a high level it aims to provide for the following:

+
    +
  • Infrastructure for creating, wiring, deploying and managing service assemblies in single runtime or across runtimes (federated)
  • +
  • Infrastructure for leveraging qualities of service provided by host environments (transactions, security)
  • +
  • Support for different host environments: Standalone, Tomcat, J2EE, OSGI (in progress, more can be added)
  • +
  • plug-points for supporting variety of bindings such as Axis2, RMI, more can be added
  • +
  • plug-points for adding component implementations such as Java Script, Spring, JRuby, Python (started), more can be added
  • +
+ + +

Module Structure

+ +

[Note: Do we want to link to Kernel-Structure]?

+ +

As illustrated below, the Tuscany runtime consists of the following key modules/packages:

+
    +
  1. SCA Spec API: The APIs defined by the SCA Java Client and Implementation Spec
  2. +
  3. API: Tuscany APIs which extend the SCA spec APIs
  4. +
  5. Core: The runtime implementation
  6. +
  7. SPI: SPI and base classes to extend the Tuscany runtime. It defines all the contract that Core interacts with Container/Binding/Databinding extensions.
  8. +
  9. Extensions: +
      +
    1. Container
    2. +
    3. Binding
    4. +
    5. Databinding
    6. +
    +
  10. +
  11. Host API: The interface between hosting environments and the Tuscany runtime
  12. +
  13. Host Platforms: The environments that host the Tuscany runtime
  14. +
+ + +

+ +

Runtime Artifacts

+ +
    +
  • Component +
      +
    • Basic unit of executable code
    • +
    • Offer services and have references
    • +
    +
  • +
  • Service +
      +
    • A contract for component clients consisting of 0..n operations
    • +
    • Services may be local or remote
    • +
    +
  • +
  • Reference +
      +
    • A dependency on a service
    • +
    • Component references are wired to services by the runtime
    • +
    +
  • +
+ + +

Recursive Composite

+ +

Components may be Atomic or Composite

+
    +
  • Composite components contain 0..n components
    +Composite services are exposed over 1..n bindings (e.g. SOAP/HTTP, JMS, RMI)
    +Composite references have 1..n bindings and may target
  • +
  • A service exposed by another composite
  • +
  • A service outside the SCA system, e.g. "Google search"
    +A composite may contain just a service wired to a references (mediation) [Haleh: Clarify]
  • +
+ + +

Wiring

+ +

To understand how wiring works, we need to detail how Components function in the system. Let's start with Atomic Components and then discuss Composite Components.

+ +

Atomic Component

+ +

AtomicComponent is the most basic component form. It corresponds to the spec concept which offers services, has references and properties

+
    +
  • Implementation types e.g. Java, XSLT, etc.
  • +
  • Are wired
  • +
  • Have properties
  • +
+ + +

Atomic Components have implementation instances. Instances are associated with a scope: e.g. request, conversation, composite. A SCDL entry is used to define a Component. [Haleh: Define scope]

+ +

Atomic components use a ScopeContainer to manage implementation instances:

+
    +
  • Composite, HTTP Session, Request, Stateless
  • +
  • ScopeContainers track implementation instances by scope id and the AtomicComponent instance identity
  • +
  • Instances are stored in an InstanceWrapper which is specific to the component implementation type (e.g. PojoInstanceWrapper.java)
  • +
+ + +

Component Wiring

+ +

Component references are connected to services through wires

+
    +
  • Two sides +
      +
    • InboundWire - handles the source side of a wire, including policy
    • +
    • OutboundWire - handles the target side of a wire, including policy
    • +
    +
  • +
  • The runtime connects inbound and outbound wires, performing optimizations if possible +
      +
    • Inbound and outbound wires may be associated with different service contracts
    • +
    • Different implementation types
    • +
    • "Standard" wires contain invocation chains that have Interceptors that perform some form of mediation (e.g. policy)
    • +
    • Other wire types exist that, for example, do not perform mediations
    • +
    +
  • +
+ + +

Invocation Chains

+ +

A wire has an InvocationChain per service operation. An InvocationChain may have interceptors - "around-style" mediation. Component implementation instances access a wire through a WireInvocationHandler associated with a reference.

+
    +
  • WireInvocationHandlers may (or may not depending on the component type) be fronted by a proxy
  • +
  • WireInvocationHandlers dispatch an invocation to the correct chain
    +A wire has a TargetInvoker that is created from the target side AtomicComponent or Reference and is stored on the source wire invocation handler. The TargetInvoker is resposnible for dispatching the request to the target instance when the message hits the end of the target invocation chain.
  • +
+ + +

Invocation Overview

+ +
    +
  • An invocation is dispatched to the WireInvocationHandler
  • +
  • The WireInvocationHandler looks up the correct InvocationChain
  • +
  • It then creates a message, sets the payload, sets the TargetInvoker, and passes the message down the chain
  • +
  • When the message reaches the end of the chain, the TargetInvoker is called, which in turn is responsible for dispatching to the target
  • +
  • Having the TargetInvoker stored on the outbound side allows it to cache the target instance when the wire source has a scope of equal or lesser value than the target (e.g. request-->composite
  • +
+ + +

The runtime provides components with InboundWires and OutboundWires. InvocationChains are held in component wires and are therefore stateless which allows for dynamic behavior such as introduction of new interceptors or re-wiring.

+ +

Bootsrap

+ +

Bootstrap process is controlled by Host environment. The default process is implemented in DefaultBootstrapper.

+ +

+ +

Composite Hierarchy

+ +

+ +

The sequence diagram for the bootstrapping

+ +

+ +

Deployment

+ +

The runtime processes service assemblies serialized using SCA XML vocabulary, SCDL, but can take other forms.

+
    +
  • The load phase processes SCDL and creates an in-memory model
  • +
  • The build phase evaluates the model and produces corresponding runtime artifacts (e.g. components, services, references)
  • +
  • The connect phase wires references to services
  • +
+ + +

Loader

+ +

SCA service assemblies are deployed to the SCA domain in the format of SCDL files. Tuscany runtime uses loader to load the SCDLs into model objects which are a set of java beans to hold the metadata.

+ +

There are two types of loaders:

+
    +
  • StAXElementLoader: Load the XML element from the StAX events
  • +
  • ComponentTypeLoader: Load the Component Type for an implementation either by introspection or paring a side file
  • +
+ + +

Model

+ +

+ +

Loading Component Type

+ +

Loads the component type definition for a specific implementation

+
    +
  • How it does this is implementation-specific
  • +
  • May load XML sidefile (location set by implementation)
  • +
  • May introspect an implementation artifact (e.g. Java annotations)
  • +
  • ... or anything else
  • +
+ + +

Composite ComponentType Loader

+
    +
  • Load SCDL from supplied URL
  • +
  • Extract and load SCDL from composite package
  • +
+ + +

POJO ComponentType Loader

+
    +
  • Introspect Java annotations
  • +
  • Uses a pluggable "annotation processing" framework to introspect Java classes
  • +
+ + +

Builder

+ +

Java SCA builder creates a runtime component from the configuration model

+
    +
  • Builder for each implementation type
  • +
  • Builder for each binding type (service or reference component)
  • +
+ + +

Runtime component manages:

+
    +
  • Implementation instances
  • +
  • Inbound and Outbound wires
  • +
+ + +

Every implementation is likely to be different

+
    +
  • Different artifacts, programming model, ...
  • +
+ + +

Composite implementation recurses for contained components

+
    +
  • Re-invokes the Builder for every child
  • +
+ + +

Class diagram for the runtime artifacts

+ +

+ +

Connecting

+ +

The connector is reponsible to connect the wires for the components, services and references.

+ +

Federated Assembly

+ +

<notes from Meeraj's email on 2/1/07 - Haleh included here>
+I have been working on the stuff around federated assembly and enabling
+distributed SCA domains. Here is a quick summary of what has been done
+so far,

+ +

Work in progress

+ +

Discovery Service

+ +
    +
  • Provides the low-level communication abstraction for
    +enabling runtimes participating in the domain to exchange information
  • +
  • The abstraction supports directed message delivery to a
    +given runtime, asynchronous message reception and broadcast to all
    +runtimes participating in the domain
  • +
  • To start with we are following a model, where one
    +runtime in the domain assumes the master role and is responsible for
    +managing the logical assembly
  • +
  • This runtime creates the physical artifacts and
    +trensport them to the target slave runtimes
  • +
  • The discovery abstraction is defined in SPI
  • +
  • There are two implementations in runtime/services - JXTA
    +and Bonjour
  • +
  • JXTA implementaion is getting pretty much there, it
    +mainly uses the JXTA Peer Discovery protocol (PDP) and Peer Resolver
    +Protocol (PRP)
  • +
+ + +

Marshalling Framework

+ +
    +
  • This is similar to our loader framework, however
    +supports bi-directional marshalling and unmarshalling of physical model
    +objects
  • +
  • This framework is used by the assembly service to
    +serialize and transport physical model information to slave runtimes
    +using the discovery services
  • +
  • On the receiving end the serialized information is
    +unmarshalled by the federated deployer for being applied to the slave
    +runtime
  • +
  • The abstraction is defined in SPI
  • +
  • I am working on an implementation in core
  • +
  • The framework supports versioning of physicla model
    +objects if the participating runtimes are at different versions
  • +
+ + +

Federated Deployer

+ +
    +
  • This is similar to the local deployer, however registers
    +itself with the discovery service for receiving physical model updates
  • +
  • The federated deployer doesn't use the loader framework
  • +
  • The federated deployer accepts serialized physical model
    +information in XML, rather than raw SCDL as with local deployer
  • +
  • It uses the current builder framework to build, prepare
    +and start the components
    A note from Jeremy on federated deployment Feb. 9, 2007.
    The design is that there is a "master" node that is working out which"physical" nodes components are going to run on. It then
    +passes PhysicalComponentDefinition's to the worker nodes to get them tocreate the component and any transport bindings it needs
    +to talk toother nodes. The PCDs are portable, independent of the type ofruntime, instead tied to the type of component.Picking on
    +Ruby as an example as we know we can run that on Java andNative runtimes, there could be one common PCD for a Ruby componentthat
    +was supported by all container implementations. The master couldsend that to any node to have it run a Ruby component. A runtimecould
    +also offer "enhanced" Ruby support with additional featuresthat required additional configuration. If would offer support for adifferent
    +PCD with that additional metadata. Which one is selected bythe master would be part of its component allocation algorithm.So basically,
    +any runtime that can connect to the federated fabricand handle a PCD can join the SCA domain. We picked JXTA and XML forthe fabric and
    +PCD encoding as there is support for those in bothJava and C++. Adding support for that to the Native runtime wouldalso be good if you
    +were skeptical of all the Java stuff.
  • +
+ + +

Work outstanding

+ +
    +
  • Define the physical model in Java
  • +
  • Define the corresponding XML infoset
  • +
+ + +

Supported Extensions

+ + +

Spring

+ +

1) it allows a Spring application context to act as the
+implementation of an SCA component - this allows users to bring
+existing Spring applications into an SCA assembly
+2) it allows SCA components to act as Spring beans so that users can
+use services over SCA from their applications.

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-kernel-menu.html b/site/trunk/site-publish/java-sca-kernel-menu.html new file mode 100644 index 0000000000..0b02f1c703 --- /dev/null +++ b/site/trunk/site-publish/java-sca-kernel-menu.html @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Kernel Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > Delete-Java SCA Kernel > Java SCA Kernel Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+ +
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-kernel.html b/site/trunk/site-publish/java-sca-kernel.html new file mode 100644 index 0000000000..f34b8b801b --- /dev/null +++ b/site/trunk/site-publish/java-sca-kernel.html @@ -0,0 +1,137 @@ + + + + + + + + Java SCA Kernel + + + + + + + +
+  Apache Tuscany > Home > Java SCA > Java SCA Menu > Java SCA Kernel + +
+ + + + + + +
+
+ +
+ +
+ Added by jmarino, last edited by jmarino on Mar 03, 2007 + +
+ +
+
+ + +
+

Links

+

Architecture
+Build Status

+ +

The Kernel

+
+ +
+ Children + + Show Children + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-menu-new.html b/site/trunk/site-publish/java-sca-menu-new.html new file mode 100644 index 0000000000..d3ffd720dd --- /dev/null +++ b/site/trunk/site-publish/java-sca-menu-new.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Menu New + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu New + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+ +
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-menu.html b/site/trunk/site-publish/java-sca-menu.html new file mode 100644 index 0000000000..753bbc6e4c --- /dev/null +++ b/site/trunk/site-publish/java-sca-menu.html @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-modulization-design-discussions.data/Contribution Diagram.GIF b/site/trunk/site-publish/java-sca-modulization-design-discussions.data/Contribution Diagram.GIF new file mode 100644 index 0000000000..bc8b2edf1b Binary files /dev/null and b/site/trunk/site-publish/java-sca-modulization-design-discussions.data/Contribution Diagram.GIF differ diff --git a/site/trunk/site-publish/java-sca-modulization-design-discussions.data/Contribution Diagram.GIF.jpeg b/site/trunk/site-publish/java-sca-modulization-design-discussions.data/Contribution Diagram.GIF.jpeg new file mode 100644 index 0000000000..538e132588 Binary files /dev/null and b/site/trunk/site-publish/java-sca-modulization-design-discussions.data/Contribution Diagram.GIF.jpeg differ diff --git a/site/trunk/site-publish/java-sca-modulization-design-discussions.data/Tuscany-Kernel.doc b/site/trunk/site-publish/java-sca-modulization-design-discussions.data/Tuscany-Kernel.doc new file mode 100644 index 0000000000..3b8057b544 Binary files /dev/null and b/site/trunk/site-publish/java-sca-modulization-design-discussions.data/Tuscany-Kernel.doc differ diff --git a/site/trunk/site-publish/java-sca-modulization-design-discussions.data/tuscany-kernel-modulization.jpg b/site/trunk/site-publish/java-sca-modulization-design-discussions.data/tuscany-kernel-modulization.jpg new file mode 100644 index 0000000000..e7970a0d31 Binary files /dev/null and b/site/trunk/site-publish/java-sca-modulization-design-discussions.data/tuscany-kernel-modulization.jpg differ diff --git a/site/trunk/site-publish/java-sca-modulization-design-discussions.data/tuscany-kernel-modulization.jpg.jpeg b/site/trunk/site-publish/java-sca-modulization-design-discussions.data/tuscany-kernel-modulization.jpg.jpeg new file mode 100644 index 0000000000..7b02fe8ae3 Binary files /dev/null and b/site/trunk/site-publish/java-sca-modulization-design-discussions.data/tuscany-kernel-modulization.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-modulization-design-discussions.html b/site/trunk/site-publish/java-sca-modulization-design-discussions.html new file mode 100644 index 0000000000..4e54c3deab --- /dev/null +++ b/site/trunk/site-publish/java-sca-modulization-design-discussions.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Modulization Design Discussions + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Java SCA Modulization Design Discussions + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

The module list has moved to the Extension Guide

+ +

Conceptual View of Java SCA Modulization for Discussion

+
A note from Raymond
I'm poor with colors but I'm trying to use the color to group the related modules.
+

+ +

The diagram in Microsoft Word format

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-next-release-contents.html b/site/trunk/site-publish/java-sca-next-release-contents.html new file mode 100644 index 0000000000..301a678e95 --- /dev/null +++ b/site/trunk/site-publish/java-sca-next-release-contents.html @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Next Release Contents + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Java SCA Next Release Contents + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

Next Java SCA Release Contents

+ +

This page outlines the features being planned for the next Java SCA release.

+ +

The next release (0.9x?) is targeted for (August?) 2007, this follows on from the 0.91 release in July.

+ +

Working on

+ +
    +
  • Improvements to the Web services support / Axis2 binding (very rough list, more desired than actually working on yet) +
      +
    • work without pre-existing wsdl doc
    • +
    • support attachments
    • +
    • support accessing/setting SOAP headers
    • +
    • WS-RM and WS-Security
    • +
    • support WSA EPR in < binding.ws>
    • +
    • async
    • +
    • conversational
    • +
    • Fix open jira's about ?wsdl and endpoint url
    • +
    • support setting some optional stuff like Axis2 handlers, chunking, soap version etc
    • +
    • Axis2 rest style / pox over http support
    • +
    • Sort out our WSDL tooling story - get SDO integrated into Axis2?
    • +
    • support WSDL 2.0
    • +
    +
  • +
+ + +
    +
  • Policy Framework Implementation (Venkat) +
      +
    • (I'll fill up the specifics soon)
    • +
    +
  • +
+ + +
    +
  • Distributed Domain support (SimonL) +
      +
    • SCA Binding
    • +
    • Topology model
    • +
    • Distributed domain
    • +
    • Node implementation
    • +
    • Management assembly (can be used for other management tasks also)
    • +
    • Also I need some of the ws items, in particular the ability to run without wsdl, so can help out there.
    • +
    +
  • +
+ + +
    +
  • Logging, error handling and events +
      +
    • To improve the usability of the runtime we need a proper story on logging and error handling. This has been discussed previously on the list but not yet actioned. The management assembly has a role to play here.
    • +
    +
  • +
+ + +
    +
  • JMS Binding +
      +
    • I'd like to see the JMS binding in the release but can't commit to doing lots more work on including spec features. It's been working fine for me in my limited synchronous/rpc scenario. If I get time I'll take a look to see what it will take to add minimum asynch support but if anyone else fancies having a go at this then it's a good way to learn about Tuscany extensions.
    • +
    +
  • +
+ + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-next-release-planning.html b/site/trunk/site-publish/java-sca-next-release-planning.html new file mode 100644 index 0000000000..f35042c8fa --- /dev/null +++ b/site/trunk/site-publish/java-sca-next-release-planning.html @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA next release planning + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > Java SCA next release planning + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Planning for the next (alpha4?) Java SCA release 

+ +

See related mailing list discussion:   http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev/200703.mbox/%3c19e0530f0703291922u61869ecdqa10a3f91ba5a1350@mail.gmail.com%3e

+ +

Ideas for features that can be in the next release

+

Kernel

+

Component implementation

+

Bindings

+

DataBinding extensions

+ +

[Top down build/packaging]

+

Does it make sense to finalize the feature list and then figure this out?
+For example, decide on which bindings, extensions are in and then build this list.

+ +

Here's a list of all the modules currently in the trunk:

+ +

composite-plugin
+console
+contrib\discovery\bonjour
+contrib\discovery\installjxta
+contrib\discovery\jxta
+contrib\equinox
+contrib\osgi
+contrib\plugin.standalone
+core-samples\common\calculator
+core-samples\standalone\calculator
+core-samples\standalone\loanapplication
+core-samples\standalone\script-calculator
+core-samples\webapp\webcalc
+extensions\axis2\binding
+extensions\axis2\databinding
+extensions\axis2\plugins\java2wsdl
+extensions\axis2\plugins\wsdl2java
+extensions\axis2\samples
+extensions\axis2\tools\java2wsdl
+extensions\axis2\tools\wsdl2java
+extensions\bpel\container
+extensions\celtix\binding
+extensions\celtix\samples\helloworldws-celtix
+extensions\groovy\container
+extensions\groovy\samples
+extensions\hessian\binding
+extensions\javascript\container
+extensions\javascript\samples
+extensions\jms\binding
+extensions\jms\samples
+extensions\jsonrpc\binding
+extensions\jsonrpc\samples
+extensions\rmi\binding.rmi
+extensions\rmi\samples
+extensions\ruby\container
+extensions\ruby\samples
+extensions\script\container.bsf
+extensions\script\container.jsr223
+extensions\script\databinding.e4x
+extensions\script\testing\groovy
+extensions\script\testing\javascript
+extensions\script\testing\jruby
+extensions\script\testing\jython
+extensions\servicemix\binding
+extensions\spring\container
+http.jetty
+idl
+idl-java
+idl-wsdl
+integration-test\propertyTest
+integration-test\specTest
+jms-discovery
+kernel\api
+kernel\core
+kernel\databinding
+kernel\host-api
+kernel\spi
+runtime\embedded
+runtime\itest\plugin
+runtime\itest\smoketest
+runtime\services\contribution\contribution
+runtime\services\contribution\contribution-framework
+runtime\services\contribution\contribution-installer
+runtime\services\management\jmx
+runtime\services\maven
+runtime\standalone\assembly
+runtime\standalone\launcher
+runtime\standalone\server.shutdown
+runtime\standalone\server.start
+runtime\standalone\smoketest
+runtime\standalone\standalone-api
+runtime\standalone\standalone-host
+runtime\webapp\plugin.war
+runtime\webapp\smoketest
+runtime\webapp\webapp-api
+runtime\webapp\webapp-host
+scdl4j\assembly
+scdl4j\policy
+services\databinding\databinding-castor
+services\databinding\databinding-framework
+services\databinding\databinding-jaxb
+services\databinding\databinding-json
+services\databinding\databinding-sdo
+services\databinding\databinding-sdo-axiom
+services\databinding\databinding-xmlbeans
+services\persistence\common
+services\persistence\datasource
+services\persistence\openjpa
+services\persistence\store.jdbc
+services\persistence\store.journal
+services\transaction\transaction.geronimo
+services\transports\http.tomcat

+ +

Samples

+ +

Here's the list of samples currently available. Some need a little bit of cleanup or adjustments to the latest SCDL and API levels, but most of them should be usable if we want to include them in our next release.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Module Description
calculator A simple calculator made of SCA components implementing each calculator operation, shows how to implement SCA Java components and assemble them in an SCA composite
loanapplication Shows the use of callback and conversational services
composite-impl Shows nested composition, using <implementation.composite> to implement an SCA component
simple-callback A simple client calling a service with callback
simple-bigbank A simplified version of the Bigbank scenario from the SCA spec, implemented with Java components, no bindings
supplychain A supply chain management app (similar to the WS-I supplychain scenario) showing how to invoke SCA components asynchronously
echo-binding Shows how to extend Tuscany and implement support for a new service binding
echo-databinding Shows how to extend Tuscany and implement support for a new data binding
bigbank An implementation of the BigBank scenario from the SCA spec
calculator-ws The calculator sample with a Web Service binding
helloworld-ws A helloworld Web service, shows how to provide a Web service using an SCA Web Service binding
helloworld-async A helloworld Web service with callback, showing how to invoke Web Services asynchronously
helloworld-ws-om A helloworld Web service, shows how to use Axiom in an SCA component
loanapplication-ws A version of the loanapplication sample using Web Service bindings (this one is currently broken)
helloworld-jms A helloworld service using a JMS binding
jsonrpc helloworld A helloworld service using a JSONRPC binding
script samples?
We have javascript, ruby and groovy helloworld samples, but I'm not sure if they currently work
spring sample?
If we want to include the spring extension in the next release, we probably need a sample as well
web 2.0 sample?
It would be great to have a web 2.0 sample similar to the Tuscany native AlertAggregator sample.
+ We may be able to reuse some of it and try to run it on the Java runtime
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-overview.html b/site/trunk/site-publish/java-sca-overview.html new file mode 100644 index 0000000000..afd797d376 --- /dev/null +++ b/site/trunk/site-publish/java-sca-overview.html @@ -0,0 +1,196 @@ + + + + + + + + Java SCA Overview + + + + + + + +
+  Apache Tuscany > Home > Java SCA > Java SCA Menu > Java SCA Overview + +
+ + + + + + +
+
+ +
+ +
+ Added by jmarino, last edited by jmarino on Mar 03, 2007 +  (view change) + +
+ +
+
+

Overview

+ +

The SCA Java runtime is composed of a kernel and extensions. The kernel is essentially a multi-VM wiring engine that connects components together using the principles of Dependency Injection, or Inversion of Control.

+ +

Kernel

+ +

The kernel is designed to be simple and limited in its capabilities: it wires functional units together. Capabilities such as service discovery, reliability, support for transport protocols, etc. are provided through extensions. The kernel extension model is based on the SCA 1.0 Java programming and assembly model. In otherwords, the kernel uses SCA to bootstrap itself. The mechanics of how this is done are described in detail elsewhere Kernel Architecture.

+ +

The kernel is divided into a number of modules: api, host_api, spi and core. The api module defines Tuscany proprietary programming model annotations and APIs. The host_api module defines APIs for interacting with the kernel. The spi module defines extension points and abstract helper classes. The core module contains the kernel implementation.

+ +

Extensions

+ +

Extensions enhance the kernel with specific sets of functionality. Extension types are not fixed and the kernel is designed to be as flexible as possible by providing an open-ended extension model. From the kernel perspective, extensions are just a set of SCA components. However, there are a number of known extension types defined by the spi module, including:

+ +
    +
  • Component implementation types, e.g. Spring, Groovy, and JavaScript
  • +
  • Binding types, e.g. Axis, CXF, AMQP, ActiveMQ, JXTA
  • +
  • DataBinding types, e.g. JAXB, SDO, XmlBeans
  • +
+ + +

There are also a number of add-on extensions that do not correspond to a well-know type:

+ +
    +
  • The JPA extension for O/R mapping
  • +
  • The Geronimo Transaction Manager extension for transactional support in the runtime
  • +
  • The HOWL-based Persistent Store extension for high-throughput persistence of conversational state
  • +
+ + +

More detail can be found in the Extensions Guide section, but a few high-level best practices for designing extensions are listed here:

+ +
    +
  • Make sure you are familiar with SCA 1.0 Assembly and the SCA Java 1.0 programming model. Specifications can be found at www.osoa.org.
  • +
+ + +
    +
  • Never reference any classes in core. These classes are implementation-specific and subject to change; they are not part of the public SPI contract.
  • +
+ + +
    +
  • Use autowire when assembling extension components.
  • +
+ + +
    +
  • Do not mess with classloaders such as setting the current context classloader unless it is absolutely necessary, i.e. a library used by an extension makes assumptions about context classloaders. Ideally the library can be refactored to not make these assumptions. If not, make sure the extension properly resets the current context classloader.
  • +
+ + +
    +
  • Preferrably use EasyMock for mocking kernel functionality during extension unit testing.
  • +
+ + + + + +
    +
  • Preferrably use EasyMock for mocking kernel functionality during extension unit testing.
  • +
+ + + + + +

Runtimes

+ +

The kernel is designed to be embedded in, or provisioned to, a number of different host environments. For example, the kernel may be provisioned to an OSGi container, a standalone runtime, a servlet engine, or JEE application server. There is even a Maven runtime that embeds kernel for integration testing. Runtime capabilities may vary based on the host environment.

+ + + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-runtime-component-hierarchy.data/recursive_composite.jpg b/site/trunk/site-publish/java-sca-runtime-component-hierarchy.data/recursive_composite.jpg new file mode 100644 index 0000000000..5159b9eb07 Binary files /dev/null and b/site/trunk/site-publish/java-sca-runtime-component-hierarchy.data/recursive_composite.jpg differ diff --git a/site/trunk/site-publish/java-sca-runtime-component-hierarchy.data/recursive_composite.jpg.jpeg b/site/trunk/site-publish/java-sca-runtime-component-hierarchy.data/recursive_composite.jpg.jpeg new file mode 100644 index 0000000000..2eadda4245 Binary files /dev/null and b/site/trunk/site-publish/java-sca-runtime-component-hierarchy.data/recursive_composite.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-runtime-component-hierarchy.html b/site/trunk/site-publish/java-sca-runtime-component-hierarchy.html new file mode 100644 index 0000000000..19679ba198 --- /dev/null +++ b/site/trunk/site-publish/java-sca-runtime-component-hierarchy.html @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Runtime Component Hierarchy + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > DELETE- Java SCA Architecture Overview > Java SCA Runtime Component Hierarchy + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

The assmebly diagram

+ +

+
Composite1
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+    targetNamespace="http://sample"
+    xmlns:sample="http://sample"
+    name="Composite1">
+
+    <component name="ComponentA">
+        <implementation.java class="sample.ComponentAImpl"/>
+    </component>
+
+    <component name="ComponentB">
+        <!-- Implemented by Composite3 -->
+        <implementation.composite name="sample:Composite3"/>
+
+        <!-- Wired to ComponentA -->
+        <reference name="Reference1" target="ComponentA"/>
+
+        <property name="Property1">ABC</property>
+    </component>
+
+    <!-- ComponentB.Service1 is promoted -->
+    <service name="Service1" promote="ComponentB/Service1" />
+
+</composite>
+
+
+
Composite2
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://sample" xmlns:sample="http://sample"
+    name="Composite2">
+
+    <component name="ComponentC">
+        <implementation.java class="sample.ComponentAImpl" />
+
+        <!-- Wired to ComponentD.Service1 -->
+        <reference name="Reference1" target="ComponentD/Service1" />
+    </component>
+
+    <component name="ComponentD">
+        <!-- Implemented by Composite3 -->
+        <implementation.composite name="sample:Composite3" />
+
+        <!-- The property value is "XYZ" -->
+        <property name="Property1">XYZ</property>
+    </component>
+
+    <!-- ComponentD.Reference1 is promoted -->
+    <reference name="Reference1" promote="ComponentD/Reference1" />
+
+</composite>
+
+
+
Composite3
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://sample" xmlns:sample="http://sample"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Composite3">
+
+    <component name="ComponentE">
+        <implementation.java class="sample.ComponentEImpl" />
+        <reference name="Reference1" target="ComponentF/Service1" />
+
+        <!-- The property is from the composite Property1 -->
+        <property name="Property1" source="$Property1" />
+    </component>
+
+    <component name="ComponentF">
+        <implementation.java class="sample.ComponentFImpl" />
+    </component>
+
+    <service name="Service1" promote="ComponentE/Service1" />
+
+    <reference name="Reference1" promote="ComponentF/Reference1">
+        <binding.sca />
+    </reference>
+
+    <property name="Property1" type="xsd:string">123</property>
+
+</composite>
+
+
+

1) Two components are implemented by the same composite

+Path a: Composite1.ComponentB is implemented by Composite3
+Path b: Composite2.ComponentD is implemented by Composite3

+The service/reference can be promoted to different things:

+a: the final target for the ComponentF.Reference1 is Composite1.ComponentA
+b: the final target for the ComponentF.Reference1 is Composite1.Reference1 (pointing to an external service)

+The property can be set to different value following different composition path:

+a: Composite3.ComponentE.Property1 is overrided by Composite1.ComponentB.Property1 (say value="ABC")
+b: Composite3.ComponentE.Property1 is overrided by Composite2.ComponentD.Property1 (say value="XYZ")

+To represent the fully-configured components, we need to clone the model for Composite3 for Path a and b so that it can be used to hold different resolved values.

+ + +
Runtime Wires
+

Hi,

+ +

I'm trying to indentify all the paths of SCA component interactions which
+require to have runtime wires/invocation chains.

+ +

By the SCA spec, there are three cases for the wiring:

+ +

1) Component.Reference (A.ref1) -is wired to-> Component.Service (B.svc1)
+--------------------------------------------------------------------------------------------------
+1.1) If both the service and reference are defined by non-composite
+components, then the runtime wire is as simple as A.ref1-->B.svc1.

+ +

1.2) If the service is defined on a composite component, then it can be
+further resolved to the orginal atomic component service following the
+service promotion chain.

+ +

For example, A.ref1 --> B.svc1 (B is implemented by another composite and
+B.svc1 promotes C.svc1), then the runtime wire will be: A.ref1 --> C.svc1

+ +

1.3) If the reference is defined on a composite component, then it can be
+further resolved to the orginal atomic component reference following the
+reference promotion chain.

+ +

For example, A.ref1 --> B.svc1 (A is implemented by another composite and
+A.ref1 promotes C.ref1), then the runtime wire will be: C.ref1 --> B.svc1

+ +

2) Composite.Reference (Composite1.ref1) -promotes-> Component.Reference
+(B.ref1)
+-----------------------------------------------------------------------------------------------------------------
+If Composite1 is the top-level composite, and the B is a non-composite
+component, then the runtime wire will be: B.ref1 --> Composite1.ref1

+ +

If Composite1 is used to implement a component A in Composite2, then we need
+to futher check if A.ref1 is promoted or wired until we hit the end of the
+promotion chain. The final target will be either a composite reference or a
+component service that the out-most reference is wired to. For example, if
+A.ref1 is wired to D.svc1 in Composite2, then the runtime wire is B.ref1 -->
+D.svc1. If A.ref1 is promoted by Composite2.ref1, then the runtime wire is
+B.ref1 --> Composite2.ref1.

+ +

If B is a composite component, then we need to find out the final component
+reference that B.ref1 promotes. For example, it promotes D.ref1, then the
+runtime wire is D.ref1 --> C.ref1

+ +

3) Composite.Service (Composite1.svc1) -promotes-> Component.Service
+(A.svc1)
+-----------------------------------------------------------------------------------------------------------
+The source will be the outmost service on the promotion chain. For example,
+if Composite2.svc1 promotes B.svc1 and B is implemented by Composite1, then
+it is Composite2.svc1.

+ +

The target will be the innermost service on the promotion chain. For
+example, if A is implemented by Composite3 and Composite3.svc1 promotes
+C.svc1, then it is C.svc1.

+ +
    +
  • Please note, due to the spec limitation, the composite service cannot
    +promote a composite reference directly.
  • +
+ + +

Based on the above scenarios, it seems that we can create runtime wires
+using the following algorithm (assuming multiplicity = 1..1). The key is to
+get a final list of targets and selected bindings.

+ +

1) Runtime wire for references: For each of the references (r1) on
+non-composite components, find the outmost reference (r0) on the reference
+promotion chain. Then get the targets and selected bindings from r0. If SCA
+binding is used for a target, it can be further optimized to use the
+orginally promoted component service. The runtime wire should be created
+between the r1 and a target (either a component service with SCA binding or
+a reference binding) from r0.

+ +

2) Runtime wire for service promotions: For each of the service1 (s1) on
+non-composite components, find the outmost service (s0, can be the same as
+s1) on the service promotion chain. Create a runtime wire between the
+selected binding of s0 and the component that defines s1. (Can we assume
+that s1 is always local to s0?)

+ +

The service/reference promotions make the picture complicated. I hope my
+thought makes sense.

+ +

Thanks,
+Raymond

+
+ +
Runtime Context Interfaces
+
+public interface RuntimeContext<M> extends Lifecycle {
+    /**
+     * Create an intercetor for the model in the invocation chain. For a reference binding,
+     * the interceptor is responsible to make the outbound invocation over the binding protocol.
+     * For a service binding, the interceptor is responsible to dispatch the incoming call to
+     * the target component service that the service promotes. For a component implementation,
+     * the interceptor will be responsible for calling the implementation logic for the given
+     * component.
+     * 
+     * @param model The service that defines the binding
+     * @param operation The operation that the interceptor will handle
+     * @param isCallback A flag to tell if the operation is for the callback
+     * @return An interceptor that handles the invocation logic, null should be returned if no 
+     * interceptor is required
+     */
+    Interceptor createInterceptor(M model, Operation operation, boolean isCallback);
+    
+    /**
+     * Get the effective interface contract imposed by the binding or implementation. For
+     * example, it will be interface contract introspected from the WSDL portType used by the
+     * endpoint for a WebService binding.
+     * @param model The model object
+     * 
+     * @return The effective interface contract
+     */
+    InterfaceContract getEffectiveInterfaceContract(M model);
+}
+
+public interface ReferenceBindingContext extends RuntimeContext<Reference> {
+    /**
+     * @param wire
+     */
+    void setRuntimeWire(RuntimeWire wire);
+    /**
+     * @return
+     */
+    RuntimeWire getWire();    
+}
+
+public interface ServiceBindingContext extends RuntimeContext<Service> {
+    /**
+     * @param wire
+     */
+    void setRuntimeWire(RuntimeWire wire);
+    /**
+     * @return
+     */
+    RuntimeWire getWire();    
+}
+
+public interface ImplementationContext extends RuntimeContext<Component> {
+}
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-runtimes-menu.html b/site/trunk/site-publish/java-sca-runtimes-menu.html new file mode 100644 index 0000000000..e5f167c560 --- /dev/null +++ b/site/trunk/site-publish/java-sca-runtimes-menu.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Runtimes Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > Java SCA Runtimes > Java SCA Runtimes Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ + +
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-runtimes.html b/site/trunk/site-publish/java-sca-runtimes.html new file mode 100644 index 0000000000..e4a044964a --- /dev/null +++ b/site/trunk/site-publish/java-sca-runtimes.html @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Runtimes + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > Java SCA Runtimes + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+

Runtimes

+

Standalone
+OSGi
+JEE App Server
+Servlet Engine
+Maven

+ +

Runtimes

+ +

The kernel may be provisioned to a variety of host environments, including a Standalone runtime, and OSGi container, a Servlet Engine or a JEE application server. We also provide a Maven runtime for integration testing.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-subproject.data/junk.jpg b/site/trunk/site-publish/java-sca-subproject.data/junk.jpg new file mode 100644 index 0000000000..5331968e0e Binary files /dev/null and b/site/trunk/site-publish/java-sca-subproject.data/junk.jpg differ diff --git a/site/trunk/site-publish/java-sca-subproject.data/junk.jpg.jpeg b/site/trunk/site-publish/java-sca-subproject.data/junk.jpg.jpeg new file mode 100644 index 0000000000..c8ea4d18d8 Binary files /dev/null and b/site/trunk/site-publish/java-sca-subproject.data/junk.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-subproject.data/junk2.jpg b/site/trunk/site-publish/java-sca-subproject.data/junk2.jpg new file mode 100644 index 0000000000..28fec80278 Binary files /dev/null and b/site/trunk/site-publish/java-sca-subproject.data/junk2.jpg differ diff --git a/site/trunk/site-publish/java-sca-subproject.data/junk2.jpg.jpeg b/site/trunk/site-publish/java-sca-subproject.data/junk2.jpg.jpeg new file mode 100644 index 0000000000..1dc5c1d808 Binary files /dev/null and b/site/trunk/site-publish/java-sca-subproject.data/junk2.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-subproject.data/tuscanylogo.jpg b/site/trunk/site-publish/java-sca-subproject.data/tuscanylogo.jpg new file mode 100644 index 0000000000..2c7a85b0c2 Binary files /dev/null and b/site/trunk/site-publish/java-sca-subproject.data/tuscanylogo.jpg differ diff --git a/site/trunk/site-publish/java-sca-subproject.data/tuscanylogo.jpg.jpeg b/site/trunk/site-publish/java-sca-subproject.data/tuscanylogo.jpg.jpeg new file mode 100644 index 0000000000..bf56a9fcb0 Binary files /dev/null and b/site/trunk/site-publish/java-sca-subproject.data/tuscanylogo.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-subproject.html b/site/trunk/site-publish/java-sca-subproject.html new file mode 100644 index 0000000000..7ccd708041 --- /dev/null +++ b/site/trunk/site-publish/java-sca-subproject.html @@ -0,0 +1,131 @@ + + + + + + + Java SCA Subproject : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject + + User List | Dev List | Issue Tracker   +
+ + + + +
+
+ +
+
+ + +
+ + + + + + +
Resources
+
+ +

Tuscany SCA Java

+ +

Tuscany Java SCA provides the infrastructure to develop and run SCA based applications. At the very high level, Java SCA can be divided into core and extensions. The core supports the SCA assembly model, Tuscany value-add features and simple extension point to add extensions. Tuscany Java SCA is designed to be embedded in, or provisioned to, a number of different host environments.

+ +

Tuscany SCA Java extension points allow any binding type, component implementation (programming model), policy and data binding to be easily added to it. The Tuscany community has contributed the extensions that are shown below. An extension becomes available for the latest Kernel release as volunteers test and enhance the extension to work with the latest release.

+ + + + + + + + + + + + +
BindingsComponent ImplementationsData Bindings - for handling data
Apache Axis2
+Celtix (this is obsolete since Apache CXF should replace it)
+JMS (tested with Apache ActiveMQ)
+JSON-RPC
Java components (as described in the SCA Java C&I spec)
+Spring assemblies
+Scripting with JSR 223
+JavaScript
+Groovy
+Ruby
+BPEL (a prototype using Apache ODE)
JAXB
+SDO
+Axiom
+Castor
+XMLBeans
+
+

Copyright © 2006, The Apache Software Foundation Apache Tuscany is undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Web Services PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

+
+ + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sca-tools.data/SCA Tooling.ppt b/site/trunk/site-publish/java-sca-tools.data/SCA Tooling.ppt new file mode 100644 index 0000000000..2bc3c1b147 Binary files /dev/null and b/site/trunk/site-publish/java-sca-tools.data/SCA Tooling.ppt differ diff --git a/site/trunk/site-publish/java-sca-tools.data/SCACompositeDesigner.PNG b/site/trunk/site-publish/java-sca-tools.data/SCACompositeDesigner.PNG new file mode 100644 index 0000000000..f9fdbae80d Binary files /dev/null and b/site/trunk/site-publish/java-sca-tools.data/SCACompositeDesigner.PNG differ diff --git a/site/trunk/site-publish/java-sca-tools.data/SCACompositeDesigner.PNG.jpeg b/site/trunk/site-publish/java-sca-tools.data/SCACompositeDesigner.PNG.jpeg new file mode 100644 index 0000000000..3dd33ffeb0 Binary files /dev/null and b/site/trunk/site-publish/java-sca-tools.data/SCACompositeDesigner.PNG.jpeg differ diff --git a/site/trunk/site-publish/java-sca-tools.html b/site/trunk/site-publish/java-sca-tools.html new file mode 100644 index 0000000000..1d3110b062 --- /dev/null +++ b/site/trunk/site-publish/java-sca-tools.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA Tools + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > Subproject Menus > SCA Java Subproject Menu > Java SCA Tools + + User List | Dev List | Issue Tracker   +
+ + + + + +
+ + +
+ +
+
+

+ + + + + + + +
+ +

Tools for SCA

+ +

Purpose of this page is to share with the Tuscany community information about available open source SCA tools.

+ +

Eclipse SOA Tools Platform (STP)

+ +

The Eclipse SOA Tools Platform(ST) aims to build frameworks and tools that enable the design, configuration, assembly, deployment, monitoring, and management of software designed around a Service Oriented Architecture (SOA).

+ +

The STP/SCA sub project provides a set of tools for the Service Component Architecture (SCA).

+ +

STP/SCA subproject: SCA Composite Designer

+ +

The SCA Composite Designer is an Eclipse graphical development environment for the construction of SCA composite assemblies. The designer supports Tuscany elements like RMI binding or Script implementation. It works with Tuscany 1.1, and it's planned to support Tuscany 1.2.

+ +

+ + +

In STP/SCA sub project web page, you can find a tutorial named "First Steps with the SCA Composite Designer". You will learn how to build and run your first SCA application in 20 minutes! The tutorial addresses the following points:

+ +
    +
  • How to install STP/SCA plugins and Apache Tuscany,
  • +
  • How to define an SCA assembly with the SCA Composite Designer,
  • +
  • How to refine properties in an SCA assembly,
  • +
  • How to define an SCA assembly with different implementation technologies,
  • +
  • How to define an RMI binding,
  • +
  • How to run and test SCA assemblies with Tuscany.
  • +
+ + +
+

Copyright © 2006, The Apache Software Foundation Apache Tuscany is undergoing incubation at The Apache Software Foundation (ASF)~, sponsored by the Web Services PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.~

+ + + + + + + + + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca-user-guide.data/java_imp.jpg b/site/trunk/site-publish/java-sca-user-guide.data/java_imp.jpg new file mode 100644 index 0000000000..28f1a106cc Binary files /dev/null and b/site/trunk/site-publish/java-sca-user-guide.data/java_imp.jpg differ diff --git a/site/trunk/site-publish/java-sca-user-guide.data/java_imp.jpg.jpeg b/site/trunk/site-publish/java-sca-user-guide.data/java_imp.jpg.jpeg new file mode 100644 index 0000000000..e7a34f439a Binary files /dev/null and b/site/trunk/site-publish/java-sca-user-guide.data/java_imp.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca-user-guide.html b/site/trunk/site-publish/java-sca-user-guide.html new file mode 100644 index 0000000000..3aad5f717f --- /dev/null +++ b/site/trunk/site-publish/java-sca-user-guide.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Java SCA User Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > Java SCA User Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

server for SOA

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/java-sca.data/Extensions2.jpg b/site/trunk/site-publish/java-sca.data/Extensions2.jpg new file mode 100644 index 0000000000..5331968e0e Binary files /dev/null and b/site/trunk/site-publish/java-sca.data/Extensions2.jpg differ diff --git a/site/trunk/site-publish/java-sca.data/Extensions2.jpg.jpeg b/site/trunk/site-publish/java-sca.data/Extensions2.jpg.jpeg new file mode 100644 index 0000000000..c8ea4d18d8 Binary files /dev/null and b/site/trunk/site-publish/java-sca.data/Extensions2.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca.data/junk.jpg b/site/trunk/site-publish/java-sca.data/junk.jpg new file mode 100644 index 0000000000..5331968e0e Binary files /dev/null and b/site/trunk/site-publish/java-sca.data/junk.jpg differ diff --git a/site/trunk/site-publish/java-sca.data/junk.jpg.jpeg b/site/trunk/site-publish/java-sca.data/junk.jpg.jpeg new file mode 100644 index 0000000000..c8ea4d18d8 Binary files /dev/null and b/site/trunk/site-publish/java-sca.data/junk.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca.data/junk2.jpg b/site/trunk/site-publish/java-sca.data/junk2.jpg new file mode 100644 index 0000000000..28fec80278 Binary files /dev/null and b/site/trunk/site-publish/java-sca.data/junk2.jpg differ diff --git a/site/trunk/site-publish/java-sca.data/junk2.jpg.jpeg b/site/trunk/site-publish/java-sca.data/junk2.jpg.jpeg new file mode 100644 index 0000000000..1dc5c1d808 Binary files /dev/null and b/site/trunk/site-publish/java-sca.data/junk2.jpg.jpeg differ diff --git a/site/trunk/site-publish/java-sca.html b/site/trunk/site-publish/java-sca.html new file mode 100644 index 0000000000..b25c2380a8 --- /dev/null +++ b/site/trunk/site-publish/java-sca.html @@ -0,0 +1,195 @@ + + + + + + + + Java SCA + + + + + + + +
+  Apache Tuscany > Home > Java SCA + +
+ + + + + + +
+
+ +
+ +
+ Added by jmarino, last edited by haleh mahbod on Apr 13, 2007 +  (view change) + +
+ +
+
+ + +
+

General

+

FAQ
+Downloads
+What's new?

+ +

Guides

+

User Guide
+Developer Guide
+Extension Guide
+Architecture Guide
+Java Doc

+ +

Development

+

Java SCA Source
+Get Involved

+ +

Java SCA Subproject

+ +

Tuscany Java SCA provides the infrastructure to develop and run SCA based applications. At the very high level, Java SCA can be divided into a core kernel and extensions. The kernel supports the SCA assembly model, Tuscany value-add features and simple extension point to add extensions. The kernel is designed to be embedded in, or provisioned to, a number of different host environments.

+ +

Tuscany extension points allow any binding type, component implementation (programming model), policy and data binding to be easily added to Tuscany. The Tuscany community has contributed the extensions that are shown below. An extension becomes available for the latest Kernel release as volunteers test and enhance the extension to work with the latest release.

+ + + + + +
Bindings - used for services and references
+

Apache Axis2
+Celtix (this is obsolete since Apache CXF should replace it)
+JMS (tested with Apache ActiveMQ)
+JSON-RPC

+ + + + + +
Component Implementations
+

Java components (as described in the SCA Java C&I spec)
+Spring assemblies
+Scripting with JSR 223
+JavaScript
+Groovy
+Ruby
+BPEL (a prototype using Apache ODE)

+ + + + + +
Data Bindings - for handling data
+

JAXB
+SDO
+Axiom
+Caster
+XMLBeans

+

Copyright © 2006, The Apache Software Foundation Apache Tuscany is undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Web Services PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

+
+ +
+ Children + + Show Children + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/java-sdo-menu.html b/site/trunk/site-publish/java-sdo-menu.html new file mode 100644 index 0000000000..9d1aa9aef7 --- /dev/null +++ b/site/trunk/site-publish/java-sdo-menu.html @@ -0,0 +1,92 @@ + + + + + + + Java SDO Menu : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Menus > SDO > Java SDO Menu + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
Tuscany SDO
+ + +
Resources
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/javaone-demo.data/J1_BOF_01.jpg b/site/trunk/site-publish/javaone-demo.data/J1_BOF_01.jpg new file mode 100644 index 0000000000..4495d70965 Binary files /dev/null and b/site/trunk/site-publish/javaone-demo.data/J1_BOF_01.jpg differ diff --git a/site/trunk/site-publish/javaone-demo.data/J1_BOF_01.jpg.jpeg b/site/trunk/site-publish/javaone-demo.data/J1_BOF_01.jpg.jpeg new file mode 100644 index 0000000000..38fc5ca8d4 Binary files /dev/null and b/site/trunk/site-publish/javaone-demo.data/J1_BOF_01.jpg.jpeg differ diff --git a/site/trunk/site-publish/javaone-demo.data/J1_BOF_01.pdf b/site/trunk/site-publish/javaone-demo.data/J1_BOF_01.pdf new file mode 100644 index 0000000000..fdb744e154 Binary files /dev/null and b/site/trunk/site-publish/javaone-demo.data/J1_BOF_01.pdf differ diff --git a/site/trunk/site-publish/javaone-demo.html b/site/trunk/site-publish/javaone-demo.html new file mode 100644 index 0000000000..5658566cd1 --- /dev/null +++ b/site/trunk/site-publish/javaone-demo.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : JavaOne Demo + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > JavaOne Demo + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/javascaimplementationscript.html b/site/trunk/site-publish/javascaimplementationscript.html new file mode 100644 index 0000000000..9200c6f453 --- /dev/null +++ b/site/trunk/site-publish/javascaimplementationscript.html @@ -0,0 +1,136 @@ + + + + + + + Java+SCA+implementation.script : Apache Tuscany + + + + + + + + + + + + + +
+ + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Java+SCA+implementation.script + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+ + + + +
Development
+ +

<implementation.script>

+ +

The Tuscany Java SCA runtime supports implementing SCA components in a wide variety of dynamic or scripting languages by using the <implementation.script> SCDL extension.

+ +

Any language that supports the "Scripting for Java" APIs defined by JSR-223 is supported, this includes Groovy, JavaScript, JRuby, Jython, and many others.

+ +

To use these languages the SCA assembly SCDL is extended with an "implementation.script" element which has the following options:

+ + +
+
<implementation.script [ script="" | language="" ] >
+     [inline src]
+</implementation.script>
+
+ +

The source code for the script maybe defined in a seperate file pointed to by the 'script=' attribute, or the source code maybe embedded within the SCDL inline inside the <implementation.script> element.

+ +

The 'language=' attribute defines the language of the program. The language attribute is optional when the source code is in a separate file in which case the file extension of the file is used to determine the language.

+ +

Some examples:

+ + +

A Ruby program defined in a file 'myScript.rb' in a folder named 'test':

+ +
+
<implementation.script script="test/myScript.rb"/>
+
+ + +

A JavaScript program defined inline:

+ +
+
<implementation.script language="js">
+      function sayHello(name) {
+         return "Hello " + name;
+      }
+</implementation.script>
+
+ + +

When using inline scripts which contain special characters such as XML markup you may need to enclose the source within a CDATA region, for example:

+ +
+
<implementation.script language="js"><![CDATA[
+      function sayHello(inXML) {
+         return <sayHelloResponse>Hello { inXML..name }</sayHelloResponse>;
+      }
+]]></implementation.script>
+
+ +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/kernel-architecture.data/TuscanyJAVASCAM2.pdf b/site/trunk/site-publish/kernel-architecture.data/TuscanyJAVASCAM2.pdf new file mode 100644 index 0000000000..aa2f5ffe41 Binary files /dev/null and b/site/trunk/site-publish/kernel-architecture.data/TuscanyJAVASCAM2.pdf differ diff --git a/site/trunk/site-publish/kernel-architecture.html b/site/trunk/site-publish/kernel-architecture.html new file mode 100644 index 0000000000..fe03d602b3 --- /dev/null +++ b/site/trunk/site-publish/kernel-architecture.html @@ -0,0 +1,152 @@ + + + + + + + + Kernel Architecture + + + + + + + +
+  Apache Tuscany > Home > Java SCA > Java SCA Menu > Java SCA Architecture Overview > Kernel Architecture + +
+ + + + + + +
+
+ +
+ +
+ Added by haleh mahbod, last edited by haleh mahbod on Apr 13, 2007 +  (view change) + +
+ +
+
+
Apache Tuscany SCA Java Architecture
+

This page is work in progress. Thanks for your contribution
+This architecture guide reflects the state of Tuscany SCA Java kernel.

+ +
+ +

Kernel Structure

+ +

The following diagram is a high level view of the kernel structure.
+ this diagram needs to be fine tuned an is under discussion, but gives you an idea of the main modules in kernel. For example, the diagram shows the whole Tuscany instead of just the Kernel. As an example, runime block should not be shown as part of the Kernel.

+ +

Kernel-Structure

+ +

Data Binding

+ +

Data provides transparent data mapping between different types of data that can be exchanged between caller of a service and the service itself given the format of the data that will be supplied by the client. Data Mediator will do this transformation given the following information:

+
    +
  1. format of the data that can be consumed by the service
  2. +
  3. format of the data that will be sent by the client
  4. +
+ + +

You can find more detailed information about databinding at this link

+ +

+ +

Module 1

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/kernel-modulization-design-discussions.data/Contribution Diagram.GIF b/site/trunk/site-publish/kernel-modulization-design-discussions.data/Contribution Diagram.GIF new file mode 100644 index 0000000000..bc8b2edf1b Binary files /dev/null and b/site/trunk/site-publish/kernel-modulization-design-discussions.data/Contribution Diagram.GIF differ diff --git a/site/trunk/site-publish/kernel-modulization-design-discussions.data/Contribution Diagram.GIF.jpeg b/site/trunk/site-publish/kernel-modulization-design-discussions.data/Contribution Diagram.GIF.jpeg new file mode 100644 index 0000000000..538e132588 Binary files /dev/null and b/site/trunk/site-publish/kernel-modulization-design-discussions.data/Contribution Diagram.GIF.jpeg differ diff --git a/site/trunk/site-publish/kernel-modulization-design-discussions.data/Tuscany-Kernel.doc b/site/trunk/site-publish/kernel-modulization-design-discussions.data/Tuscany-Kernel.doc new file mode 100644 index 0000000000..3b8057b544 Binary files /dev/null and b/site/trunk/site-publish/kernel-modulization-design-discussions.data/Tuscany-Kernel.doc differ diff --git a/site/trunk/site-publish/kernel-modulization-design-discussions.data/tuscany-kernel-modulization.jpg b/site/trunk/site-publish/kernel-modulization-design-discussions.data/tuscany-kernel-modulization.jpg new file mode 100644 index 0000000000..e7970a0d31 Binary files /dev/null and b/site/trunk/site-publish/kernel-modulization-design-discussions.data/tuscany-kernel-modulization.jpg differ diff --git a/site/trunk/site-publish/kernel-modulization-design-discussions.data/tuscany-kernel-modulization.jpg.jpeg b/site/trunk/site-publish/kernel-modulization-design-discussions.data/tuscany-kernel-modulization.jpg.jpeg new file mode 100644 index 0000000000..7b02fe8ae3 Binary files /dev/null and b/site/trunk/site-publish/kernel-modulization-design-discussions.data/tuscany-kernel-modulization.jpg.jpeg differ diff --git a/site/trunk/site-publish/kernel-modulization-design-discussions.html b/site/trunk/site-publish/kernel-modulization-design-discussions.html new file mode 100644 index 0000000000..ecefd412b0 --- /dev/null +++ b/site/trunk/site-publish/kernel-modulization-design-discussions.html @@ -0,0 +1,124 @@ + + + + + + + + Kernel Modulization Design Discussions + + + + + + + +
+  Apache Tuscany > Home > SCA Java > Kernel Modulization Design Discussions + +
+ + + + + + +
+
+ +
+ +
+ Added by Raymond Feng, last edited by Luciano Resende on Mar 29, 2007 +  (view change) + +
+ +
+
+

Conceptual View of Kernel Modulization for Discussion

+
A note from Raymond

+I'm poor with colors but I'm trying to use the color to group the related modules.
+

+ +

The diagram in Microsoft Word format

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/latest-release-apache-tuscany-data-access-service.html b/site/trunk/site-publish/latest-release-apache-tuscany-data-access-service.html new file mode 100644 index 0000000000..7ba8df6d69 --- /dev/null +++ b/site/trunk/site-publish/latest-release-apache-tuscany-data-access-service.html @@ -0,0 +1,148 @@ + + + + + + + Latest Release - Apache Tuscany Data Access Service : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > Latest Release - Apache Tuscany Data Access Service + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Latest Release: RDB DAS Beta1 Release

+ +

Download RDB DAS Beta1 Release

+ +

What's new in Apache Tuscany DAS beta1?

+ +
    +
  • Support for J2SE connections in DAS config using Driver Manager.
  • +
  • Added support for multiple database schemas in queries
  • +
  • Enhanced Optimistic Concurrency Control with overqualified updates
  • +
  • Multiple enhancements around ApplyChanges API
  • +
  • Enhanced support for MySQL
  • +
  • Enhanced Documentation: User, Developer and Architect guides as well as javadocs
  • +
  • Enhanced and new sample applications
  • +
+ + + +

Previous releases content

+

DAS M2 Release - Key features

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • DAS Core features +
      +
    • MySQL support
    • +
    • Static Data Objects
    • +
    • Dynamic root for static graphs
    • +
    • "Unique" attribute on relationships
    • +
    • Explicit ResultSet shape definition
    • +
    • Improved logging
    • +
    • Programmatic Configuration
    • +
    • Helper for empty SDO Graph
    • +
    • Convention over configuration +
        +
      • Column named "ID" is the PK
      • +
      • Column named "xxx_ID" is the FK to table "xxx"
      • +
      +
    • +
    +
  • +
  • DAS Samples +
      +
    • Tomcat integration and automated DAS samples testing (htmlUnit)
    • +
    • DAS Samples now have all dependencies and source code inside the sample war
    • +
    +
  • +
+ + +

To download DAS M2 Release go to DAS Downloads page

+ +

DAS M1 Release - Key Features

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • RDB CRUD operations in terms of SDO DataObjects
  • +
  • Optimistic concurrency control
  • +
  • Generated database IDs
  • +
  • Stored procedures
  • +
  • Paging API
  • +
  • 1..1 and 1..n relationships
  • +
  • Partial row updates
  • +
+ + +

To download DAS M1 Release go to DAS Downloads page

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/latest-release-das-java-m2-release.html b/site/trunk/site-publish/latest-release-das-java-m2-release.html new file mode 100644 index 0000000000..7173e1dccc --- /dev/null +++ b/site/trunk/site-publish/latest-release-das-java-m2-release.html @@ -0,0 +1,129 @@ + + + + + + + Latest Release - DAS Java M2 Release : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Releases > Latest Release - DAS Java M2 Release + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Latest Release - DAS M2 Release

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • DAS Core features +
      +
    • MySQL support
    • +
    • Static Data Objects
    • +
    • Dynamic root for static graphs
    • +
    • "Unique" attribute on relationships
    • +
    • Explicit ResultSet shape definition
    • +
    • Improved logging
    • +
    • Programmatic Configuration
    • +
    • Helper for empty SDO Graph
    • +
    • Convention over configuration +
        +
      • Column named "ID" is the PK
      • +
      • Column named "xxx_ID" is the FK to table "xxx"
      • +
      +
    • +
    +
  • +
  • DAS Samples +
      +
    • Tomcat integration and automated DAS samples testing (htmlUnit)
    • +
    • DAS Samples now have all dependencies and source code inside the sample war
    • +
    +
  • +
+ + +

To download DAS M2 Release go to DAS Downloads page

+ +

DAS M1 Release - Key Features

+ +

Tuscany DAS is an implementation of a DAS RDB (relational database) with following key features :

+ +
    +
  • RDB CRUD operations in terms of SDO DataObjects
  • +
  • Optimistic concurrency control
  • +
  • Generated database IDs
  • +
  • Stored procedures
  • +
  • Paging API
  • +
  • 1..1 and 1..n relationships
  • +
  • Partial row updates
  • +
+ + +

To download DAS M1 Release go to DAS Downloads page

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/ldap-das-architecture-guide.html b/site/trunk/site-publish/ldap-das-architecture-guide.html new file mode 100644 index 0000000000..eceb353a6a --- /dev/null +++ b/site/trunk/site-publish/ldap-das-architecture-guide.html @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + Apache Tuscany : LDAP DAS Architecture Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > LDAP DAS Architecture Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

This content is retrieved from Ole Ersoy's Eclipse help plugin available at +https://svn.apache.org/repos/asf/directory/sandbox/oersoy/guides/das.ldap.design.documentation

+ +
DAS LDAP Design Guide
+

*Initializing the LDAP Servers
+ #Adding Required Server Partitions
+ #Adding a Partition/Suffix to ApacheDS</challenge>
+ #Creating an EPackage ObjectClass Schema Entry</challenge>

+ +

*Initializing the DAS
+ **Loading the Generator Model
+ **Providing the DAS With an Initial Context
+ **Creating a Subcontext for the Model's EPackage

+ +

*Writing DataGraph Metadata
+ **Creating Metadata OID Values
+ **Creating an LDAP Syntax Entry
+ **Creating an LDAP AttributeType Metadata Entry
+ **Creating an LDAP Metadata ObjectClass Entry
+ **Writing EPackage Metadata

+ +

*Restoring DataGraph Metadata
+ **Creating the Model's EPackage
+ **Restoring EPackage State
+ **Setting the EPackage Namespace Prefix
+ **Setting the EPackage Namespace
+ **Obtaining the Name of the DataObject's EClassifier
+ **Creating a Named Instance of the DataObject's EClassifier
+ **Creating the EClassifier's EAttributes
+ **Getting the DataObject's Complex Properties's Metadata
+ **Adding the SDO Type's EAttributes
+ **Adding the SDO Type's EReferences

+ +

*Writing a DataGraph
+ **Writing a DataGraph to ADS
+ **Creating an EReference Subcontext

+ +

*Restoring a DataGraph
+ **Creating a DataObject Instance
+ **Setting the DataObject's Simple Properties
+ **Setting the DataObject's Complex Properties

+ +

*Updating a DataGraph

+ +

*Deleting a DataGraph

+ +

*Prototype Setup
+ **Creating the Prototype Project
+ **Adding the EMF Dependencies to the Build

+
+ + +

Initializing the LDAP Servers

+

#Adding Required Server Partitions
+ #Adding a Partition/Suffix to ApacheDS</challenge>
+ #Creating an EPackage ObjectClass Schema Entry</challenge>

+ +

Initializing the DAS

+

**Loading the Generator Model
+ **Providing the DAS With an Initial Context
+ **Creating a Subcontext for the Model's EPackage

+ +

Writing DataGraph Metadata

+

**Creating Metadata OID Values
+ **Creating an LDAP Syntax Entry
+ **Creating an LDAP AttributeType Metadata Entry
+ **Creating an LDAP Metadata ObjectClass Entry
+ **Writing EPackage Metadata

+ +

Restoring DataGraph Metadata

+

**Creating the Model's EPackage
+ **Restoring EPackage State
+ **Setting the EPackage Namespace Prefix
+ **Setting the EPackage Namespace
+ **Obtaining the Name of the DataObject's EClassifier
+ **Creating a Named Instance of the DataObject's EClassifier
+ **Creating the EClassifier's EAttributes
+ **Getting the DataObject's Complex Properties's Metadata
+ **Adding the SDO Type's EAttributes
+ **Adding the SDO Type's EReferences

+ +

Writing a DataGraph

+

**Writing a DataGraph to ADS
+ **Creating an EReference Subcontext

+ +

Restoring a DataGraph

+

**Creating a DataObject Instance
+ **Setting the DataObject's Simple Properties
+ **Setting the DataObject's Complex Properties

+ +

Updating a DataGraph

+ +

Deleting a DataGraph

+ +

Prototype Setup

+

**Creating the Prototype Project
+ **Adding the EMF Dependencies to the Build

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/ldap-das-java.html b/site/trunk/site-publish/ldap-das-java.html new file mode 100644 index 0000000000..10aa021755 --- /dev/null +++ b/site/trunk/site-publish/ldap-das-java.html @@ -0,0 +1,99 @@ + + + + + + + LDAP DAS Java : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > LDAP DAS Java + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+

General

+

FAQ
+Downloads
+What's new?

+ +

Guides

+

User Guide
+Architecture Guide
+Java Doc

+ +

Development

+

Source Code
+Get Involved

+ + +

What is LDAP Data Access Service?

+ +

This project is in progress. Please see mailing list for more detail.

+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/ldap-java-das.html b/site/trunk/site-publish/ldap-java-das.html new file mode 100644 index 0000000000..989cf4c5a4 --- /dev/null +++ b/site/trunk/site-publish/ldap-java-das.html @@ -0,0 +1,152 @@ + + + + + + + + LDAP JAVA DAS + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > LDAP JAVA DAS + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by haleh mahbod on Apr 09, 2007 +  (view change) + +
+ +
+
+ + +
+

General

+

FAQ
+Downloads
+What's new?

+ +

Guides

+

User Guide
+Architecture Guide
+Java Doc

+ +

Development

+

Source Code
+Get Involved

+ + +

What is LDAP Data Access Service?

+ +

This project is in progress. Please see mailing list for more detail.

+
+
+ +
+ Children + + Show Children + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/license.html b/site/trunk/site-publish/license.html new file mode 100644 index 0000000000..34562d691b --- /dev/null +++ b/site/trunk/site-publish/license.html @@ -0,0 +1,1559 @@ + + + + + + + + + + + + + + + Apache Tuscany : License + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > License + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ + +

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 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: 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:
+ 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: 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: 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.

+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/logging-tracing-and-timing-in-tuscany.html b/site/trunk/site-publish/logging-tracing-and-timing-in-tuscany.html new file mode 100644 index 0000000000..0e83d2b5ee --- /dev/null +++ b/site/trunk/site-publish/logging-tracing-and-timing-in-tuscany.html @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + Apache Tuscany : Logging, Tracing, and Timing in Tuscany + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Development Guide > Logging, Tracing, and Timing in Tuscany + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Tuscany Logging, Tracing, Timing Information

+ +

This page describes the logging, tracing, and timing features of Tuscany. These features can be used to debug problems with the Tuscany runtime, understand code flow, and provide timing metrics for competitive analysis or performance claims.

+ +

Java Logging versus Aspect Oriented Programming (AOP) Approach

+ +

There are two types of logging embeded in the Tuscany runtime: explicit and implicit. The explicit logging is implemented by the Java 2 SE core logging facilities such as java.util.logging.Logger. This is the logging that many Java programmers are familiar with, and the logging requires calls to the Logger programming interface. Throughout the Tuscany code base you see calls to this facility such as this call in Tuscany org.apache.tuscany.sca.node.launcher.NodeLauncher.

+
Java Logging in Tuscany
+
        logger.info("Apache Tuscany SCA Node is starting...");
+
+
+

Calls to this facility by default go to the standard output of the program. This is the typical result that one sees in the console:

+
Java Logging Output
+
INFO: Apache Tuscany SCA Node is starting...
+
+
+

The Java SE core logging works well as a general purpose logger and gives a general idea of the important phases in the Tuscany runtime. However, one drawback is that this logging system only publishes predetermined messages created by the developers. If you wish to change the logging points, you must change the Tuscany source code, build, and run again with your private code base.

+ +

Another logging and tracing facility is available in Tuscany that gives the user a bit of flexibility in what gets logged and requires no source code modifications to run. This is an Aspect Oriented Programming (AOP) approach that runs via a Java agent at runtime. Just like a debugger can start and stop and inspect a Tuscany Java program, so too can an AOP agent inspect and report on a Tuscany Java program. Tuscany employs the AspectJ implementation, and its runtime agent is contained in the aspectjweaver.jar file. The AOP agent is specified from a command line option or runtime options:

+
Java AOP Agent
+
java -javaagent:"<path to aspectjweaver.jar>" calculator.CalculatorClient
+
+
+

The AOP logging and tracing agent can be run with any Tuscany program. No additional calls or log statements need be added to the Tuscany code. The results of running a timing for example, look like this:

+
Tuscany AOP Output
+
Running org.apache.tuscany.sca.aspectj.TracingTestCase
+Timing Around timedSection jp=call(void java.util.logging.Logger.info(String))
+Oct 21, 2008 9:26:36 AM org.apache.tuscany.sca.aspectj.TracingTestCase info_aroundBody0
+Timing Around timedSection Roundtrip is 32ms for jp.getSignature=void java.util.logging.Logger.info(String)
+
+
+

Full documentation on AspectJ is available at the AspectJ web site. Tuscany provides example usage in the module tracing-aspectj in the build tree and the released code.

+ +

Brief Apect Oriented Programming Introduction

+ +

In order to understand the aspect oriented approach to logging in Tuscany, one must understand a few basic concepts.

+ +

A join point is well defined point in the program flow. An example join point is the entry to a Java method. Another is after an exception is thrown. These join points contain useful information when running a program such as the argument list, the call stack, and the signature of the point that is executing.

+ +

A point cut is a subset of all the program join points. For instance, a point cut might be only the join points from exceptions thrown by the Tuscany runtime. Or only the set of calls to a Tuscany API org.apache.tuscany.sca.node.launcher.NodeLauncher.

+ +

Advice is the code that is run when a point cut is reached. For instance, your advice might want to print out all the arguments when entering a given method. Or your advice might show the call stack of an exception and print the original cause of the exception.

+ +

Finally, an aspect is a module that bundles up a particular set of point cuts and advice. Here is an example aspect that is marked with Java 5 annotations. The name of the aspect is LoggingAspect, there is a point cut defined at Tuscany calls to org.apache.tuscany.sca.* classes (but not inside of Aspect classes), and when the point cut is run, the advice for this point cut prints out the join point signature.

+
Example Aspect
+
@Aspect
+public class LoggingAspect {
+    @Pointcut("call(* org.apache.tuscany.sca..*(..)) && (!within(org.apache.tuscany.sca.aspectj.*Aspect))")
+    public void anyMethodCall() {
+    }
+
+    @Before("anyMethodCall()")
+    public void before(JoinPoint jp) {
+        System.out.println("Logging Before anyMethodCall jp.getSignature=" + jp.getSignature());
+    }
+}
+
+
+

Full explanation of these concepts are in the AspectJ documents. The purpose here is to provide enough information to allow a user to run or modify the Tuscany aspects to one's liking.

+ +

Logging and Tracing in Tuscany

+ +

Following the approach of AspectJ, Tuscany provides two concrete aspects for logging and tracing. org.apache.tuscany.sca.aspectj.LoggingAspect provides logging for methods, constructors, and static initializers in Tuscany. org.apache.tuscany.sca.aspectj.SimpleTracingAspect provide tracing into user methods, constructors, and static initializers. Both provide detailed information when an Exception or Throwable is thrown by the Tuscany runtime or user SCA program.

+ +

Both LoggingAspect and SimpleTracingAspect are run by naming the AspectJ runtime agent aspectjweaver.jar at launch. This is shown in the command line example above, and an example is provided in launcher.bat in the tracing-aspectj module.

+ +

The runtime configuration file aop.xml has references to these aspects. Uncomment one or both of these in aop.xml to run with this logging enabled. Following is an example logging run with the verbose weaver option specified. Note the verbose output of class names, build times, etc. The logging statements too are quite verbose stating the name of the join point, the point cut, and various signatures and arguments.

+
Example Logging in Tuscany
+
[INFO] Configured Artifact: org.aspectj:aspectjweaver:1.6.1:jar
+[INFO] Copying aspectjweaver-1.6.1.jar to E:\t\java\sca\modules\tracing-aspectj\target\dependency\aspectjweaver-1.6.1.jar
+[AppClassLoader@92e78c] info AspectJ Weaver Version 1.6.1 built on Thursday Jul 3, 2008 at 18:35:41 GMT
+[AppClassLoader@92e78c] info register classloader sun.misc.Launcher$AppClassLoader@92e78c
+[AppClassLoader@92e78c] info using configuration /E:/t/java/sca/modules/tracing-aspectj/target/classes/META-INF/aop.xml
+[AppClassLoader@92e78c] info register aspect org.apache.tuscany.sca.aspectj.LoggingAspect
+[AppClassLoader@92e78c] info define aspect org.apache.tuscany.sca.aspectj.UserTimingAspect
+
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Logging Before anyMethodCall jp.getSignature=SCANodeFactory org.apache.tuscany.sca.node.SCANodeFactory.newInstance()
+Logging Before anyConstructor jp.getSignature=org.apache.tuscany.sca.extensibility.ServiceDiscovery()
+Logging Before anyConstructor jp.getSignature=org.apache.tuscany.sca.extensibility.ServiceDiscovery.1(ServiceDiscovery, Class)
+Logging Before anyConstructor jp.getArgs=[org.apache.tuscany.sca.extensibility.ServiceDiscovery@ceb6dd,
+   class org.apache.tuscany.sca.node.SCANodeFactory]
+Logging Before anyMethodCall jp.getSignature=ServiceDiscoverer org.apache.tuscany.sca.extensibility.ServiceDiscovery.getServiceDiscoverer()
+Logging Before anyConstructor jp.getSignature=org.apache.tuscany.sca.extensibility.ContextClassLoaderServiceDiscoverer()
+Logging AfterReturning anyMethodCall jp=call(ServiceDiscoverer org.apache.tuscany.sca.extensibility.ServiceDiscovery.getServiceDiscoverer()),
+   result=org.apache.tuscany.sca.extensibility.ContextClassLoaderServiceDiscoverer@17574b9
+Logging Before anyMethodCall jp.getSignature=Set org.apache.tuscany.sca.extensibility.ServiceDiscoverer.discover(String, boolean)
+Logging Before anyMethodCall jp.getArgs=[org.apache.tuscany.sca.node.SCANodeFactory, true]
+
+
+

These aspects provide static point cuts and advice. That is, the various methods, constructors, and exception points are constrained by the source code of the aspects. You can change these items via editing LoggingAspect or SimpleTracingAspect and rerunning the application.

+ +

Timing

+ +

Timing of various calls is also available via the AOP logging and tracing facility in Tuscany. The apsect UserTimingAspect is provided to time certain point cuts. As shown above, this AOP timing feature can be used for timing metrics for competitive analysis of performance gauges. The output of the timing is shown here, as a Logger.info method is called and timed.

+
Tuscany AOP Timing Output
+
Running org.apache.tuscany.sca.aspectj.TracingTestCase
+Timing Around timedSection jp=call(void java.util.logging.Logger.info(String))
+Oct 21, 2008 9:26:36 AM org.apache.tuscany.sca.aspectj.TracingTestCase info_aroundBody0
+Timing Around timedSection Roundtrip is 32ms for jp.getSignature=void java.util.logging.Logger.info(String)
+
+
+

Unlike LoggingAspect and SimpleTracingAspect, the pointcut for UserTimingAspect is settable at runtime via the aop.xml runtime configuration file. Look for the UserTimingAspect name, and note the expression in the pointcut element. You may change the name of expression to any valid AspectJ pointcut expression. Here calls to any Logger.info methods, regardless of arguments or return types are logged. For instance you may change this to "call( * calculator.CalculatorServiceImpl.multiply(..))" to time calls in your SCA application.

+
Dynamic PointCut for UserTimingAspect
+
        <concrete-aspect name="org.apache.tuscany.sca.aspectj.UserTimingAspect"
+           extends="org.apache.tuscany.sca.aspectj.TimingAspect"
+           precedence="org.apache.tuscany.sca.aspectj.UserTimingAspect, *">
+           <pointcut name="timedCall"
+              expression="call(* java.util.logging.Logger.info(..))"/>
+        </concrete-aspect>
+
+
+ +

Logging and Tracing in Alternate Containers

+ +

So far this article discussed logging and tracing for Tuscany applications. Often Tuscany applications are run standalone in a Java 2 SE environment. You can also turn on logging and tracing in various application servers that support Tuscany SCA applications.

+ +

Apache Tomcat Example

+ +

Show Apache Tomcat J2EE application server plus Tuscany bundled SCA application.

+ +

WebSphere Example

+ +

Show WebSphere 7.0.0.1 plus SOA Feature Pack based on Tuscany output.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/m3-process-notes.html b/site/trunk/site-publish/m3-process-notes.html new file mode 100644 index 0000000000..2e1ab1b8fc --- /dev/null +++ b/site/trunk/site-publish/m3-process-notes.html @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + Apache Tuscany : M3 Process Notes + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java M3 > M3 Process Notes + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Releasing SDO Java

+ +

Note, this is information captured from my own experiences of doing a release for the first time.
+If any of what I say here is at odds with apache policies as stated elsewhere then clearly they
+win (Please let me know of any cases).

+ +

This is still work in progress Many items need another level of depth of explanation

+ +

Links

+ +
    +
  1. draft asf guidlines: http://incubator.apache.org/guides/releasemanagement.html
  2. +
  3. here's how axis2 do it: http://wiki.apache.org/ws/FrontPage/Axis2C/releases/steps
  4. +
+ + +

Task Dependencies

+ +

A relevant version of the Tuscany parent pom and buildtools must have been released.

+ +

Tasks that can be done ahead of time or while in wait mode for the sequenced tasks

+ +
    +
  1. understand the planned release cycles of your dependencies and have a target stable release version in mind for all such dependencies
  2. +
  3. Prepare for signing/authenticating distro files +
      +
    1. identify/install s/w for public key infrastructure stuff and MD5 message digest generation
    2. +
    3. Create a PGP key for signing files
    4. +
    5. Lodge your PGP key with a keyserver
    6. +
    7. Put your public key in the svn KEYS file
    8. +
    +
  4. +
  5. Get set up for easy file transfer to people.apache.org +
      +
    1. Identify/Install clients for ssh, secure copying and secure ftping
    2. +
    3. Establish authentication with people.apache.org by key
    4. +
    +
  6. +
  7. Prepare a downloads page section that can be added to the Tuscany downloads page
  8. +
  9. Ensure that there is inter-module understanding of how we plan to sequence releasing modules and requesting IPMC votes
  10. +
  11. ensure that our apache mentors know Tuscany's plans with respect to releases
  12. +
+ + +

Basic Task Sequence as I recall it

+ +

This is a basic sequence of tasks. Clarification of details of tasks will be given below

+ +
    +
  1. make the trunk reference the newly released parent pom and buildtools
  2. +
  3. optionally make a branch
  4. +
  5. stabilize code in branch (or trunk if development activity can be halted in trunk) +
      +
    1. check LICENSE and NOTICE files in project roots and in jar manifests +
        +
      1. run the rat tool against the source and check for exceptions
      2. +
      3. once exceptions have been fixed, store the rat log and make a note of rat log exceptions which are there because they have to be
      4. +
      5. repeat this as necessary during the release process if new files are included
      6. +
      +
    2. +
    3. update release notes, readmes, etc
    4. +
    5. Ensure the Tuscany project's root level svn STATUS file is up to date, and then copy/update it into the root folders of any source distribution that will be made, and to the location where the pom that creates the binary distribution will expect to find the STATUS file for packaging (may be the same location as for source distro) +
        +
      1. be aware that while the release process is continuing, the project STATUS file might change.
      2. +
      +
    6. +
    7. .....
    8. +
    +
  6. +
  7. Create release candidates and ask for feedback, iterating until ready for a PPMC vote ... +
      +
    1. Create local copies of source hierarchies, one per source distribution, using svn export <uri> <local-dir>
    2. +
    3. Make archives of your clean exports in order to be able to distribute source
    4. +
    5. Follow the instructions in BUILDING.txt in the root folders of the source distributions to produce the binary distribution +
        +
      1. If you have to do something different from those instructions to build the binary distro, then update BUILDING.txt in appropriate places in svn(and be aware thet your source distro archive is now out of date, so you'll need to iterate before going public)
      2. +
      +
    6. +
    7. Test your binary distro; take the outputs of your build process and use them as if you were a new user who had just downloaded them
    8. +
    9. create your sample programs source distribution +
        +
      1. ...... fill this in
      2. +
      3. ....
      4. +
      +
    10. +
    11. At this point you will need to have put in place distro signing capabilities (see "Ahead of Time" above) +
        +
      1. Sign and create md5 checksums for each of the source and binary distribution archives
      2. +
      3. transfer the archives to a logical place under your public_html people.apache.org space and arrange suitably
      4. +
      5. create a suitable readme for the root level of your release candidate folder, and ensure the readme names the release candidate version
      6. +
      7. advertise the release candidate on tuscany-dev and tuscany-user and ask for feedback
      8. +
      +
    12. +
    13. fix issues and repeat the release candidate process
    14. +
    +
  8. +
  9. When ready for the PPMC to vote on your release candidate, create a tag from the branch (or trunk if no branch) +
      +
    1. Note that a release must have a referenceable tag from which it was built and that this may not be the end to your updates, so you have the option of creating new tags if the PPMC vote throws up more issues, or updating a single tag, you may like to bear your choice in mind when naming the tag
    2. +
    3. Note also that svn will complain when you try to do an svn commit into a tag, which is a warning only, and during this phase of the release process, updates to a tag are justifiable
    4. +
    +
  10. +
  11. Update the version elements of the poms to define the version of the parent pom and buildtools that should be used (CHECK where and when this should be done)
  12. +
  13. Update the tags version names of the distributable artifacts to non SNAPSHOT titles that match the release name
  14. +
  15. Update the tags version names of the dependencies to non SNAPSHOT versions, if not already done earlier in the release candidate process
  16. +
  17. Ideally update the tags version names of maven plugins to non SNAPSHOT versions if not already done earlier in the release candidate process (note that if the plugin behaviour changes after release, your tag or source distribution may not build in the same way as it did when you released if you rely on SNAPSHOT plugin versions)
  18. +
  19. Rebuild and upload a new release and candidate to people.apache.org
  20. +
  21. Optionally take a snapshot archive of your local maven repository for future issue resolution
  22. +
  23. Deploy the projects artifacts to the maven repository +
      +
    1. By this time you want to have in place easy authentication to people.apache.org (add link to apache description of how to do this), and to modify your maven ~/.m2/settings.xml file to use key based authentication, rather than password (I never got this going, so had to type in my password about 30 times per deploy) – If using pageant to make an ephermeral decrypted version of your SSL private key available to the authentication process, then make sure pageant is running, and you have lodged your private key with that invocation of pageant
    2. +
    3. Run maven deploy (supplying your password multiple times if necessary – the build will fail if a password request times out)
    4. +
    5. Check that the artifacts in the maven repository and the corresponding ones in your local repository are fresh and identical
    6. +
    7. The deploy action will have created .md5 and .sha1 message digests for all newly deployed artifacts, you must manually add signatures for the artifacts +
        +
      1. for every archive artifact uploaded to the remote repository (see the "mvn deploy" execution log), create a signature for the corresponding artifact on your local machine
      2. +
      3. upload that signature to sit alongside the artifact on the remote repository
      4. +
      +
    8. +
    +
  24. +
  25. Request a vote on tuscany-dev on the new release candidate, and the deployed artifacts, publishing the rat log and exceptions stored earlier
  26. +
  27. Iterate through the release candidate/vote process if necessary
  28. +
  29. ask for ratification of the PPMC vote from the IPMC by posting to general@incubator.apache.org (I think you may have to use an apache.org email address to do this?)
  30. +
  31. if necessary repeat the release candidate/PPMC vote/IPMC ratification steps
  32. +
  33. Move your release candidate files to the proper people.apache.org tuscany download location
  34. +
+
    +
  • /www/people.apache.org/dist/incubator/tuscany/java
  • +
+
    +
  1. Add your ready prepared download section to the tuscany site downloads page, rebuild and deply the site update
  2. +
  3. update the projects STATUS file and commit back to svn to say that the announcement has been made
  4. +
  5. update the tuscany site's news page
  6. +
  7. Announce the release by sending to anounce@apache.org (note that you must use an apache.org email address to do this), copying tuscany-dev, tuscany-user and general@incubator
  8. +
  9. Momentarily reflect on life's joys +
    +

    Command log

    +

    C:\Development\JiraDev\M3Release>svn export svn\M3ApiRelease apiExportDir\apache-tuscany-sdo-incubating-1.0-M3\sdo-api
    +Export complete.

  10. +
+ + +

C:\Development\JiraDev\M3Release>svn export svn\M3ImplRelease implExportDir\apache-tuscany-sdo-incubating-1.0-M3\sdo
+Export complete.

+ +

C:\Development\JiraDev\M3Release\RC1>gpg -sa --detach-sig --local-user kelvingoodson@apache.org apache-tuscany-sdo-incubating
+-1.0-M3-api-src.tar.gz

+ +

$ for i in *
+> do
+> gpg -sa --detach-sig --local-user kelvingoodson@apache.org $i
+> done

+ +

$ for i in *
+> do
+> gpg -sa --detach-sig --local-user kelvingoodson@apache.org $i
+> done

+ +

$ rm *.asc.md5

+ + + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/mailing-lists.html b/site/trunk/site-publish/mailing-lists.html new file mode 100644 index 0000000000..311fec16c9 --- /dev/null +++ b/site/trunk/site-publish/mailing-lists.html @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + Apache Tuscany : Mailing Lists + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Mailing Lists + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ + +

Tuscany User List

+ +

The user list is for general discussion or questions on using any of the Tuscany sub-projects. Tuscany developers monitor this list and provide assistance when needed.

+ +

Subscribe to the user mailing list by clicking on Subscribe
+Unsubscribe from the user mailing list by clicking on Unsubscribe
+Post on the user mailing list by clicking on Post
+Read archived mail related to the user list by clicking on Archive mod_box or Archive mail archive

+ +

Tuscany Developer List

+ +

The developer list is for Tuscany developers to discuss ongoing work, make decisions, and vote on technical issues. There is one list for all Tuscany sub-projects.

+ +

Subscribe to the developer mailing list by clicking on Subscribe
+Unsubscribe from the developer mailing list by clicking on Unsubscribe
+Post on the developer mailing list by clicking on Post
+Read archived mail related to the developer list by clicking on Archive mod_box or Archive mail archive

+ +

Tuscany Notification List

+ +

The notification list receives notifications from the build system that run Tuscany builds.

+ +

Subscribe to the notification mailing list by clicking on Subscribe
+Unsubscribe from the notification mailing list by clicking on Unsubscribe
+Read archived mail related to notification list by clicking on Archive mod_box or Archive mail archive

+ +

Tuscany Commits List

+ +

The commits list receives notifications with diffs when changes are committed to the Tuscany source tree.

+ +

Subscribe to the commits mailing list by clicking on Subscribe
+Unsubscribe from the commits mailing list by clicking on Unsubscribe
+Read archived mail related to commits list by clicking on Archive mod_box or Archive mail archive

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/main-menu.html b/site/trunk/site-publish/main-menu.html new file mode 100644 index 0000000000..7e26fa89ab --- /dev/null +++ b/site/trunk/site-publish/main-menu.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + Apache Tuscany : Main Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > Main Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+ +
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/making-releases.html b/site/trunk/site-publish/making-releases.html new file mode 100644 index 0000000000..7382bb66c3 --- /dev/null +++ b/site/trunk/site-publish/making-releases.html @@ -0,0 +1,701 @@ + + + + + + + + + + + + + + + Apache Tuscany : Making releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Making releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + +

Getting Ready

+ +

Setting up ssh

+ +

Create signing key

+ +

Get hold of RAT

+ +

Useful Resources

+ +

Incubator release best practice
+Incubator Policy
+ASF Developer Guide
+ASF Release FAQ
+ASF Release Licensing FAQ
+ASF Release Signing
+ASF Comitters Guide
+Henk's ASF Key Guide
+Surfnet Key Server
+MIT Key Server
+Raymond's release script

+ +

Release Reviewer Check List

+ +

Check that all RELEASE-NOTES and READMEs etc have the right release number and date
+ Check that the RAT output doesn't report missing or non-ASF licenses other than for files that can't have ASF licenses.
+ Check that all files (that need it) have the ASF copyright and it's the right date
+ Check that the LICENSE and NOTICE files appear at the top level of source distro
+ Check that the LICENSE and NOTICE files appear at the top level of binary distro
+ Check that the LICENSE and NOTICE files appear at the top level of all /maven modules that will be distributed (these are the tricky ones as they get copied when people add new modules)
+ Check that LICENSE files have a copy of all third part licenses for the files in directories below them (jar name and version to which license relates must be clearly marked. Use the list from the distribution lib dir)
+ Check that NOTICE files have a copy of all of the copyright statements for the files in directories below the. You have to go through all dependency jars/files that have been copied in and check
+ Check that the signatures are in the right format
+ Check that the signing key is in the KEYS file and in an external repo
+ Check that there are no SNAPSHOT dependencies still in the distribution
+ Check that there is no junk left in the distributions (.log, .tmp, .bak etc)
+ Check that the distribution match the tag as far as possible. (Our NOTICE files have the module name dropped in automatically so don't match and we don't ship svg files)
+ Check that the manifests in the jars that we produce have enough information (name of product and version. Scripts below should do this).
+ Check that the project depends on the smallest number of versions of each third party jar
+ Check that all samples compile and run from the command line and where appropriate operate correctly in Tomcat/WebSphere/Jetty/Geronimo
+ Check that all demos compile and run from the command line and where appropriate operate correctly in Tomcat/WebSphere/Jetty/Geronimo
+ Check to make sure Javadocs are generated for APIs and SPIs.

+ +

Release Manager Release Process

+ +

This page borrows many of the commands from Raymond's release script but with a bit more explanation and a few extra useful commands. The commands here were taken from when release 1.1 RC3a was under preparation. Note that this document has been updated from experience gained with the SDO 1.1.1 release, which was the first release made after exiting incubation; as such, whilst the release names used in this document refer to an "incubating" version, the svn repository and the maven repository have been updated to the non incubating versions. It's also fair to say that it's unlikely that you will want to run all of these commands in sequence as you generally end up repeating sections as release preparation progresses.

+ +

Call for release

+ +

At some point someone in the community will call for a release based on the features and fixes that have been under development in the trunk. Typically the first stage in the release process is to decide on who is going to be the release manager, i.e. who is going to ensure that all the steps are taken to ensure a good release. This will typical involve someone volunteering and a vote on the dev list. The next thing is the create a branch where the code can be stabilized and testing can start on the release artifacts. It's useful to try and ensure that the code is complete as possible and that all the samples run before the branch is created. This removes the need for a lot of double fixing between the branch and the trunk.

+ +

Create the branch

+ +
+
+svn copy https://svn.apache.org/repos/asf/tuscany/java/sca https://svn.apache.org/repos/asf/tuscany/branches/sca-java-1.1  -m "Branch for 1.1"
+
+
+ +

Once the branch is created the version number in trunk can be updated.

+ +

Fix up the branch work

+ +

First checkout the branch so that you can work on it. These commands assume that a local directory called "branches" is present.

+ +
+
+cd branches
+svn co https://svn.apache.org/repos/asf/tuscany/branches/sca-java-1.1/ 1.1-RC3a
+
+
+ +

Remove all the files that are not going to be part of the release, test all the samples and check all of the LICENSE and NOTICE files.

+ +

Check dependencies are as you would expect them to be. In particular check that we aren't depending on many different versions of third part jars. If we are this has the side effect of messing up the generated build files. If module A depends on x.jar v1.2 and module B depends on x.jar v1.3 then when a build file that is generated for a sample that only depends on module A the stated x.jar dependency will be v1.2. Of course the distribution build will make sure that only v1.3 is actually shipped and so the ant build will fail. (TODO - need better automation)

+ +
+
+cd sca
+mvn -o -Pdependencies -Dmaven.test.skip=true
+find . -name dependency.txt -exec cat '{}' >> deptotal.txt \;
+
+
+ +

or

+ +
+
+cd sca
+mvn dependency:tree
+
+
+ +

Use you favorite spreadsheet tool to open deptotal.txt and order on the first column to see across the project what dependencies we have on what libraries/versions.

+ +

Once the branch is at the stage where a release candidate can be created for testing prepare to make a tag.

+ +
"Tip"
When making changes to a branch or tag that are also relevant to the trunk, it's much easier to apply the changes to the trunk at the time, rather than wait and risk losing the changes. Svn provides a simple one line way to do this with the "svn merge" command. In the root directory of a checked out version of the trunk, if you run a command like the following ... + + +
+
+svn merge -r 674473:674474 https://svn.apache.org/repos/asf/tuscany/tags/java/sdo/1.1.1-RC2a/ .
+
+
+ + +

then that will apply the same edits as were made in the 674474 commit in the tag; merging them into your checked out version of the current trunk. The earlier you do this, the less likely that svn will present you with conflicts to resolve.

+ +

Create Tag 1.1-RC3a

+ +

These commands assume that a local directory called "tags" is present.

+ +
+
+cd tags
+svn co https://svn.apache.org/repos/asf/tuscany/branches/sca-java-1.1/ 1.1-RC3a
+
+
+ +

Notice that all we are doing here is just checking out the branch again. This allows any last minute fixes to be taken from the branch in subversion and allows the version numbers in the tag to be corrected without affecting the branch, assuming that more than one tag will be required to complete the release process.

+ +

Fix the release dates

+ +

In various files under distribution/src/main/release the month of release is quoted. Fix this to be the expected release month.

+ +

Check the notice dates

+ +

It's not clear what the policy for dates in notice files is currently. We have gone for the following...

+ +

Copyright (c) 2005 - 2009 The Apache Software Foundation

+ +

As the project moves forward we need to check that the last date matches the current year. If you need to change all the notice files here's a script

+ +
+
+for i in `/usr/bin/find . -name "NOTICE"`; do sed "s/Copyright (c) 2005 - 2008/Copyright (c) 2005 - 2009/g" $i >/tmp/tmp.notice; cp /tmp/tmp.notice $i; done
+
+
+ +

Change the version ID

+ +

The "-SNAPSHOT" is removed from the end of the version string. This ensures that the only thing building with the release version number on your PC is the tag being tested.

+
+
+cd tags/1.1-RC3a
+for i in `/usr/bin/find . -name "*.xml" -o -name "*.java"`; do if grep 1.3-SNAPSHOT $i>/dev/null; then sed "s/1.3-SNAPSHOT/1.3/g" $i >/tmp/tmp.xml; cp /tmp/tmp.xml $i; fi; done
+
+
+ +

Generate the RAT report

+ +

Create the report.

+ +
+
+cd tags
+java -jar C:\simon\apps\rat-0.5.1\rat-0.5.1.jar 1.1-RC3a > rat-1.1-RC3a.txt
+
+
+ +

Copy the report up onto the staging repo. You should of course check the report at this stage.

+ +
+
+scp rat-1.1-RC3a.txt slaws@people.apache.org:public_html/tuscany/1.1-RC3a
+
+
+ +
"Tip"
If you need to regenerate the RAT report after you have started on the steps that follow run "mvn clean" first to avoid complains about the files under target folders
+ +

Build from top level

+ +
+
+cd tags/1.1-RC3a
+mvn -o clean install
+
+
+ +
+
+cd tags/1.1-RC3a/demos
+mvn -fae -o clean install
+
+
+ +
+
+cd tags/1.1-RC3a/tutorial
+mvn -fae -o clean install
+
+
+ + +

Build distribution

+ +
+
+cd tags/1.1-RC3a/distribution
+mvn -o clean install
+
+
+ +

Check that the "all" jar is in place as with some JDKs this step fails intermittently

+ +

Copy the distribution to somewhere and try it

+ +

Try all the samples/demos

+ +
+
+ant run
+
+
+ +

and

+ +
+
+ant build
+ant run
+
+
+ +

The war samples are currently to be tested with

+ +
    +
  • Tomcat 5.5.20 and Tomcat 6.0.14
  • +
  • Jetty 6.1.3
  • +
  • Geronimo 2.0.2 Tomcat6 jee5
  • +
  • WebSphere 6.1 fix pack 9+
  • +
+ + +

Clean you local repo of SCA modules and compile the source distro and run some samples to

+ +

Check for copyrights in the code to ensure that are what you are expecting

+ +
+
+grep -iR --exclude=LICENSE --exclude=NOTICE Copyright * | awk '{if (!match($0, ".+ASF.+")) {print $0}}'
+
+
+ +

check all the NOTICE files

+ +
+
+for i in `find . -name NOTICE`; do echo XXXXXXXXXXXXXXXXXXXXXXXXXXXX; echo $i; cat $i; done > ../tmp
+
+
+ +

Check for any SNAPSHOTS left in by mistake

+ +
+
+grep -r --include=*.xml SNAPSHOT *
+
+
+ +

Check the LICENSE file against what is provided in the distributions. There is no automation for this bit.

+ +

Check that all jars in the distribution\lib is mentioned on the binary LICENSE

+ +
+
+for fn in *.jar; do if grep -q $fn ../LICENSE; then "$fn"; else "$fn NOT present"; fi; done
+
+
+ +

For 2.x this is

+ +
+
+for fn in `find . -name "*.jar" -printf "%f\n"`; do if grep -q $fn ../LICENSE; then "-"; else "$fn NOT present"; fi; done;
+
+
+ +

And check that all jars that are mentioned are present

+ +
+
+for fn in `awk '/.jar/ {if (match($0,"[a-zA-Z0-9._-]+[.]jar")) {print substr($0, RSTART,RLENGTH) } }' ../LICENSE`; do if ls | grep -q $fn; then echo "$fn";else echo ">>> $fn NOT present"; fi; done
+
+
+ +

For 2.x this is

+ +
+
+for fn in `awk '/.jar/ {if (match($0,"[a-zA-Z0-9._-]+[.]jar")) {print substr($0, RSTART,RLENGTH) } }' ../LICENSE`; do if ls * | grep -q $fn; then echo "-";else echo ">>> $fn NOT present"; fi; done
+
+
+ +

Check for junk included by accident

+ +
+
+  find . -name log -print
+  find . -name work -print
+  find . -name lck -print
+  find . -name activemq-data -print
+  find . -name temp -print
+  find . -name tmp -print
+
+
+ +

Once you are happy with the release artifacts you can sign them and make them available for review.

+ +

Sign the artifacts

+ +

Linux

+
+
+cd tags/1.1-RC3a/distribution/target
+for i in *.zip *.gz; do gpg --output $i.asc --detach-sig --armor $i; done
+for i in *.zip *.gz; do openssl md5 -hex $i | sed 's/MD5(\([^)]*\))= \([0-9a-f]*\)/\2 *\1/' > $i.md5; done
+
+
+ +

Windows:

+
+
+for %A in (*.zip) do gpg --output %A.asc --detach-sig --armor %A
+for %A in (*.gz) do gpg --output %A.asc --detach-sig --armor %A
+for %A in (*.zip) do gpg --print-md md5 %A > %A.md5
+for %A in (*.gz) do gpg --print-md md5 %A > %A.md5
+
+
+ +

The commands above should produce artifacts of an appropriate format, as follows.

+ +

md5 should look like

+
+
+  8fb7cb398063ed0dffa414168468fffc *apache-tuscany-sca-1.1-incubating.zip
+
+
+ +

asc should look like

+
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.5 (Cygwin)
+
+iD8DBQBHnLGGE8fTrnkHPxIRAqPmAJ4tOR6W663FKCXHPi1GlLBWDyZwJgCeMqbb
+68DOq0YsU/O7kJsBHuZXhJw=
+=elh0
+-----END PGP SIGNATURE-----
+
+
+ +

Also you now need to sign the jars in the Eclipse update site.

+ +

cd to both plugins and features and run:

+ +
+
+cd tags/1.1-RC3a/distribution/target/apache-tuscany-sca-<releasenum>-updatesite.dir/tuscany-sca-<releasenum>-updatesite/plugins
+for i in *.jar; do gpg --output $i.asc --detach-sig --armor $i; done
+for i in *.jar; do openssl md5 -hex $i | sed 's/MD5(\([^)]*\))= \([0-9a-f]*\)/\2 *\1/' > $i.md5; done
+cd ../features
+for i in *.jar; do gpg --output $i.asc --detach-sig --armor $i; done
+for i in *.jar; do openssl md5 -hex $i | sed 's/MD5(\([^)]*\))= \([0-9a-f]*\)/\2 *\1/' > $i.md5; done
+
+
+ + +

And then sign site.xml in the top level of the updatesite directory

+ +
+
+cd ..
+for i in *.xml; do gpg --output $i.asc --detach-sig --armor $i; done
+for i in *.xml; do openssl md5 -hex $i | sed 's/MD5(\([^)]*\))= \([0-9a-f]*\)/\2 *\1/' > $i.md5; done
+
+
+ +

Put the artifacts up in your home directory on people.apache.org

+ +
+
+cd tags/1.1-RC3a/distribution/target
+scp *.asc slaws@people.apache.org:public_html/tuscany/1.1-RC3a
+scp *.md5 slaws@people.apache.org:public_html/tuscany/1.1-RC3a
+scp *.zip slaws@people.apache.org:public_html/tuscany/1.1-RC3a
+scp *.gz slaws@people.apache.org:public_html/tuscany/1.1-RC3a
+
+
+ +
+
+cd tags/1.1-RC3a/distribution/target/apache-tuscany-sca-<releasenum>-updatesite.dir
+scp -r * slaws@people.apache.org:public_html/tuscany/1.1-RC3a
+
+
+ +
+
+cd tags/1.1-RC3a/distribution/src/main/release
+scp RELEASE_NOTES slaws@people.apache.org:public_html/tuscany/1.1-RC3a
+scp CHANGES slaws@people.apache.org:public_html/tuscany/1.1-RC3a
+
+
+ +

Check permissions on the files

+ +
+
+chmod 644 *.zip
+chmod 644 *.gz
+chmod 644 *.txt
+
+
+ +

Deploy the maven artifacts

+ +

Note below that the reference to "apache.incubator" in the "id" part of the -DaltDeploymentRepository argument to the maven deploy plugin is simply an identifier relating to a stanza in your local maven repo's settings.xml file. Note that also if you use ssh authentication by referencing a file containing your private key from the settings.xml file, then be sure to use a file in open ssh format.  People who have followed the apache instructions for creating ssh keys on Windows with putty will probably not have created open ssh format files. You can however convert your .ppk file to the open ssh forrmat by loading it into puttygen and using the conversion menu.

+
+
+cd tags/1.1-RC3a
+mvn -N -DaltDeploymentRepository=apache.incubator::default::scp://people.apache.org/home/slaws/public_html/tuscany/1.1-RC3a/maven install gpg:sign deploy:deploy -Dgpg.passphrase=
+
+cd tools
+mvn clean
+mvn -DaltDeploymentRepository=apache.incubator::default::scp://people.apache.org/home/slaws/public_html/tuscany/1.1-RC3a/maven install gpg:sign deploy:deploy -Dgpg.passphrase=
+
+cd modules
+mvn clean
+mvn -DaltDeploymentRepository=apache.incubator::default::scp://people.apache.org/home/slaws/public_html/tuscany/1.1-RC3a/maven install gpg:sign deploy:deploy -Dgpg.passphrase=
+
+NOTE:Remove non jar artifacts from stage repo
+
+
+ +

Deploy the all jar

+ +
+
+cd tags/1.1-RC3a/distribution/bundle/target
+mvn gpg:sign-and-deploy-file -DgroupId=org.apache.tuscany.sca -DartifactId=tuscany-sca-all -Dversion=1.1-incubating -Dpackaging=jar -Dfile=tuscany-bundle-1.1-incubating.jar -DrepositoryId=apache.incubator -Durl=scp://<userid@>people.apache.org/home/slaws/public_html/tuscany/1.1-RC3a/maven -Dkeyname=slaws -Dpassphrase=
+
+
+ +

I have to go in and sign the pom for the all jar manually as it didn't happen automatically?

+ +

Check that the Maven artifacts work

+ +

Point you maven build at your p.a.o dir as a temporary mirror, for example, add mirror element to the settings.xml file (usually found at .m2/settings)

+ +
+
+  <mirrors>
+   <mirror>
+     <id>ant.staging</id>
+     <url>http://people.apache.org/~slaws/tuscany/1.1-RC3a/maven</url>
+     <mirrorOf>apache.incubator</mirrorOf>
+   </mirror>
+  </mirrors>
+
+
+ +

Clean your local SCA artifacts and use maven to compile samples and see if they run.

+ +

Check in the tag

+ +
+
+svn copy 1.1-RC3a https://svn.apache.org/repos/asf/tuscany/tags/java/sca/1.1-RC3a/ -m "Tag for 1.1-RC3a"
+
+
+ +

Start voting

+ +

The PPMC will vote first. This may give rise to a new release candidate being required. If so you need to go back and start at the "Create Tag" step but using the next RC number.

+ +

Once the PPMC vote is complete the vote is moved across to the IPMC. Once all the votes are complete the artifacts that have been voted on can be release.

+ + +

Once all the voting is complete

+ +

Copy the artifacts from your directory on people.apache.org to:

+ +
+
+/www/www.apache.org/dist/tuscany/java/sca/1.3.2
+
+
+ +

except for the tuscany-sca-<releasenum>-updatesite-publish directory. The contents of this directory should be checked into svn under:

+ +
+
+https://svn.apache.org/repos/asf/tuscany/site/trunk/site-publish/updatesite/java/sca/<releasenum>
+
+
+ +

Also check that the KEYS file is up to date.

+ +
+
+/www/www.apache.org/dist/tuscany
+
+
+ +

Copy the staging repo to the live repo

+ +
+
+mvn stage:copy -Dsource="http://people.apache.org/~slaws/tuscany/1.1-RC3a/maven" -Dtarget="scp://<userid@>people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository" -Dversion=1.1
+
+
+ +

You'll need the maven stage plugin to do this. Since maven-stage-plugin is not published, the release manager should checkout the source for the plugin and build it.

+ +
+
+http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-stage-plugin/
+
+
+ +

Or, instead of using the Maven stage plugin just manually copy the artifacts there:

+ +
+
+cp -p -v -R  sca/  /x1/www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/tuscany/sca
+
+
+ +

Check the permissions in the repo

+ +

There is a script in the SNAPSHOT report that sets the permissions correctly.

+ +
+
+cd  /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/tuscany/sca
+/www/people.apache.org/repo/m2-snapshot-repository/fix-permissions.sh
+
+
+ +

Copy the release candidate tag to the final tag name.

+ +
+
+svn copy https://svn.apache.org/repos/asf/tuscany/tags/java/sca/1.1-RC3a/ https://svn.apache.org/repos/asf/tuscany/tags/java/sca/1.1 -m "Copy 1.1-RC3a tag as 1.1"
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/maven-plugins.html b/site/trunk/site-publish/maven-plugins.html new file mode 100644 index 0000000000..36129b2ef6 --- /dev/null +++ b/site/trunk/site-publish/maven-plugins.html @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + Apache Tuscany : Maven Plugins + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > Maven Plugins + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ + +

Maven Plugins

+ +

Apache Tuscany provides a set of Apache Maven Plugins to assist in the development of SCA applications. These simplify common build-time tasks such as generating code, packaging artifacts such as wars, and testing applications.

+ +
+ + + + + + + + + + + + + + + + + + + + + +
PluginIdDescription
Compositeorg.apache.tuscany:tuscany-composite-pluginSimplifies packaging of SCA composites.
WAR Packagingorg.apache.tuscany:tuscany-war-pluginAdds an Apache Tuscany runtime to a web application.
Integration Testorg.apache.tuscany:tuscany-itest-pluginSupports integration testing of SCA components during a build.
+
+ + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/menu3.html b/site/trunk/site-publish/menu3.html new file mode 100644 index 0000000000..7d5ad6c9da --- /dev/null +++ b/site/trunk/site-publish/menu3.html @@ -0,0 +1,90 @@ + + + + + + + Menu3 : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Menus > Menu3 + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+ +
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/menus.html b/site/trunk/site-publish/menus.html new file mode 100644 index 0000000000..83748f633a --- /dev/null +++ b/site/trunk/site-publish/menus.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + Apache Tuscany : Menus + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html b/site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html new file mode 100644 index 0000000000..a5c090bcae --- /dev/null +++ b/site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html @@ -0,0 +1,155 @@ + + + + + + + Mike Edwards Ramble through Adding a New Component Type : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Extension Development Guide > Mike Edwards Ramble through Adding a New Component Type + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Adding a New Component Type

+ +

(3rd May 2007) I wanted to get the Spring and BPEL component types running with the new Tuscany Java core.  This page and those hung off it are my ramblings as I go through the process of building the code for these component types.  I hope that these will help anyone else who wants to venture down the path of adding a component type.  Beware that I make no claims as to great insight or special knowledge - and I am sure that there will be things that I have not tackled.

+ +

Associated with this general page is a set of pages dedicated to Adding the Spring Component Type where specifics relating to the Spring implementation are described.

+ +

Basic Information about code for a Component Type 

+ +

To create a Module which supports a Component Type, you need to implement a series of interfaces to the Tuscany Core, plus a set of related files which declare your Module to the core:

+
    +
  • xxxModuleActivator class, which implements the ModuleActivator interface
  • +
  • ModuleActivator file
  • +
  • xxxArtifactProcessor class, which processes the XML for an implementation type
  • +
  • xxxImplementation class, which represents a runtime instance of the implementation type
  • +
+ + +

How does a Component Type Module declare the XML that it handles?

+ +

For a Component Type module, it is going to handle the XML <implementation.xxx.../>, which is a child of a <component.../> element in the SCDL.

+ +

How does the module indicate to the core that it handles the <implementation.xxx.../> element?

+ +

TODO: Get an answer to this question.... 

+ +

xxxModuleActivator class

+ +

Called when the Tuscany core is loading, starting and stopping the Module which implements the component type.

+ +

Implements ModuleActivator interface, with 3 methods:

+
    +
  • start
  • +
  • stop
  • +
  • getExtensionPoints
  • +
+ + +

Of these, start() is the most important - it seems possible to get by with the other 2 doing nothing.

+ +

Start handles: 

+
    +
  • Registration of xxxArtifactProcessor, which handles the <implementation.xxx..../> XML
  • +
  • Registration of xxxComponentBuilder, which builds a component of the type handled by the module
  • +
  • Registration of xxxPropertyValueObjectFactory
  • +
+ + +

The ModuleActivator file 

+ +

This must be placed into the location

+ +

META-INF/services/org.apache.tuscany.spi.bootstrap.ModuleActivator

+ +

... this will be under the Resources directory in the source tree

+ +

The file contains the class name for the implementation of your Module, eg:

+
+
# Implementation class for the ExtensionActivator for module Foo
+org.apache.tuscany.implementation.foo.FooModuleActivator
+
+ +

The xxxArtifactProcessor class

+ +

This class is called to deal with the XML in the composite SCDL files which relates to the implementation type - ie. <implementation.xxx.../>

+ +

The class is passed an XML stream which it reads and parses out the contents of the <implementation.xxx.../> element, principally getting all of the attributes and child elements (if present).

+ +

When the information has been parsed out, the xxxArtifactProcessor class creates an xxxImplementation object which represents the runtime component corresponding to the implementation.xxx element.

+ +

One other step that is handled by the xxxArtifactProcessor class is the resolution of the componentType for the component - teasing out its services, references and properties.  This is either done by introspection of the implementation (instance) or via reading a componentType side file. 

+ +

xxxImplementation class

+ +

The xxxImplementation class represents the implementation instances themselves.

+ +

Implements the org.apache.tuscany.assembly.Implementation interface 

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-implementation-type.html b/site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-implementation-type.html new file mode 100644 index 0000000000..3fb2672b36 --- /dev/null +++ b/site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-implementation-type.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + Apache Tuscany : Mike Edwards Ramble through Adding a New Implementation Type + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Extension Development Guide > Mike Edwards Ramble through Adding a New Implementation Type + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Adding a New Implementation Type

+ +

(3rd May 2007) I wanted to get the Spring and BPEL implementation types running with the new Tuscany Java core.  This page and those hung off it are my ramblings as I go through the process of building the code for these implementation types.  I hope that these will help anyone else who wants to venture down the path of adding an implementation type.  Beware that I make no claims as to great insight or special knowledge - and I am sure that there will be things that I have not tackled.

+ +

Associated with this general page is a set of pages dedicated to Adding the Spring Implementation Type where specifics relating to the Spring implementation are described.

+ +

Basic Information about code for an Implementation Type 

+ +

To create a Module which supports an Implementation Type, you need to implement a series of interfaces to the Tuscany Core, plus a set of related files which declare your Module to the core:

+
    +
  • xxxModuleActivator class, which implements the ModuleActivator interface
  • +
  • ModuleActivator file, which identifies your code to the core as providing an implementation type
  • +
  • xxxArtifactProcessor class, which processes the XML for an implementation type
  • +
  • xxxImplementation class, which represents a runtime instance of the implementation type
  • +
+ + +

How does a Implementation Type Module declare the XML that it handles?

+ +

For an Implementation Type module, it is going to handle the XML <implementation.xxx.../>, which is a child of a <component.../> element in the SCDL.

+ +

How does the module indicate to the core that it handles the <implementation.xxx.../> element?

+ +

This is done through the xxxArtifactProcessor.getArtifactType() method.  This method returns a QName for the XML element that it implements (ie a combination of the Namespace and the Element name of the element). 

+ +

The QName for the implementation type is read by the core at the point where the xxxModuleActivator class invokes the addArtifactProcessor() method of the StAXArtifactProcessorExtensionPoint for the core Registry, typically in the start() method of the xxxModuleActivator class.

+ + +

xxxModuleActivator class

+ +

Called when the Tuscany core is loading, starting and stopping the Module which provides the implementation type.

+ +

Implements ModuleActivator interface, with 3 methods:

+
    +
  • start
  • +
  • stop
  • +
  • getExtensionPoints
  • +
+ + +

Of these, start() is the most important - it seems possible to get by with the other 2 doing nothing.

+ +

start() handles: 

+
    +
  • Registration of xxxArtifactProcessor, which handles the <implementation.xxx..../> XML
  • +
  • Registration of xxxImplementationProviderFactory, which is a factory class for xxxImplementation objects, which represent instances of the implementation type provided by the module
  • +
  • Creation of objects of various types that may be required by the xxxArtifactProcessor and xxxImplementationProviderFactory classes
  • +
+ + +

The ModuleActivator file 

+ +

This must be placed into the location

+ +

META-INF/services/org.apache.tuscany.spi.bootstrap.ModuleActivator

+ +

... this will be under the Resources directory in the source tree

+ +

The file contains the class name for the implementation of your Module, eg:

+
+
# Implementation class for the ExtensionActivator for module Foo
+org.apache.tuscany.implementation.foo.FooModuleActivator
+
+
+ +

The xxxArtifactProcessor class

+ +

This class is called to deal with the XML in the composite SCDL files which relates to the implementation type - ie. <implementation.xxx.../>

+ +

The class is passed an XML stream which it reads and parses out the contents of the <implementation.xxx.../> element, principally getting all of the attributes and child elements (if present).

+ +

When the information has been parsed out, the xxxArtifactProcessor class creates an xxxImplementation object which represents the runtime component corresponding to the implementation.xxx element.

+ +

One other step that is handled by the xxxArtifactProcessor class is the resolution of the componentType for the component - teasing out its services, references and properties.  This is either done by introspection of the implementation (instance) or via reading a componentType side file. 

+ +

xxxImplementation class

+ +

The xxxImplementation class represents the implementation instances themselves.

+ +

Implements the org.apache.tuscany.assembly.Implementation interface 

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/named-parameters-support.html b/site/trunk/site-publish/named-parameters-support.html new file mode 100644 index 0000000000..5c6601450a --- /dev/null +++ b/site/trunk/site-publish/named-parameters-support.html @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + Apache Tuscany : Named parameters support + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > Named parameters support + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Named parameters support

+ +

JDB API requires indexed parameter setting. i.e. statement.setXXX(int, value). But in the DAS client
+it may be helpful to provide named parameters setting on the command. This is particularly convenient
+when the table involves many columns during insert/update.

+ +

Below are config schema portion supporting this.

+
+
<xsd:complexType name="Parameter">
+  <xsd:attribute name="name" type="xsd:string"/>
+  <xsd:attribute name="columnType" type="xsd:string"/>
+  <xsd:attribute name="direction" type="xsd:string" default="IN"/>
+  <xsd:attribute name="index" type="xsd:int"/>
+</xsd:complexType>
+<xsd:complexType name="Parameters">
+  <xsd:sequence>
+	<xsd:element maxOccurs="unbounded" minOccurs="0" name="Parameter" type="config:Parameter"/>
+  </xsd:sequence>
+</xsd:complexType>
+<xsd:complexType name="Create">
+  <xsd:sequence>
+    <xsd:element maxOccurs="1" minOccurs="0" name="Parameters" type="config:Parameters"/>
+  </xsd:sequence>
+  <xsd:attribute name="sql" type="xsd:string"/>
+</xsd:complexType>
+<xsd:complexType name="Update">
+  <xsd:sequence>
+    <xsd:element maxOccurs="1" minOccurs="0" name="Parameters" type="config:Parameters"/>
+  </xsd:sequence>
+  <xsd:attribute name="sql" type="xsd:string"/>
+</xsd:complexType>
+<xsd:complexType name="Delete">
+  <xsd:sequence>
+    <xsd:element maxOccurs="1" minOccurs="0" name="Parameters" type="config:Parameters"/>
+  </xsd:sequence>
+  <xsd:attribute name="sql" type="xsd:string"/>
+</xsd:complexType>
+<xsd:complexType name="Command">
+  <xsd:sequence>
+     <xsd:element maxOccurs="unbounded" minOccurs="0" name="Parameter" type="config:Parameter"/>
+     <xsd:element maxOccurs="unbounded" minOccurs="0" name="ResultDescriptor" type="config:ResultDescriptor"/>
+  </xsd:sequence>
+  <xsd:attribute name="name" type="xsd:string"/>
+  <xsd:attribute name="SQL" type="xsd:string"/>
+  <xsd:attribute name="kind" type="xsd:string"/>
+</xsd:complexType>
+
+
+ +

User can do Command.setParameter(String name, Object value), getParameter(String name). Indexed set/getParameter() is available as before. Also <create>, <update>, <delete> from Config support named parameters.

+ +

example config:

+
+
<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd"> 
+<Table tableName="CUSTOMER">  		 
+  <create sql="insert into customer values (?, ?, ?)" >
+    <Parameters>
+      <Parameter name="ID" index="1"/>
+      <Parameter name="LASTNAME" index="1"/>
+      <Parameter name="ADDRESS" index="3"/>
+    </Parameters>
+  </create>
+</Table>
+<Command name="createCustomer" SQL="insert into CUSTOMER values ( ?, ?, ?)" kind="Insert">
+   <Parameter name="ID" index="1"/>
+   <Parameter name="LASTNAME" index="2"/>
+   <Parameter name="ADDRESS" index="3"/>
+</Command>
+
+
+ +

if +ve index is specified in Parameter, it is used, else auto-increment is used. As List is an ordered collection, the sequence(index value) appearing in the cofig file will be maintained. Partially specifying indexes is not supported (i.e. give index for 2 out of 3 params and leave one without it, is not supported)
+Also, if indexes are specified, the ordering in config is flexible, i.e. below is valid.

+
+
<Command name="createCustomer" SQL="insert into CUSTOMER values ( ?, ?, ?)" kind="Insert">   
+   <Parameter name="LASTNAME" index="2"/>
+   <Parameter name="ID" index="1"/>
+   <Parameter name="ADDRESS" index="3"/>
+</Command>
+
+
+ +

Note Convention over config is followed, if Parameters are not defined in config, the sequence
+should match the table columns convention,else user should specify params on command in config and specify index attributes in them config

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/native-sca-menu.html b/site/trunk/site-publish/native-sca-menu.html new file mode 100644 index 0000000000..585d2f0923 --- /dev/null +++ b/site/trunk/site-publish/native-sca-menu.html @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + Apache Tuscany : Native SCA Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Native SCA Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
Unable to render {include} Couldn't find a page to include called: SCA
+
Documentation
+

User Guide
+Getting Started
+[Architecture Guide|]
+Developer Guide
+[Extension Developer Guide|]

+
+ +
Resources
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/native-sdo-menu.html b/site/trunk/site-publish/native-sdo-menu.html new file mode 100644 index 0000000000..2bec557d2d --- /dev/null +++ b/site/trunk/site-publish/native-sdo-menu.html @@ -0,0 +1,67 @@ + + + + + + + Native SDO Menu : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Menus > SDO > Native SDO Menu + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ +
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/navigation.html b/site/trunk/site-publish/navigation.html new file mode 100644 index 0000000000..1bef61cfb9 --- /dev/null +++ b/site/trunk/site-publish/navigation.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Navigation + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > To Be Deleted > Navigation + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/new-home-page.html b/site/trunk/site-publish/new-home-page.html new file mode 100644 index 0000000000..3e8828fd5d --- /dev/null +++ b/site/trunk/site-publish/new-home-page.html @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New Home Page : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > New Home Page + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ + + +
+ + + +
Subprojects
+

SDO
+DAS

+
+ +

Welcome to Tuscany

+

Apache Tuscany simplifies the task of developing SOA solutions by providing a comprehensive infrastructure for SOA development and management that is based on Service Component Architecture (SCA) standard. With SCA as it's foundation, Tuscany offers solution developers the following advantages.

+
    +
  • Provides a composition model that defines the services in a solution, such as fruit store, and how they interact with one another. Services that constitute a solution can be implemented using any technology.
  • +
  • Enables service developers to create reusable services that only contain business logic. Protocols are pushed out of business logic and are handled through pluggable bindings. This lowers development cost.
  • +
  • Applications that can easily adapt to infrastructure changes without recoding since protocols are handled via pluggable bindings and quality of services (transaction, security) are handled declaratively.
  • +
  • Existing applications can work with new SCA compositions enabling incremental growth towards a more flexible architecture.
  • +
+ + + + +
+ +

In addition, Tuscany is integrated with various technologies and offers:

+
    +
  • a wide range of bindings (pluggable protocols)
  • +
  • various component types including and not limited to Java, C++, BPEL, Spring and scripting
  • +
  • an end to end service and data solution which includes support for Jaxb and SDO
  • +
  • a lightweight runtime that works standalone or with other application servers
  • +
  • a modular architecture that makes it easy to integrate with different technologies and to extend
  • +
  • Integration with web20 technologies
  • +
+ + +

Apache Tuscany SCA is implemented in Java and C++ (referred to as Native) . Learn more about SCA

+ +

Please join us to create a practical SOA infrastructure that addresses the challenges which small to large scale businesses face.

+ + +
+ +
+ + +
+
Tuscany News Dashboard
+

+ + + + + + + +
+ + Apache Tuscany + (rss_2.0) +
+ (...making SOA easy) +
+ A Tour of Tuscany Information Resources + + (Feb 01, 2009 13:07) +
+

+
+
+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/news-and-events.html b/site/trunk/site-publish/news-and-events.html new file mode 100644 index 0000000000..68de96559c --- /dev/null +++ b/site/trunk/site-publish/news-and-events.html @@ -0,0 +1,199 @@ + + + + + + + + News and Events + + + + + + + +
+  Apache Tuscany > Home > News and Events + +
+ + + + + + +
+
+ +
+ +
+ Added by jmarino, last edited by haleh mahbod on May 24, 2007 +  (view change) + +
+ +
+
+
+ + + + + + +

Upcoming Events

+ +

June 25-27 2007 – SOA World, New York

+ +

Tuscany committer Simon Laws will be presenting 'Building SOA applications using Apache Tuscany' at SOA World 2007 in New York.
+For more information, see http://www.soaeosconference.sys-con.com/general/session07.htm?id=33

+ +

June 12-14 2007 – Sigmod, China

+ +

*June 18-20 2007 – Open Source Summit, China *

+ + +

Past News and Events

+ +

May 8-11 2007 – JavaOne, San Francisco

+ +

A BOF on SCA will be presented entitled "Building Composite Services Applications". Many of Tuscany community members will also be attending JavaOne.

+ +

May 16-18, 2007 – PHP Tek, Chicago, Ill.
+Caroline Maynard, Tuscany user through PHP project will present 'Services Made Simple with PHP' on May 16th, tack 2.

+ + +

March 21-23 2007 – Serverside Symposium, Las Vegas

+ +

Tuscany Committers Jeremy Boynes, Meeraj Kunnumpurath, and Jim Marino will be presenting at the Las Vegas Serverside Symposium on the Java SCA project. For information, see http://javasymposium.techtarget.com/lasvegas/index.html

+ +

December 11-15 2006 - JavaPolis 2006 - Belgium

+ +

Tuscany Committer Andy Borley presented "Apache Tuscany - Not The Same Old Architecture". See the presentation here

+ + +

December 22 2006 – Java SCA M2 released

+ +

The Tuscany community released SCA Java Milestone 2. Please see Downloads.

+ + +

November 20 2006 – Tuscany Java DAS M2 released

+ +

The Tuscany team released DAS Java Milestone 2. Please see Downloads.

+ + +

November 14 2006 – Tuscany Java SDO M2 released

+ +

The Tuscany team released SDO Java Milestone 2. Please see Downloads.

+ + +

November 3 2006 – Tuscany makes available C++ SCA M2 released

+ +

The Tuscany team released SCA C++ Milestone 2. Please see Downloads.

+
+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/news-past-events.html b/site/trunk/site-publish/news-past-events.html new file mode 100644 index 0000000000..8ceccb86b9 --- /dev/null +++ b/site/trunk/site-publish/news-past-events.html @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + Apache Tuscany : News - Past Events + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > News - Past Events + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

past events

+ + +

May 11, 2008 - PyCon Italia Due
+Giorgio Zoppi presents Python e Service Component Architecture covering Python in SCA

+ +

April 27, 2008 - Tuscany Java SCA 1.2 released!

+ +

April 15, 2008 - Tuscany Java SDO 1.1 released!

+ +

Feb 05, 2008 - Tuscany Java SCA 1.1 released!

+ +

Nov 12-13, 2007 - SOAWorld Conference & Expo 2007 West
+Raymond Feng presents Practical SOA with Apache Tuscany

+ +

Oct 06, 2007 - Tuscany DAS Beta2 released!

+ +

Sept 24, 2007 - Tuscany Java SCA 1.0 released!

+ +

Sept 12-13, 2007 - Java Zone, Europe
+Simon Laws SCA and Tuscany

+ + +

Nov 12-16 2007 - ApacheCon US, Atlanta, Georgia in US
+Jean Sebastien Delfino and Mario Antollini will hold a 3 hours tutorial session for SCA and Tuscany

+ +

July 23-27 2007 - OSCON, Portland, Oregon
+Patrick Leonard, VP Product Development, Rogue Wave Software will host a BoF around "The Current State of the Tuscany Project and Future Direction for Java, C++ and Other Supported Programming Languages"

+ +

June 25-27 2007 - SOA World, New York
+Simon Laws will be presenting 'Building SOA applications using Apache Tuscany' and 'PHP SCA @ Your Service'.

+ +

June 11-14 2007 - ACM SIGMOD/PODS 2007 Conference, Beijing, China
+Raymond Feng will be presenting. Presentation co-authored by Luciano Resende.

+ +

June 21-22 2007 - 2007 Open Source China Open Source World Summit, GuangZhou, China
+Raymond Feng will be presenting.

+ +

May 8-11 2007 - JavaOne, San Francisco

+ +

A BOF on SCA will be presented entitled "Building Composite Services Applications". Many of Tuscany community members will also be attending JavaOne.

+ +

May 16-18, 2007 - PHP Tek, Chicago, Ill.
+Caroline Maynard, Tuscany user through PHP project will present 'Services Made Simple with PHP' on May 16th, tack 2.

+ +

March 21-23 2007 - Serverside Symposium, Las Vegas
+Tuscany Committers Jeremy Boynes, Meeraj Kunnumpurath, and Jim Marino will be presenting at the Las Vegas Serverside Symposium on the Java SCA project. For information, see http://javasymposium.techtarget.com/lasvegas/index.html

+ +

December 11-15 2006 - JavaPolis 2006 - Belgium
+Tuscany Committer Andy Borley presented "Apache Tuscany - Not The Same Old Architecture". See the presentation here

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/news.data/BuildingSOAWithApacheTuscany.ppt b/site/trunk/site-publish/news.data/BuildingSOAWithApacheTuscany.ppt new file mode 100644 index 0000000000..4b40e717b8 Binary files /dev/null and b/site/trunk/site-publish/news.data/BuildingSOAWithApacheTuscany.ppt differ diff --git a/site/trunk/site-publish/news.html b/site/trunk/site-publish/news.html new file mode 100644 index 0000000000..eaea67bde7 --- /dev/null +++ b/site/trunk/site-publish/news.html @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + Apache Tuscany : News + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > News + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

News

+ +
    +
  • October 13, 2008 - PR: Apache Tuscany enables service oriented architecture solutions to more easily respond to new business requirements.
    +Apache Tuscany, a new Top-Level Project of the Apache Software Foundation (ASF),
    +today announced the release of version 1.3.2 of its Service Component Architecture (SCA) for Java -
    + the Project's latest release since its graduation from the ASF Incubator four months ago.
  • +
+ + + + + + + + + + + + + + + + + +
    +
  • May 21, 2008 - Apache Tuscany is now an offical ASF project!
    +The ASF board has approved graduation from the Apache Incubator to be a fully endorsed ASF top level project.
  • +
+ + +
    +
  • To view a list of previous releases please go to the download page of each subproject.
  • +
  • past Tuscany events
  • +
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/obtaining-a-tuscany-java-sca-implementation.html b/site/trunk/site-publish/obtaining-a-tuscany-java-sca-implementation.html new file mode 100644 index 0000000000..0d313c3500 --- /dev/null +++ b/site/trunk/site-publish/obtaining-a-tuscany-java-sca-implementation.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + Apache Tuscany : Obtaining a Tuscany Java SCA Implementation + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Obtaining a Tuscany Java SCA Implementation + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Choosing between a package runtime and building your own

+ +

Downloading and installing a release

+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/obtaining-the-sdo-21-cts.html b/site/trunk/site-publish/obtaining-the-sdo-21-cts.html new file mode 100644 index 0000000000..46f2117d3a --- /dev/null +++ b/site/trunk/site-publish/obtaining-the-sdo-21-cts.html @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + Apache Tuscany : Obtaining the SDO 2.1 CTS + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SDO Overview > SDO CTS > Obtaining the SDO 2.1 CTS + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ + +

Obtaining and using the CTS

+ +

Currently the SDO CTS is only available in source form from the subversion repository. You will need the following:

+ + + +

The code can be down loaded from the subversion repository using :

+
+
+svn co http://svn.apache.org/repos/asf/tuscany/sdo-java/trunk-cts/
+
+
+ +

The SDO CTS project currently contains two sub-projects:

+
    +
  • cts/sdo2.1 contains the acutal test cases
  • +
  • cts/sdo2.1-tuscany executes the test cases against the current Tuscany Implementation
  • +
+ + +

To build the CST and run it against the Tuscany implementation all you need do is:

+
+
+me@mine:~$ cd cts
+me@mine:~/cts$  mvn
+
+
+ +

If you would like to execute the SDO CTS against a different implementation then you will need to provide a helper class. For more info on this see the Contributing section.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/obtaining-tuscanys-java-sca-implementation.html b/site/trunk/site-publish/obtaining-tuscanys-java-sca-implementation.html new file mode 100644 index 0000000000..4e0385a9e0 --- /dev/null +++ b/site/trunk/site-publish/obtaining-tuscanys-java-sca-implementation.html @@ -0,0 +1,137 @@ + + + + + + + + Obtaining Tuscany's Java SCA Implementation + + + + + + + +
+  Apache Tuscany > Index > SCA Java > SCA Java User Guide > Obtaining Tuscany's Java SCA Implementation + +
+ + + + + + +
+
+ +
+ +
+ Added by Dan Murphy, last edited by Dan Murphy on Feb 13, 2007 +  (view change) + +
+ +
+
+

Choosing between a package runtime and building your own

+ +

Downloading and installing a release

+ +
+ +
+ Children + + Show Children + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/old-sandbox.html b/site/trunk/site-publish/old-sandbox.html new file mode 100644 index 0000000000..defc31d846 --- /dev/null +++ b/site/trunk/site-publish/old-sandbox.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + Apache Tuscany : old-Sandbox + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > old-Sandbox + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+ +

Welcome to the open source Apache Tuscany project! The Tuscany community is working together to create a robust infrastructure that aims to simplify the development of service oriented (SOA) systems.

+ +

Tuscany is based on open standards defined by the Open SOA Collaboration and is comprised of independent technologies designed to work well together based on:

+ +

Apache Tuscany is based on independent technologies that together provide following:

+
    +
  • Service Component Architecture (SCA) enables composition of service networks through assembly of existing and new services. As an example, a service can be implemented as JAX-WS service, Spring Bean or EJB and exposed as a web service. Tuscany SCA allows services to be implemented in variety of languages such as Java, JavaScript and C++. The Tuscany SCA runtime is implemented in Java and C++ and can easily be extended to support any communication transport, qualities of service or programming model and can be used in conjunction with other technologies such as Spring, Axis and Celtix.
  • +
  • Service Data Object (SDO) provides a uniform interface for handling different forms of data, including XML documents, that can exist in a network of services and provides the mechanism for tracking changes. Apache Tuscany provides Java and C++ implementations for SDO.
  • +
  • Data Access Service (DAS) provides a simple SDO interface to relational databases. Apache Tuscany provides a Java implementation for DAS.
  • +
+ + + +

Please join us to develop this innovative infrastructure and/or provide feedback based on your experiences. With your help Apache Tuscany will become a first class solution for simplifying the development of SOA-based systems.

+
+

Copyright © 2006, The Apache Software Foundation Apache Tuscany is undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Web Services PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/optimisticconcurrencycontrol.html b/site/trunk/site-publish/optimisticconcurrencycontrol.html new file mode 100644 index 0000000000..98e0da9979 --- /dev/null +++ b/site/trunk/site-publish/optimisticconcurrencycontrol.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + Apache Tuscany : OptimisticConcurrencyControl + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > OptimisticConcurrencyControl + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

OptimisticConcurrencyControl

+ + +

The RDB DAS is intended for use in disconnected scenarios. When the DAS returns a graph of SDO DataObjects as the result of a query, there are no locks held on the underlying database and the data is no longer associated with any database connection or transaction. However, although locks are not held, the DAS does employ a mechanism called Optimistic Concurrency Control (OCC) to manage concurrency.

+ +

Basically, when OCC is being utilized, the DAS checks whether the state of the database has changed since the original data was read before applying any writes to the same location. For example, suppose that a DAS client reads a set of Customers, modifies one Customer and then attempts to write the change back to the database:

+
+

Command select = das.createCommand("Select * from CUSTOMER where LASTNAME = 'Williams'");
+ DataObject root = select.executeQuery();

+ +

DataObject customer = (DataObject) root.get("CUSTOMER[1]");
+ customer.set("LASTNAME", "Pavick");

+ +

//Some period of time passes in which "CUSTOMER[1]" could be modified by another process or application

+ +

das.applyChanges(root);

+
+

If OCC is enabled then as part of "applyChanges" processing the DAS will ensure that the table row representing "CUSTOMER[1]" has not been changed since it was read. This is possible because a feature of the original SDO graph is to "remember" its original state along with any changes that have been made. The DAS has access to this original state and uses it to create an "overqualified" update statement. When the DAS executes this update statement against the database, it will fail if the underlying data has been modified (a collision has occurred) and, if so, an exception will be thrown and the transaction rolled back. If there is no collision then the update statement execution succeeds and the change is applied.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG b/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG new file mode 100644 index 0000000000..3f6509baca Binary files /dev/null and b/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG differ diff --git a/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg b/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg new file mode 100644 index 0000000000..a5180fa0dd Binary files /dev/null and b/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg differ diff --git a/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg b/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg new file mode 100644 index 0000000000..29853f9e1e Binary files /dev/null and b/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg differ diff --git a/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg b/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg new file mode 100644 index 0000000000..3dd9af44be Binary files /dev/null and b/site/trunk/site-publish/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg differ diff --git a/site/trunk/site-publish/osgi-aware-programming-in-tuscany.html b/site/trunk/site-publish/osgi-aware-programming-in-tuscany.html new file mode 100644 index 0000000000..ba033043a3 --- /dev/null +++ b/site/trunk/site-publish/osgi-aware-programming-in-tuscany.html @@ -0,0 +1,348 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OSGi Aware Programming in Tuscany : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > OSGi Aware Programming in Tuscany + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ +

Motivation for OSGi

+ +

The Apache Tuscany project has become a large project, with various extensions and component types that brings to the SCA Runtime different levels of dependencies. With its growth, Tuscany also started to have it's SPIs violated by some of these extensions, and some of the boundaries between sub-systems are broken, as there wasn't any enforcement of these boundaries.

+ +

The OSGi model provides a very powerful and flexible framework to develop applications in a modular fashion with a high degree of control over classloading inter-dependencies over modules. An OSGi module (a.k.a bundle) have a manifest file (META-INF\manifest.mf) that contains module information such as "name", "version" and also a list of what packages are being exported, and what packages are being imported from the given bundle, providing ways to easily enforce module boundaries.

+ +

In summary:

+
    +
  • Better class loading mechanism for our modules
  • +
  • Create clean boundaries between sub-systems
  • +
+ + +

Tuscany and OSGi - 3rd party dependencies

+ +

Currently we are wrapping the 3rd party dependencies as OSGi bundles, but leaving it unpacked (a.k.a folder structure). This allow use to use the same dependency jars in a OSGi environment as well as in a non-OSGI environment and generating no side effect on our distribution footprint.

+ +

+ + +

Tuscany and OSGi - Granularity

+ +

The granularity used to define modules should be very familiar to all tuscany developers,

+ +

Tuscany Modules --> OSGi Bundles
+ 3rd Party Libraries --> OSGi Bundles (using unpacked wrap style bundle)

+ +

Properly defining new Tuscany modules as an OSGi bundle

+ +

When adding new modules to the Tuscany project, the developer will need to create the OSGi Manifest to properly describe the new module as an OSGi bundle. These artifacts can be automatically generated using the Felix maven-bundle-plugin and should be available from svn repository once it's stable.

+ +

Generating OSGi manifest with Felix maven-bundle-plugin

+ +
"configuring maven to generate the OSGi manifest"
+
+<plugin>
+    <groupId>org.apache.felix</groupId>
+    <artifactId>maven-bundle-plugin</artifactId>
+    <configuration>
+        <instructions>
+            <!-- Bundle versioned from Tuscany version -->
+            <Bundle-Version>${tuscany.version}</Bundle-Version>
+            <!-- Bundle Symbolic name -->
+            <Bundle-SymbolicName>org.apache.tuscany.sca.api</Bundle-SymbolicName>
+            <!-- Bundle description from pom description -->
+            <Bundle-Description>${pom.description}</Bundle-Description>
+            <!-- Export org.osoa.sca and all sub-packages -->
+            <Export-Package>org.osoa.sca*</Export-Package>
+            <!-- No Import-Package so calculate imports from code dependencies -->
+        </instructions>
+    </configuration>
+</plugin>
+
+
+ +

Below is a manifest that was generated for one of the Tuscany modules using the felix maven-bundle-plugin.

+ +
"OSGi Manifest (META-INF\manifest.mf)"
+
+Manifest-Version: 1.0
+Export-Package: org.apache.tuscany.sca.assembly;uses:="javax.xml.xpath
+ ,org.apache.tuscany.sca.assembly.impl,org.apache.tuscany.sca.policy,o
+ rg.apache.tuscany.sca.interfacedef,javax.xml.namespace";version="1.4"
+ ,org.apache.tuscany.sca.assembly.impl;uses:="javax.xml.xpath,org.apac
+ he.tuscany.sca.assembly,org.apache.tuscany.sca.policy,org.apache.tusc
+ any.sca.interfacedef,javax.xml.namespace";version="1.4",org.apache.tu
+ scany.sca.assembly.builder;uses:="org.apache.tuscany.sca.assembly,org
+ .apache.tuscany.sca.definitions,org.apache.tuscany.sca.core,org.apach
+ e.tuscany.sca.monitor,org.apache.tuscany.sca.interfacedef,org.apache.
+ tuscany.sca.extensibility";version="1.4"
+Private-Package: org.apache.tuscany.sca.assembly.builder.impl;version=
+ "1.4"
+Tool: Bnd-0.0.255
+Bundle-Name: Apache Tuscany SCA Assembly Model
+Created-By: 1.6.0_07 (Sun Microsystems Inc.)
+Bundle-Vendor: The Apache Software Foundation
+Bundle-Version: 1.4
+Bnd-LastModified: 1225397097203
+Bundle-ManifestVersion: 2
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
+Bundle-Description: Apache Tuscany SCA Assembly Model
+Import-Package: javax.xml.namespace,javax.xml.parsers,javax.xml.transf
+ orm,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.xpath,o
+ rg.apache.tuscany.sca.assembly;version="1.4",org.apache.tuscany.sca.a
+ ssembly.builder;version="1.4",org.apache.tuscany.sca.assembly.impl;ve
+ rsion="1.4",org.apache.tuscany.sca.core;version="1.4",org.apache.tusc
+ any.sca.definitions;version="1.4",org.apache.tuscany.sca.extensibilit
+ y;version="1.4",org.apache.tuscany.sca.interfacedef;version="1.4",org
+ .apache.tuscany.sca.monitor;version="1.4",org.apache.tuscany.sca.poli
+ cy;version="1.4",org.apache.tuscany.sca.policy.util;version="1.4",org
+ .w3c.dom,org.xml.sax,junit.framework;resolution:=optional,org.apache.
+ tuscany.sca.interfacedef.impl;version="1.4";resolution:=optional,org.
+ junit;resolution:=optional
+Bundle-SymbolicName: org.apache.tuscany.sca.assembly
+Bundle-DocURL: http://www.apache.org/
+
+
+ +

Tweaking the OSGi manifest

+ +

Eclipse PDE provides good tooling for editing and maintaining OSGi manifest files. There are various scenarios we might need to tweak the OSGi manifest manualy :

+ +
    +
  • Updating imported/exported packages
  • +
  • Marking test dependencies optional +
      +
    • Avoid issues when tests have references to external packages
    • +
    +
  • +
+ + +

+ +

PDE integration of tuscany modules

+

1) We generate the .classpath from maven dependencies.

+ +

2) For maven compile/provided dependencies, the modules explicit references
+these dependencies via packages. We define corresponding Import-Package
+header in the MANIFEST.MF for OSGi, and these get resolved to other bundles
+that export the matching packages. This magic comes from the
+"org.eclipse.pde.core.requiredPlugins" classpath container which is
+contributed by the Eclipse PDE. The classpath container resolves the OSGi
+dependencies such as Import-Package or Required-Bundle and automatically add
+the required bundles to the classpath as we see in Eclipse project under the
+"Plugin Dependencies".

+ +

3) The exported packages come from three types of sources:

+
    +
  • System packages (exported by the System Bundle, i.e., org.eclipse.osgi).
    +Different JDK levels have different list of system packages, for example,
    +javax.xml.stream is not in J2SE-1.5 but in JSEJava-1.6. You can find the
    +complete list by looking the .profile files within osgi-<version>.jar.
  • +
  • Tuscany modules in the Eclipse workspace. The classpath entry will be
    +listed as a project under "Plugin Dependencies"
  • +
  • 3rd-party jars (already as OSGi bundles contributed by the target
    +platform). The classpath entry will be listed as a jar under "Plugin
    +Dependencies"
  • +
+ + +

4) For maven runtime dependencies, there is no corresponding Import-Package
+and the dependencies are used in runtime. Ideally in OSGi, they could be a
+Required-Bundle or a bundle available at runtime. To run the project in JSE
+inside Eclipse, we generate an explicit classpath entry.

+ +

5) For maven test dependencies, there are two types: one is for test
+compilation and the other for test runtime. For the first type, we use
+optional Import-Package to pull in the dependencies if the same project has
+the compile dependency for the same artifact. Otherwise, we generate an
+explicit classpath entry for JSE testing.

+ +

6) For test cases which require extra dependencies in addition to the
+compile/provided/runtime dependencies for the main code, they probably
+should not be unit tests. We need to consider how to move them into the
+itest bucket.

+ + + + + +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + diff --git a/site/trunk/site-publish/othermenu.html b/site/trunk/site-publish/othermenu.html new file mode 100644 index 0000000000..b15880cc75 --- /dev/null +++ b/site/trunk/site-publish/othermenu.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + Apache Tuscany : otherMenu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > otherMenu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

includes
+committer
+license
+...

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/overview.html b/site/trunk/site-publish/overview.html new file mode 100644 index 0000000000..fd07b6ec40 --- /dev/null +++ b/site/trunk/site-publish/overview.html @@ -0,0 +1,120 @@ + + + + + + + + Overview + + + + + + + +
+  Apache Tuscany > Home > Java SCA > Java SCA Menu > Overview + +
+ + + + + + +
+
+ +
+ +
+ Added by jmarino, last edited by jmarino on Mar 03, 2007 + +
+ +
+
+

Java SCA Project

+ +

The Java SCA project provides infrastructure for creating service-based systems.

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/partialupdate.html b/site/trunk/site-publish/partialupdate.html new file mode 100644 index 0000000000..f124fc940a --- /dev/null +++ b/site/trunk/site-publish/partialupdate.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + Apache Tuscany : PartialUpdate + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > PartialUpdate + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

PartialUpdate

+ +

The RDB DAS uses the SDO Change Summary to generate a set of database write operations. Rather than generated a statement to update all columns in a table that maps to a SDO DataObject Type, the DAS generates statements that update ony those columns that map to a modified DataObject property. For example, consider a Customer DataObject that has had the LastName property changed. The partial update statement generated by the DAS will look something like this:

+
+
UPDATE CUSTOMER SET LASTNAME = ? WHERE ID = ?
+
+
+

Rather than a statement that updates all columns like this:

+
+
UPDATE CUSTOMER SET FIRSTNAME = ?, SET LASTNAME = ?, SET ADDRESS = ?, SET PHONE = ?, SET AGE = ?, SET SHOESIZE = ? WHERE ID = ?
+
+
+

There are a couple of very good reasons for using a partial update approach. For one, a performance boost can be realized by applications writing to wide tables. For example, tables with over 100 columns are not unheard of. It can be a huge waste of resource to update 100 columns when only one was modified. Another reason for partial update is that some databases employ triggerson specific columns in a table. Partial updates are necessary when column triggers are employed to avoid tripping the trigger on every row update rather than only on updates to the specific column.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/past-events.html b/site/trunk/site-publish/past-events.html new file mode 100644 index 0000000000..ffe38134dc --- /dev/null +++ b/site/trunk/site-publish/past-events.html @@ -0,0 +1,139 @@ + + + + + + + Past Events : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > General Info > Past Events + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + + + + + +

past events

+ +

July 23-27 2007 - OSCON, Portland, Oregon
+Patrick Leonard, VP Product Development, Rogue Wave Software will host a BoF around "The Current State of the Tuscany Project and Future Direction for Java, C++ and Other Supported Programming Languages"

+ +

June 25-27 2007 - SOA World, New York
+Simon Laws will be presenting 'Building SOA applications using Apache Tuscany' and 'PHP SCA @ Your Service'.

+ +

June 11-14 2007 - ACM SIGMOD/PODS 2007 Conference*, Beijing, China*
+Raymond Feng will be presenting. Presentation co-authored by Luciano Resende.

+ +

June 21-22 2007 - 2007 Open Source China Open Source World Summit, GuangZhou, China
+Raymond Feng will be presenting.

+ +

May 8-11 2007 - JavaOne, San Francisco

+ +

A BOF on SCA will be presented entitled "Building Composite Services Applications". Many of Tuscany community members will also be attending JavaOne.

+ +

May 16-18, 2007 - PHP Tek, Chicago, Ill.
+Caroline Maynard, Tuscany user through PHP project will present 'Services Made Simple with PHP' on May 16th, tack 2.

+ +

March 21-23 2007 - Serverside Symposium, Las Vegas
+Tuscany Committers Jeremy Boynes, Meeraj Kunnumpurath, and Jim Marino will be presenting at the Las Vegas Serverside Symposium on the Java SCA project. For information, see http://javasymposium.techtarget.com/lasvegas/index.html

+ +

December 11-15 2006 - JavaPolis 2006 - Belgium
+Tuscany Committer Andy Borley presented "Apache Tuscany - Not The Same Old Architecture". See the presentation here

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/php-sca.html b/site/trunk/site-publish/php-sca.html new file mode 100644 index 0000000000..2f27ae1786 --- /dev/null +++ b/site/trunk/site-publish/php-sca.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : PHP SCA + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > PHP SCA + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

A PHP implementation of SCA is available outside of Apache in PECL.php. This information is provided here as a reference for those interested in a PHP open source implementation of SCA.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/place-holder-for-the-old-user-guide-page.html b/site/trunk/site-publish/place-holder-for-the-old-user-guide-page.html new file mode 100644 index 0000000000..881223ab4e --- /dev/null +++ b/site/trunk/site-publish/place-holder-for-the-old-user-guide-page.html @@ -0,0 +1,604 @@ + + + + + + + + + + + + + + + Apache Tuscany : place holder for the old user guide page + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > place holder for the old user guide page + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

this is a copy of what used to have for user guide while we are trying to clean this up. Some of the changes are shoing here already.

+ + +
+ + + + + + + + + + + +
Resources
+
+ +


+ +
This page is undergoing complete re-write to be more like a user guide than it is today. You are welcome to help review and complete it.
+
+ +

About Tuscany User Guide
+

+

It is assumed that by now you have browsed through the introduction to SCA
+ section or are familiar with SCA. This user guide helps you learn more about SCA through Tuscany. It starts with building a simple application and progresses into more advanced features through references to samples that reside in Tuscany.

+ +

Before we start, let's emphasise that it is Tuscany's goal to provide an implementaiton that avoids imposing rules and requirements on how you write your applications. In fact the goal is to let you write application code without being concerned about the technology you choose or the environment in which it will be used. You focus on your business logic and Tuscany infrastructure will handle the rest.

+ +

Create Your First Application
+

+

This simple exercise provides you with a hands-on experience for creating an SCA calculator application. Although this is a simple application, it will cover the following items:

+
    +
  • Creating SCA POJO-based components
  • +
  • Composing an application
  • +
  • Deploying the application
  • +
  • Modifying the application to use a different binding
  • +
+ + +

Give create a calculator application a try.

+ +

Create a Store Application
+

+ +

Now that you have created a simple calculator application, let's move on to a more interesting application called store. This application is developed in Eclipse enviromment and uses more advanced features that are offered in Tuscany. You will notice that it is as simple to create this application as it was to create the calculator application.

+ +

Getting Started with Tuscany using a Tuscany Distribution In Eclipse
+This is a quick getting started guide that go trough the steps of building the store scenario using the Tuscany SCA distribution manually installed into Eclipse

+ +

Getting Started with Tuscany using the Tuscany Eclipse Plugin
+This is a quick getting started guide that go trough the steps of building the store scenario using the Tuscany Eclipse plugin.

+ +

First Steps - Building your first web services using Tuscany
+This is a quick guide that go through the steps of exposing your pojo component as web services.

+ +

Create a Distributed Application
+

+

A Tuscany application can be run in a single or multi-node environment. Here we introduce SCA node and walk you through an example that demonstrates how the calculator example can be distributed. This exercise will cover the following:

+
    +
  • What is a node?
  • +
  • How to create and configure a node?
    +Give distributed calculator a try.
    +note the following sections need to go into a tutorial for distributed sample
  • +
+ + +

Tuscany SCA Node

+

In order to run an SCA application Tuscany SCA Java provides a runtime that is wrapped up in a Node. The runtime itself is made up of many of the modules that are present in the modules directory of the Tuscany SCA Java distribution. As you might expect there are functions that read XML, create an in memory mode model of the SCA assembly, create the components and wire them together ready to process incoming messages. All of these functions are wrapped up in a Node. A node is configured using SCA contributions and will run a single composite. When running standalone the node also defines the scope of component services that references can target by name. SCA defines the term Domain to describe this scope. Unable to render embedded object: File (calculator2.png) not found.
+A node runs within a single JVM. A JVM can run many Nodes.

+ +

host embedded

+

For a long time in Tuscany we have had a modules called host.embedded that contains the code required to get the runtime up and running in standalone configuration. This was developed before the distributed domain support was added but the main interface here is called an SCADomain. It's just a very small domain with only one node inside it. You can't see the node and you configure and access it via the SCADomain interface. The majority of samples and tests use this today. However the new SCA Node implementation can work in both standalone and distributed configuration so may be more appropriate in situations other than the simple Tuscany samples and tests. We will convert more samples ant tests to this approach over time to show the benefit of using the node implementation.

+ +

Tuscany SCA Node Implementation

+

Available from release 1.2 there is a new domain/node implementation. The node part of this can be run either stand alone or as part of a distributed domain. Most of the sample and test code has not started using this implementation yet and there may be more changes to the API.

+ +

Creating and Configuring Node

+ +

Creating a node in code is straightforward. For example,

+ +
+
+SCANode2 node = SCANode2Factory.newInstance().createSCANodeFromClassLoader("calculator.composite", null);
+
+
+

The node uses current classes classloader to located the named composite file. The location of the composite file is assumed to be the location if the SCA contribution. The assumption here is that only one contribution is required.

+ +

If more contributions must be loaded by the node the following interface can be used.

+
+
+SCANode2  node = SCANode2Factory.newInstance().createSCANode("file:/C:/CalculatorContribution1/Calculator.composite",
+        		                               new SCAContribution("CalculatorContribution1",
+        		                                                               "file:/C:/CalculatorContribution1"),
+                                                       new SCAContribution("CalculatorContribution2",
+        		                                                               "file:/C:/CalculatorContribution2"));
+
+
+

Where

+
+
+"file:/C:/CalculatorContribution1/Calculator.composite"
+
+
+

Is the explicit location of the composite file to be run and

+
+
+new SCAContribution("CalculatorContribution1",
+        		        "file:/C:/CalculatorContribution1")
+
+
+

Shows how to provide contribution details. Multiple contributions can be specified. You might have multiple contributions if, for example, you have chosen to separate common artifacts from those specific to this composite. The contribution containing common artifacts can then be used in other SCA applications without change.

+ +

Starting a Node

+ +

Once the node is created it is configured and ready for use. It can be started as follows.

+
+
+node.start();
+
+
+ +

Locating Services

+ +

A local service reference can be retrieved in the following way.

+
+
+calculatorService = ((SCAClient)node).getService(CalculatorService.class, "CalculatorServiceComponent");
+
+
+ +

Stopping a Node

+ +

If you are done with the node or need to stop is processing messages use the following.

+
+
+node.stop();
+
+
+ +

+ +
Hosting Tuscany SCA Nodes
+ +

You can run SCA applications in many different ways but the same underlying runtime is used but packaged in slightly different ways as follows

+ +

Command Line

+ +

Most of the samples that are shipped with the Tuscany SCA Java distribution run from the command line by driving the Node API or old SCADomain API programmatically.

+ +

There is a pre-packaed launcher that has a mainline for starting nodes. When run from the command line it expects to be running in the context of the binary distribution where "modules" and "lib" directories are present.

+ +

It loads all of the jars from

+ +

1) the directory where the launcher class is found.
+2) the ../modules directory
+3) the ../libs directory

+ +

It then repeats the process looking for ../modules and ../lib dirs based on the contents of a TUSCANY_HOME environment variable

+ +

With the final list it creates a URLClassLoader with the current classloader as the parent and enforces a parent first classloading strategy.

+ +

TODO - how does it find the composite file to run?

+ +

WebApp

+ +

Some of the samples that are shipped with the Tuscany SCA Java distribution run as web apps
+ TODO

+ +

Tomcat

+ +

Running a Tuscany SCA Java enabled webapp in Tomcat is as simple as copying the webapp to the Tomcat webapps directory.

+ +

Geronimo

+ +

TODO

+ +

WebSphere

+ +

Please see this blog entry to learn how to do this: http://jsdelfino.blogspot.com/2007/10/how-to-use-apache-tuscany-with.html

+ +

WebLogic

+ +

Please see this user's blog to learn how to do this: http://davesowerby.blogspot.com/2008/02/using-tuscany-with-weblogic.html

+ +

Eclipse

+ +

There are two Getting Started documents that discuss this.

+ +

Getting Started with Tuscany using a Tuscany Distribution In Eclipse
+Getting Started with Tuscany using the Tuscany Eclipse Plugin

+ +

+ +
Tuscany SCA Domain
+ +

SCA has the concept of a domain. Section 10 of the SCA Assembly specification describes an SCA Domain as defining "the boundary of visibility for all SCA mechanisms". SCA wires can be used to connect components within a single SCA Domain.

+ +

From the calculator sample you can see that the wires between the component references and services, formed by adding a target component name to a reference, are resolved inside an SCA domain. For example, this section of the calculator composite file shows how the CalcuatorServiceComponent targets the AddServiceComponent.

+
+
+<component name="CalculatorServiceComponent">
+        <implementation.java class="calculator.CalculatorServiceImpl"/>
+        <reference name="addService" target="AddServiceComponent" />
+        <reference name="subtractService" target="SubtractServiceComponent" />
+        <reference name="multiplyService" target="MultiplyServiceComponent" />
+        <reference name="divideService" target="DivideServiceComponent" />
+    </component>
+
+    <component name="AddServiceComponent">
+        <implementation.java class="calculator.AddServiceImpl"/>
+    </component>
+
+
+

The target="AddServiceComponent" of the CalculatorServiceComponent's addService reference refers to the AddServiceComponent defined later on in this composite. A domain can consist of more than one composite and wires can run between components defined in the composites. The SCA Domain describes the boundary within which target component services can be located.

+ +

To connect to services outside of the SCA Domain (whether they be services provided by SCA or by other means) you configure an explicit binding, for example, lets assume that the AddServiceComponent is a non-sca web service out there on the network somewhere. As this is outside the SCA domain we can use an explicit remote binding to talk to it.

+
+
+<component name="CalculatorServiceComponent">
+		<implementation.java class="calculator.CalculatorServiceImpl"/>
+        <reference name="addService" >
+           <interface.java interface="calculator.AddService" />
+            <binding.ws uri="http://localhost:8080/sample-calculator-ws-webapp/AddServiceComponent"/>
+        </reference>
+        <reference name="subtractService" target="SubtractServiceComponent"></reference>
+        <reference name="multiplyService" target="MultiplyServiceComponent"></reference>
+        <reference name="divideService" target="DivideServiceComponent"></reference>
+    </component>
+
+
+

Tuscany SCA supports running an SCA Domain in a single Node or spread across multiple Nodes potentially on different machines. We have seen a domain with a single node before.
+Unable to render embedded object: File (calculator2.png) not found.
+A domain with multiple nodes allows wires to run between components running in the separate nodes which may be running on different JVMs on different machines.
+Unable to render embedded object: File (calculator3.png) not found.
+When reference and service are in different composites the domain manager is used to pre-process each composited prior to the composites being deployed to nodes for running. Contributions (containing the composites) are added to the domain manager. Configuration must be provided which tells the workspace where the nodes are that are going to run the composites and which composites they will run. Based on this information the domain manager makes an atom feed available for each composite that is deployed to a node. The node to which the composite is assigned must read the correct atom feed in order to configure itself by downloading the composite to run and the contributions required provide the artifacts required by the composite. There is a Node API that takes as input the URL of an atom feed exposed by the domain manager as follows.

+ +
+
+SCANode2 node = SCANode2Factory.newInstance().createSCANodeFromURL("http://localhost:9990/node-config/NodeA");
+
+
+ +

The URL http://localhost:9990/node-config/NodeA is the URL of the atom feed that the domain manager provides.

+ +

The domain manager processes all the relationships between all composite components and provides a fully configured composite to each node, i.e. all of the binding URIs are filled out correctly so it's basically a pre-processing step. You can simulate the effect by manually adding the full uri to the reference binding.ws if you don't want to run with the domain manager

+ +

The calculator-distributed sample is a simple example of the use of the workspace. You can fire up the workspace and play with the gui or look at the 3 xml files in the top directory of that sample which the workspace relies on for configuration.

+ +

Starting A Domain

+ +

There is a launcher that has a mainline for starting the domain. For example,

+ +
+
+    public static void main(String[] args) throws Exception {
+        DomainManagerLauncher.main(args);
+    }
+
+
+

TODO - how is this run without having to create your own mainline.

+ +

Configuring A Domain Through The Web Interface

+ +

One the domain manager is running you can get to the web interface of the default domain point you browser at http://localhost:9990/ui. This provides a number of different pages allowing you to

+ +
    +
  • Add contributions to the domain
  • +
  • Add node configurations to the domain
  • +
  • Configure composites to run on specific nodes
  • +
  • Start local node instances to test the configuration
  • +
+ + + +

Configuring a Domain Through The File System

+ +

Behind the domain manager web application there are three files where the configuration information is stored.

+ +

workspace.xml - stores the ID and location of each contribution that has been added to the domain.

+ +

domain.composite - the virtual domain composite. This is an SCA composite that represents the virtual domain which includes all of the composites that will run in the domain. A URI is provided which indicates which contribution each composite comes from. Ultimately an SCANode2 instance will be started for each composite included in the virtual domain. Each SCANode2 instance can be running on separate/distributed processors. So the virtual domain is a consolidated description of you distributed SCA application

+ +

cloud.composite - describes the compute cloud (the set of distributed SCANode2 instances) being used to run the SCA application. Each node is assigned a composite and also has details of the configuration of bindings when they run on that node, for example, the root URI is set. It's possibly slightly confusing that this file is in SCA composite format also but this is a convenience because firstly we didn't have to create a new file format and secondly there may be some benefit in the future of representing this network of nodes as a network of SCA services for management purposes although we don't do that yet.

+ +

These files are updated when you make changes to the domain through the domain manager interface but they have a fairly simple XML format and can be edited manually or new utilities could be constructed to edit them automatically.

+ +

+

Tuscany Web-based Domain Manager Tool

+ +

This article that is hosted outside of Tuscany provides a step by step instruction for how to use the Tuscany web-based domain manager UI to administer an SCA domain and how to use the domain administrative UI to deploy an SOA solution comprised of SCA components.

+ + +

+ +
Tuscany SCA Core Features
+ + +

+ +
Policy
+ + +

TODO

+ +

+ +
Tuscany SCA Extensions
+ + +

+ +
The Extensible Runtime
+ +

The Tuscany SCA runtime comprises a small set of core software which deals with:

+
    +
  • Managing extesions to the Tuscany SCA Runtime(core)
  • +
  • Building and in memory assembly model of SCA applications (assembly)
  • +
  • Processing SCA applcations that are contributed (contribution)
  • +
  • Supporting databindings (databinding)
  • +
  • Supporting Tuscany SCA when its embedded in other environments (embedded)
  • +
  • Supporting Tuscany SCA when its running in a servlet container (http)
  • +
+ + +

The collections of interfaces that describe these features are referred to as the System Programming Interface (SPI). The developer guide discusses them in more detail but from a user perspective the important thing to realize is that the majority of interesting functionality in Tuscany SCA is provided by extensions which build upon this core SPI. These extensions provide Tuscany SCA with its ability to support a wide variety features.

+
    +
  • Implementation types
  • +
  • Binding types
  • +
  • Databinding types
  • +
  • Interface description styles
  • +
  • Hosting environments
  • +
+ + +

So to understand how to use the Tuscany SCA runtime is to understand how to use its extensions. The available extensions are described in the User Reference

+ +

+ +
Using Extensions
+ +

Extensions are loaded into the Tuscany SCA runtime using the Java service loading mechanism. Each extension is packaged as a jar and provides a file;

+
+
+META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
+
+
+

Using this information the Tuscany SCA runtime will load each extensions present on the the Java CLASSPATH. So if you want to use a particular feature make sure that it's available on your classpath. Conversely if you don't want a particular feature to be active remove it from the classpath.

+ +

Writing a new extension is a subject in its own right and is described in the extension guide

+ +

+ +
Tuscany SCA And IDEs
+ + +

+ +
Using The Samples In An IDE Without Maven
+ +

We don't provide any IDE project files with our disitributions so you will have to import the sample files into your IDE manually. Here's an example of how it can be done using Eclipse. Here the directory tuscany_sca_install_dir is the directory whch holds the Tuscany SCA Java binary installation after it's been extracted from its archive file, for example, for the 0.90 release this will be tuscany-sca-0.90-incubating.

+ +

In a new or existing workspace

+
    +
  • Create a new java project to represent the sample you want to work on, e.g. +
    +
    my working dir/calculator
    +
    +
  • +
  • Import all of the sample code and resources into this project, e.g. +
    +
    Use the File,Import menu and then select  tuscany_sca_install_dir/samples/calculator from the filesystem
    +
    +
  • +
  • Configure the source path to include +
    +
    tuscany_sca_install_dir/samples/calculator/src/main/java
    +tuscany_sca_install_dir/samples/calculator/src/main/resources
    +
    +
  • +
  • Configure the output folder to be +
    +
    tuscany_sca_install_dir/samples/calculator/target
    +
    +
  • +
  • Configure the build path to include all of the jars provided in +
    +
    tuscany_sca_install_dir/lib
    +
    +
  • +
  • If you select calculator.CalculatorClient.java and run as "Java Application" you should see +
    +
    3 + 2=5.0
    +3 - 2=1.0
    +3 * 2=6.0
    +3 / 2=1.5
    +
    +
  • +
+ + +

The details of how to do this for other development environments will vary but the process will be similar.

+ +

+ +
Using The Samples In An IDE If You Have Maven
+ +

If you are a Maven user you can use it to generate all of the IDE project files for you automatically. This works best if you generate IDE projects for all of the Apache Tuscany modules. You can then include the ones you are interested in working with in you IDE.

+ +

To build IDE project files for all of the modules in Apache Tuscany SCA;

+
+
cd sca
+
+
+

If you are an Eclipse user do the following

+
+
mvn -Peclipse eclipse:eclipse
+
+
+

If you are an IDEA user do the following

+
+
mvn idea:idea
+
+
+

These commands generate project files for each module in Apache Tuscany SCA. The modules you are interested in can now be included in your IDE, for example, in Eclipse, if you create a new Java project and use the option to "create a new project from existing source" you can specify an SCA module directory, which includes the generated project files, and Eclipse will treat it like any other Java project.

+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/composite-mojo.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/composite-mojo.html new file mode 100644 index 0000000000..89102f282a --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/composite-mojo.html @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - + tuscany-composite-plugin - tuscany-composite:composite + + + + + + + +
+ +
+
+
+ + + +

tuscany-composite:composite

+

Packages an SCA Composite archive.

+

Mojo Attributes:

    +
  • Requires a Maven 2.0 project to execute.
  • +
  • Automatically executes within the lifecycle phase: package
  • +
+ +

Required Parameters

+ + + + + + + + + + + + + + + + +
NameTypeDescription
classesDirectoryFileDirectory containing the classes to include in the archive.
outputDirectoryFileBuild output directory.
+
+

Optional Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
archiveMavenArchiveConfigurationStandard Maven archive configuration.
classifierStringClassifier to add to the generated artifact.
compositeNameStringName of the generated composite archive.
projectHelperMavenProjectHelperNo description.
+
+

Parameter Details

+ archive +

Standard Maven archive configuration.

+
    +
  • Type: org.apache.maven.archiver.MavenArchiveConfiguration
  • +
  • Required: No
  • +

classesDirectory + Directory containing the classes to include in the archive. +
    +
  • Type: java.io.File
  • +
  • Required: Yes
  • +
  • Expression: ${project.build.outputDirectory}
  • +

classifier + Classifier to add to the generated artifact. +
    +
  • Type: java.lang.String
  • +
  • Required: No
  • +

compositeName + Name of the generated composite archive. +
    +
  • Type: java.lang.String
  • +
  • Required: No
  • +
  • Expression: ${project.build.finalName}
  • +

outputDirectory + Build output directory. +
    +
  • Type: java.io.File
  • +
  • Required: Yes
  • +
  • Expression: ${project.build.directory}
  • +

projectHelper + No Description. +
    +
  • Type: org.apache.maven.project.MavenProjectHelper
  • +
  • Required: No
  • +
+
+
+ + +
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/css/maven-base.css b/site/trunk/site-publish/plugins/tuscany-composite-plugin/css/maven-base.css new file mode 100644 index 0000000000..5fe1845a4d --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/css/maven-base.css @@ -0,0 +1,148 @@ +body { + margin: 0px; + padding: 0px; +} +img { + border:none; +} +table { + padding:0px; + width: 100%; + margin-left: -2px; + margin-right: -2px; +} +acronym { + cursor: help; + border-bottom: 1px dotted #feb; +} +table.bodyTable th, table.bodyTable td { + padding: 2px 4px 2px 4px; + vertical-align: top; +} +div.clear{ + clear:both; + visibility: hidden; +} +div.clear hr{ + display: none; +} +#bannerLeft, #bannerRight { + font-size: xx-large; + font-weight: bold; +} +#bannerLeft img, #bannerRight img { + margin: 0px; +} +.xleft, #bannerLeft img { + float:left; + text-shadow: #7CFC00; +} +.xright, #bannerRight img { + float:right; + text-shadow: #7CFC00; +} +#banner { + padding: 0px; +} +#banner img { + border: none; +} +#breadcrumbs { + padding: 3px 10px 3px 10px; +} +#leftColumn { + width: 170px; + float:left; + overflow: auto; +} +#bodyColumn { + margin-right: 1.5em; + margin-left: 197px; +} +#legend { + padding: 8px 0 8px 0; +} +#navcolumn { + padding: 8px 4px 0 8px; +} +#navcolumn h5 { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn ul { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn li { + list-style-type: none; + background-image: none; + background-repeat: no-repeat; + background-position: 0 0.4em; + padding-left: 16px; + list-style-position: outside; + line-height: 1.2em; + font-size: smaller; +} +#navcolumn li.expanded { + background-image: url(../images/expanded.gif); +} +#navcolumn li.collapsed { + background-image: url(../images/collapsed.gif); +} +#poweredBy { + text-align: center; +} +#navcolumn img { + margin-top: 10px; + margin-bottom: 3px; +} +#poweredBy img { + display:block; + margin: 20px 0 20px 17px; + border: 1px solid black; + width: 90px; + height: 30px; +} +#search img { + margin: 0px; + display: block; +} +#search #q, #search #btnG { + border: 1px solid #999; + margin-bottom:10px; +} +#search form { + margin: 0px; +} +#lastPublished { + font-size: x-small; +} +.navSection { + margin-bottom: 2px; + padding: 8px; +} +.navSectionHead { + font-weight: bold; + font-size: x-small; +} +.section { + padding: 4px; +} +#footer { + padding: 3px 10px 3px 10px; + font-size: x-small; +} +#breadcrumbs { + font-size: x-small; + margin: 0pt; +} +.source { + padding: 12px; + margin: 1em 7px 1em 7px; +} +.source pre { + margin: 0px; + padding: 0px; +} diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/css/maven-theme.css b/site/trunk/site-publish/plugins/tuscany-composite-plugin/css/maven-theme.css new file mode 100644 index 0000000000..c982168bf2 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/css/maven-theme.css @@ -0,0 +1,141 @@ +body { + padding: 0px 0px 10px 0px; +} +body, td, select, input, li{ + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 13px; +} +code{ + font-family: Courier, monospace; + font-size: 13px; +} +a { + text-decoration: none; +} +a:link { + color:#36a; +} +a:visited { + color:#47a; +} +a:active, a:hover { + color:#69c; +} +#legend li.externalLink { + background: url(../images/external.png) left top no-repeat; + padding-left: 18px; +} +a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover { + background: url(../images/external.png) right center no-repeat; + padding-right: 18px; +} +#legend li.newWindow { + background: url(../images/newwindow.png) left top no-repeat; + padding-left: 18px; +} +a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover { + background: url(../images/newwindow.png) right center no-repeat; + padding-right: 18px; +} +h2 { + padding: 4px 4px 4px 6px; + border: 1px solid #999; + color: #900; + background-color: #ddd; + font-weight:900; + font-size: x-large; +} +h3 { + padding: 4px 4px 4px 6px; + border: 1px solid #aaa; + color: #900; + background-color: #eee; + font-weight: normal; + font-size: large; +} +h4 { + padding: 4px 4px 4px 6px; + border: 1px solid #bbb; + color: #900; + background-color: #fff; + font-weight: normal; + font-size: large; +} +h5 { + padding: 4px 4px 4px 6px; + color: #900; + font-size: normal; +} +p { + line-height: 1.3em; + font-size: small; +} +#breadcrumbs { + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + background-color: #ccc; +} +#leftColumn { + margin: 10px 0 0 5px; + border: 1px solid #999; + background-color: #eee; +} +#navcolumn h5 { + font-size: smaller; + border-bottom: 1px solid #aaaaaa; + padding-top: 2px; + color: #000; +} + +table.bodyTable th { + color: white; + background-color: #bbb; + text-align: left; + font-weight: bold; +} + +table.bodyTable th, table.bodyTable td { + font-size: 1em; +} + +table.bodyTable tr.a { + background-color: #ddd; +} + +table.bodyTable tr.b { + background-color: #eee; +} + +.source { + border: 1px solid #999; +} +dl { + padding: 4px 4px 4px 6px; + border: 1px solid #aaa; + background-color: #ffc; +} +dt { + color: #900; +} +#organizationLogo img, #projectLogo img, #projectLogo span{ + margin: 8px; +} +#banner { + border-bottom: 1px solid #fff; +} +.errormark, .warningmark, .donemark, .infomark { + background: url(../images/icon_error_sml.gif) no-repeat; +} + +.warningmark { + background-image: url(../images/icon_warning_sml.gif); +} + +.donemark { + background-image: url(../images/icon_success_sml.gif); +} + +.infomark { + background-image: url(../images/icon_info_sml.gif); +} + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/css/print.css b/site/trunk/site-publish/plugins/tuscany-composite-plugin/css/print.css new file mode 100644 index 0000000000..26ad7f0b59 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/css/print.css @@ -0,0 +1,7 @@ +#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { + display: none !important; +} +#bodyColumn, body.docs div.docs { + margin: 0 !important; + border: none !important +} diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/dependencies.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/dependencies.html new file mode 100644 index 0000000000..a8f5a5cf3b --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/dependencies.html @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Project Dependencies + + + + + + + +
+ +
+
+
+

Project Dependencies

compile

The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

GroupIdArtifactIdVersionClassifierTypeOptional
org.apache.mavenmaven-archiver2.2-jar
org.apache.mavenmaven-plugin-api2.0.4-jar

Project Transitive Dependencies

The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.

compile

The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

GroupIdArtifactIdVersionClassifierTypeOptional
classworldsclassworlds1.1-alpha-2-jar
junitjunit3.8.1-jar
org.apache.mavenmaven-artifact2.0.4-jar
org.apache.mavenmaven-artifact-manager2.0.4-jar
org.apache.mavenmaven-model2.0.4-jar
org.apache.mavenmaven-profile2.0.4-jar
org.apache.mavenmaven-project2.0.4-jar
org.apache.mavenmaven-repository-metadata2.0.4-jar
org.apache.mavenmaven-settings2.0.4-jar
org.apache.maven.wagonwagon-provider-api1.0-alpha-6-jar
org.codehaus.plexusplexus-archiver1.0-alpha-7-jar
org.codehaus.plexusplexus-container-default1.0-alpha-9-jar
org.codehaus.plexusplexus-utils1.1-jar

Project Dependency Graph

Dependency Listings

Apache Tuscany Composite Plugin

An Apache Maven plugin for packaging SCA composite archives.

http://www.apache.org/parent/sca/tuscany-composite-plugin

Maven Archiver

Maven shared components

http://maven.apache.org/shared/maven-archiver

Maven Project Builder

This library is used to not only read Maven project object model files, but to assemble inheritence + and to retrieve remote models as required.

http://maven.apache.org/maven-project

Plexus Archiver Component

Default Plexus Container

Plexus Common Utilities

Maven Artifact

Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.

http://maven.apache.org/maven-artifact

Maven Plugin API

Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.

http://maven.apache.org/maven-plugin-api

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/collapsed.gif b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/collapsed.gif new file mode 100644 index 0000000000..6e71084064 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/collapsed.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/expanded.gif b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/expanded.gif new file mode 100644 index 0000000000..0fef3d89e0 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/expanded.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/external.png b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/external.png new file mode 100644 index 0000000000..3f999fc88b Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/external.png differ diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_error_sml.gif b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_error_sml.gif new file mode 100644 index 0000000000..61132ef2b0 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_error_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_info_sml.gif b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_info_sml.gif new file mode 100644 index 0000000000..c6cb9ad7ce Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_info_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_success_sml.gif b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_success_sml.gif new file mode 100644 index 0000000000..52e85a430a Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_success_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_warning_sml.gif b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_warning_sml.gif new file mode 100644 index 0000000000..873bbb52cb Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/icon_warning_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/logos/maven-feather.png b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/logos/maven-feather.png new file mode 100644 index 0000000000..5beac166dd Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/logos/maven-feather.png differ diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/newwindow.png b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/newwindow.png new file mode 100644 index 0000000000..6287f72bd0 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-composite-plugin/images/newwindow.png differ diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/index.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/index.html new file mode 100644 index 0000000000..24241da4da --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/index.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - About + + + + + + + +
+ +
+
+
+

About Apache Tuscany Composite Plugin

An Apache Maven plugin for packaging SCA composite archives.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/integration.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/integration.html new file mode 100644 index 0000000000..3acd4c84db --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/integration.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Continuous Integration + + + + + + + +
+ +
+
+
+

Continuous Integration

No continuous integration management system is defined. Please check back at a later date.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/issue-tracking.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/issue-tracking.html new file mode 100644 index 0000000000..a2009441c6 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/issue-tracking.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Issue Tracking + + + + + + + +
+ +
+
+
+

Overview

This project uses Jira a J2EE-based, issue tracking and project management application.

Issue Tracking

Issues, bugs, and feature requests should be submitted to the following issue tracking system for this project.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/license.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/license.html new file mode 100644 index 0000000000..46c6aaed5c --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/license.html @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Project License + + + + + + + +
+ +
+
+
+

Overview

Typically the licenses listed for the project are that of the project itself, and not of dependencies.

Project License

The Apache Software License, Version 2.0

+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/mail-lists.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/mail-lists.html new file mode 100644 index 0000000000..9bbac71d9b --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/mail-lists.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Project Mailing Lists + + + + + + + +
+ +
+
+
+

Project Mailing Lists

These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.

NameSubscribeUnsubscribePostArchive
Apache Announce ListSubscribeUnsubscribePostmail-archives.apache.org
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/plugin-info.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/plugin-info.html new file mode 100644 index 0000000000..c70699d237 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/plugin-info.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Plugin documentation + + + + + + + +
+ +
+
+
+

Plugin documentation

Goals available:

GoalDescription
tuscany-composite:compositePackages an SCA Composite archive.
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/project-info.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/project-info.html new file mode 100644 index 0000000000..4899e64438 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/project-info.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Project Information + + + + + + + +
+ +
+
+
+

Project Information

This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by Maven on behalf of the project.

Overview

DocumentDescription
AboutAn Apache Maven plugin for packaging SCA composite archives.
Project LicenseThis is a link to the definitions of project licenses.
DependenciesThis document lists the projects dependencies and provides information on each dependency.
Project TeamThis document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.
Mailing ListsThis document provides subscription and archive information for this project's mailing lists.
Continuous IntegrationThis is a link to the definitions of all continuous integration processes that builds and tests code on a frequent, regular basis.
Source RepositoryThis is a link to the online source repository that can be viewed via a web browser.
Project SummaryThis document lists other related information of this project
Issue TrackingThis is a link to the issue management system for this project. Issues (bugs, features, change requests) can be created and queried using this link.
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/project-reports.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/project-reports.html new file mode 100644 index 0000000000..56617844d5 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/project-reports.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Generated Reports + + + + + + + +
+ +
+
+
+

Generated Reports

This document provides an overview of the various reports that are automatically generated by Maven Each report is briefly described below.

Overview

DocumentDescription
Plugin documentationThis report provides goals and parameters documentation of a plugin
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/project-summary.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/project-summary.html new file mode 100644 index 0000000000..99c0ccde27 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/project-summary.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Project Summary + + + + + + + +
+ +
+
+
+

Project Summary

Project Information

FieldValue
NameApache Tuscany Composite Plugin
DescriptionAn Apache Maven plugin for packaging SCA composite archives.
Homepagehttp://www.apache.org/parent/sca/tuscany-composite-plugin

Project Organization

FieldValue
NameApache Software Foundation
URLhttp://www.apache.org/

Build Information

FieldValue
GroupIdorg.apache.tuscany
ArtifactIdtuscany-composite-plugin
Version1.0-alpha-incubating-SNAPSHOT
Typemaven-plugin
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/source-repository.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/source-repository.html new file mode 100644 index 0000000000..0971045c33 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/source-repository.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Source Repository + + + + + + + +
+ +
+
+
+

Source Repository

No source configuration management system is defined. Please check back at a later date.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/team-list.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/team-list.html new file mode 100644 index 0000000000..369ada5002 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/team-list.html @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - Team list + + + + + + + +
+ +
+
+
+

The Team

A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.

The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.

Members

There are no developers working on this project.

Contributors

There are no contributors listed for this project. Please check back again later.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-composite-plugin/usage.html b/site/trunk/site-publish/plugins/tuscany-composite-plugin/usage.html new file mode 100644 index 0000000000..fc411e0a6b --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-composite-plugin/usage.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + Apache Tuscany Composite Plugin - + + + + + + + +
+ +
+
+
+

Usage

The tuscany-composite-plugin can be used to package and integration-test an SCA composite. It is associated with artifacts with a type of composite and is activated by including it in the build section of your pom:

    <packaging>composite</packaging>
+    ...
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.tuscany</groupId>
+                <artifactId>tuscany-composite-plugin</artifactId>
+                <extensions>true</extensions>
+            </plugin>
+        </plugins>
+    </build>

The build lifecycle for the project is the same as for normal Java jar artifacts with default support for compiling Java code, processing resources, building and running unit tests. The plugin also associates the tuscany-itest-plugin with the integration-test phase of the build for testing the composite itself.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/css/maven-base.css b/site/trunk/site-publish/plugins/tuscany-itest-plugin/css/maven-base.css new file mode 100644 index 0000000000..044d12d206 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/css/maven-base.css @@ -0,0 +1,145 @@ +body { + margin: 0px; + padding: 0px; +} +img { + border:none; +} +table { + padding:0px; + width: 100%; + margin-left: -2px; + margin-right: -2px; +} +acronym { + cursor: help; + border-bottom: 1px dotted #feb; +} +table.bodyTable th, table.bodyTable td { + padding: 2px 4px 2px 4px; + vertical-align: top; +} +div.clear{ + clear:both; + visibility: hidden; +} +div.clear hr{ + display: none; +} +#bannerLeft, #bannerRight { + font-size: xx-large; + font-weight: bold; +} +#bannerLeft img, #bannerRight img { + margin: 0px; +} +.xleft, #bannerLeft img { + float:left; + text-shadow: #7CFC00; +} +.xright, #bannerRight img { + float:right; + text-shadow: #7CFC00; +} +#banner { + padding: 0px; +} +#banner img { + border: none; +} +#breadcrumbs { + padding: 3px 10px 3px 10px; +} +#leftColumn { + width: 170px; + float:left; + overflow: auto; +} +#bodyColumn { + margin-right: 1.5em; + margin-left: 197px; +} +#legend { + padding: 8px 0 8px 0; +} +#navcolumn { + padding: 8px 4px 0 8px; +} +#navcolumn h5 { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn ul { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn li { + list-style-type: none; + background-image: none; + background-repeat: no-repeat; + background-position: 0 0.4em; + padding-left: 16px; + list-style-position: outside; + line-height: 1.2em; + font-size: smaller; +} +#navcolumn li.expanded { + background-image: url(../images/expanded.gif); +} +#navcolumn li.collapsed { + background-image: url(../images/collapsed.gif); +} +#poweredBy { + text-align: center; +} +#navcolumn img { + margin-top: 10px; + margin-bottom: 3px; +} +#poweredBy img { + display:block; + margin: 20px 0 20px 17px; +} +#search img { + margin: 0px; + display: block; +} +#search #q, #search #btnG { + border: 1px solid #999; + margin-bottom:10px; +} +#search form { + margin: 0px; +} +#lastPublished { + font-size: x-small; +} +.navSection { + margin-bottom: 2px; + padding: 8px; +} +.navSectionHead { + font-weight: bold; + font-size: x-small; +} +.section { + padding: 4px; +} +#footer { + padding: 3px 10px 3px 10px; + font-size: x-small; +} +#breadcrumbs { + font-size: x-small; + margin: 0pt; +} +.source { + padding: 12px; + margin: 1em 7px 1em 7px; +} +.source pre { + margin: 0px; + padding: 0px; +} diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/css/maven-theme.css b/site/trunk/site-publish/plugins/tuscany-itest-plugin/css/maven-theme.css new file mode 100644 index 0000000000..c982168bf2 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/css/maven-theme.css @@ -0,0 +1,141 @@ +body { + padding: 0px 0px 10px 0px; +} +body, td, select, input, li{ + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 13px; +} +code{ + font-family: Courier, monospace; + font-size: 13px; +} +a { + text-decoration: none; +} +a:link { + color:#36a; +} +a:visited { + color:#47a; +} +a:active, a:hover { + color:#69c; +} +#legend li.externalLink { + background: url(../images/external.png) left top no-repeat; + padding-left: 18px; +} +a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover { + background: url(../images/external.png) right center no-repeat; + padding-right: 18px; +} +#legend li.newWindow { + background: url(../images/newwindow.png) left top no-repeat; + padding-left: 18px; +} +a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover { + background: url(../images/newwindow.png) right center no-repeat; + padding-right: 18px; +} +h2 { + padding: 4px 4px 4px 6px; + border: 1px solid #999; + color: #900; + background-color: #ddd; + font-weight:900; + font-size: x-large; +} +h3 { + padding: 4px 4px 4px 6px; + border: 1px solid #aaa; + color: #900; + background-color: #eee; + font-weight: normal; + font-size: large; +} +h4 { + padding: 4px 4px 4px 6px; + border: 1px solid #bbb; + color: #900; + background-color: #fff; + font-weight: normal; + font-size: large; +} +h5 { + padding: 4px 4px 4px 6px; + color: #900; + font-size: normal; +} +p { + line-height: 1.3em; + font-size: small; +} +#breadcrumbs { + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + background-color: #ccc; +} +#leftColumn { + margin: 10px 0 0 5px; + border: 1px solid #999; + background-color: #eee; +} +#navcolumn h5 { + font-size: smaller; + border-bottom: 1px solid #aaaaaa; + padding-top: 2px; + color: #000; +} + +table.bodyTable th { + color: white; + background-color: #bbb; + text-align: left; + font-weight: bold; +} + +table.bodyTable th, table.bodyTable td { + font-size: 1em; +} + +table.bodyTable tr.a { + background-color: #ddd; +} + +table.bodyTable tr.b { + background-color: #eee; +} + +.source { + border: 1px solid #999; +} +dl { + padding: 4px 4px 4px 6px; + border: 1px solid #aaa; + background-color: #ffc; +} +dt { + color: #900; +} +#organizationLogo img, #projectLogo img, #projectLogo span{ + margin: 8px; +} +#banner { + border-bottom: 1px solid #fff; +} +.errormark, .warningmark, .donemark, .infomark { + background: url(../images/icon_error_sml.gif) no-repeat; +} + +.warningmark { + background-image: url(../images/icon_warning_sml.gif); +} + +.donemark { + background-image: url(../images/icon_success_sml.gif); +} + +.infomark { + background-image: url(../images/icon_info_sml.gif); +} + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/css/print.css b/site/trunk/site-publish/plugins/tuscany-itest-plugin/css/print.css new file mode 100644 index 0000000000..26ad7f0b59 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/css/print.css @@ -0,0 +1,7 @@ +#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { + display: none !important; +} +#bodyColumn, body.docs div.docs { + margin: 0 !important; + border: none !important +} diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/dependencies.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/dependencies.html new file mode 100644 index 0000000000..81878725ba --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/dependencies.html @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Project Dependencies + + + + + + + +
+ +
+
+
+

Project Dependencies

compile

The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

GroupIdArtifactIdVersionClassifierTypeOptional
commons-codeccommons-codec1.3-jar
commons-iocommons-io1.3-jar
junitjunit3.8.1-jar
org.apache.mavenmaven-artifact2.0.4-jar
org.apache.mavenmaven-plugin-api2.0.4-jar
org.apache.maven.surefiresurefire-api2.0-jar
org.apache.maven.surefiresurefire-junit2.0-jar
org.apache.tuscanycommonj-api_r1.11.0-incubator-M2-jar
org.apache.tuscany.sca.kernelcore1.0-incubator-SNAPSHOT-jar
org.apache.tuscany.sca.kerneltuscany-api1.0-incubator-SNAPSHOT-jar
org.apache.tuscany.sca.kerneltuscany-host-api1.0-incubator-SNAPSHOT-jar
org.apache.tuscany.sca.kerneltuscany-spi1.0-incubator-SNAPSHOT-jar
org.codehaus.plexusplexus-utils1.1-jar
org.osoasca-api-r1.01.0-incubator-SNAPSHOT-jar
staxstax-api1.0.1-jar

runtime

The following is a list of runtime dependencies for this project. These dependencies are required to run the application:

GroupIdArtifactIdVersionClassifierTypeOptional
javax.servletservlet-api2.4-jar
org.codehaus.woodstoxwstx-asl3.2.0-jar

Project Transitive Dependencies

The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.

compile

The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

GroupIdArtifactIdVersionClassifierTypeOptional
commons-codeccommons-codec1.3-jar
commons-iocommons-io1.3-jar
junitjunit3.8.1-jar
org.apache.mavenmaven-artifact2.0.4-jar
org.apache.mavenmaven-plugin-api2.0.4-jar
org.apache.maven.surefiresurefire-api2.0-jar
org.apache.maven.surefiresurefire-junit2.0-jar
org.apache.tuscanycommonj-api_r1.11.0-incubator-M2-jar
org.apache.tuscany.sca.kernelcore1.0-incubator-SNAPSHOT-jar
org.apache.tuscany.sca.kerneltuscany-api1.0-incubator-SNAPSHOT-jar
org.apache.tuscany.sca.kerneltuscany-host-api1.0-incubator-SNAPSHOT-jar
org.apache.tuscany.sca.kerneltuscany-spi1.0-incubator-SNAPSHOT-jar
org.codehaus.plexusplexus-utils1.1-jar
org.osoasca-api-r1.01.0-incubator-SNAPSHOT-jar
staxstax-api1.0.1-jar

runtime

The following is a list of runtime dependencies for this project. These dependencies are required to run the application:

GroupIdArtifactIdVersionClassifierTypeOptional
javax.servletservlet-api2.4-jar
org.codehaus.woodstoxwstx-asl3.2.0-jar

Project Dependency Graph

Dependency Listings

Apache Tuscany Integration Test Plugin

A plugin for Apache Maven that simplifies integration testing of SCA components.

http://www.apache.org/parent/parent/tuscany-itest-plugin

Project License: The Apache Software License, Version 2.0


SureFire JUnit Runner

Surefire is a test framework project.

http://maven.apache.org/surefire/surefire-providers/surefire-junit

Project License: The Apache Software License, Version 2.0


Unnamed - junit:junit:jar:3.8.1

Project License: No project license is defined for this project.


Maven Artifact

Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.

http://maven.apache.org/maven-artifact

Project License: The Apache Software License, Version 2.0


Plexus Common Utilities

Project License: No project license is defined for this project.


Maven Plugin API

Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.

http://maven.apache.org/maven-plugin-api

Project License: The Apache Software License, Version 2.0


Apache Tuscany SCA Core

Core Tuscany runtime.

http://www.apache.org/parent/parent/parent/core

Project License: The Apache Software License, Version 2.0


Codec

The codec package contains simple encoder and decoders for + various formats such as Base64 and Hexadecimal. In addition to these + widely used encoders and decoders, the codec package also maintains a + collection of phonetic encoding utilities.

http://jakarta.apache.org/commons/codec/

Project License: The Apache Software License, Version 2.0


IO

Commons-IO contains utility classes, stream implementations, file filters, and endian classes.

http://jakarta.apache.org/commons/io/

Project License: The Apache Software License, Version 2.0


Apache Tuscany SCA SPI

Tuscany Service Provider Interfaces.

http://www.apache.org/parent/parent/parent/tuscany-spi

Project License: The Apache Software License, Version 2.0


StAX API

StAX API is the standard java XML processing API defined by JSR-173

http://stax.codehaus.org/

Project License: The Apache Software License, Version 2.0


Woodstox

Woodstox is a high-performance XML processor that implements Stax (JSR-173) API

http://woodstox.codehaus.org

Project License: No project license is defined for this project.


Apache Tuscany Host API

Tuscany Host Programming Interfaces.

http://www.apache.org/parent/parent/parent/tuscany-host-api

Project License: The Apache Software License, Version 2.0


Apache Tuscany SCA API

Tuscany Application Programming Interfaces.

http://www.apache.org/parent/parent/parent/tuscany-api

Project License: The Apache Software License, Version 2.0


SCA API Version 1.0

API classes for the Service Component Architecture

http://www.apache.org/parent/sca-api-r1.0

Project License: The Apache Software License, Version 2.0


Commonj API for Timer and Work Manager

Commonj API for Timer and Work Manager

http://www.apache.org/parent/commonj-api_r1.1

Project License: The Apache Software License, Version 2.0


SureFire API

Surefire is a test framework project.

http://maven.apache.org/surefire/surefire-api

Project License: The Apache Software License, Version 2.0


Unnamed - javax.servlet:servlet-api:jar:2.4

Project License: No project license is defined for this project.


Licenses

Unknown: Plexus Common Utilities, Unnamed - javax.servlet:servlet-api:jar:2.4, Unnamed - junit:junit:jar:3.8.1, Woodstox

The Apache Software License, Version 2.0: Apache Tuscany Host API, Apache Tuscany Integration Test Plugin, Apache Tuscany SCA API, Apache Tuscany SCA Core, Apache Tuscany SCA SPI, Codec, Commonj API for Timer and Work Manager, IO, Maven Artifact, Maven Plugin API, SCA API Version 1.0, StAX API, SureFire API, SureFire JUnit Runner

Dependency File Details

FilenameSizeEntriesClassesPackagesJDK RevDebugSealed
commons-codec-1.3.jar46,725422551.2debug-
commons-io-1.3.jar83,619695841.1debug-
servlet-api-2.4.jar97,693674221.2debug-
junit-3.8.1.jar121,07011910061.1debug-
maven-artifact-2.0.4.jar80,26410275151.1debug-
maven-plugin-api-2.0.4.jar8,33121921.1debug-
surefire-api-2.0.jar48,567483161.3debug-
surefire-junit-2.0.jar12,00117511.3debug-
commonj-api_r1.1-1.0-incubator-M2.jar14,071261421.4debug-
tuscany-itest-plugin-1.0-incubator-SNAPSHOT.jar53,569------
core-1.0-incubator-SNAPSHOT.jar505,823403334411.5debug-
tuscany-api-1.0-incubator-SNAPSHOT.jar11,92320621.5debug-
tuscany-host-api-1.0-incubator-SNAPSHOT.jar17,707381971.5debug-
tuscany-spi-1.0-incubator-SNAPSHOT.jar221,625311267311.5debug-
plexus-utils-1.1.jar168,568917381.1debug-
wstx-asl-3.2.0.jar504,968257247191.2debug-
sca-api-r1.0-1.0-incubator-SNAPSHOT.jar30,574543321.5debug-
stax-api-1.0.1.jar26,514484051.2debug-
18 total dependencies2,053,6121,7331,3781581.5170
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/faq.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/faq.html new file mode 100644 index 0000000000..a877a3a469 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/faq.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Frequently Asked Questions + + + + + + + +
+ +
+
+
+
Does the plugin support JUnit 4.0?
+

+ Not at this time. +

+
[top]

How do I add extensions to the runtime?
+

+ The plugin uses the normal extension mechanisms provided by + the Apache Tuscany runtime. +

+

+ At the moment this requires supplying a custom system SCDL file that + includes the extension composites. In the future, we plan to load + extensions dynamically - please check back later. +

+
[top]

Can I use services provided by another systems?
+

+ You can define <reference> elements in your composite to access + services using a binding. Those can be standard web services, or any + other type of service that there is a binding for. +

+
[top]

Can I use services provided by another SCA domain?
+

+ As we add federation support, the local runtime will be able to + join any SCA domain (subject to authorization) and use its services. +

+
[top]
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/collapsed.gif b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/collapsed.gif new file mode 100644 index 0000000000..6e71084064 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/collapsed.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/expanded.gif b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/expanded.gif new file mode 100644 index 0000000000..0fef3d89e0 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/expanded.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/external.png b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/external.png new file mode 100644 index 0000000000..3f999fc88b Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/external.png differ diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_error_sml.gif b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_error_sml.gif new file mode 100644 index 0000000000..61132ef2b0 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_error_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_info_sml.gif b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_info_sml.gif new file mode 100644 index 0000000000..c6cb9ad7ce Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_info_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_success_sml.gif b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_success_sml.gif new file mode 100644 index 0000000000..52e85a430a Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_success_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_warning_sml.gif b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_warning_sml.gif new file mode 100644 index 0000000000..873bbb52cb Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/icon_warning_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/logos/maven-feather.png b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/logos/maven-feather.png new file mode 100644 index 0000000000..8dfb4ffce7 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/logos/maven-feather.png differ diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/newwindow.png b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/newwindow.png new file mode 100644 index 0000000000..6287f72bd0 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-itest-plugin/images/newwindow.png differ diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/index.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/index.html new file mode 100644 index 0000000000..a0914bdc1a --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/index.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - About + + + + + + + +
+ +
+
+
+

About Apache Tuscany Integration Test Plugin

A plugin for Apache Maven that simplifies integration testing of SCA components.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/integration.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/integration.html new file mode 100644 index 0000000000..a074d8f1da --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/integration.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Continuous Integration + + + + + + + +
+ +
+
+
+

Continuous Integration

No continuous integration management system is defined. Please check back at a later date.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/issue-tracking.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/issue-tracking.html new file mode 100644 index 0000000000..03d381e104 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/issue-tracking.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Issue Tracking + + + + + + + +
+ +
+
+
+

Overview

This project uses Jira a J2EE-based, issue tracking and project management application.

Issue Tracking

Issues, bugs, and feature requests should be submitted to the following issue tracking system for this project.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/license.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/license.html new file mode 100644 index 0000000000..ee86e71492 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/license.html @@ -0,0 +1,333 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Project License + + + + + + + +
+ +
+
+
+

Overview

Typically the licenses listed for the project are that of the project itself, and not of dependencies.

Project License

The Apache Software License, Version 2.0

+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/mail-lists.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/mail-lists.html new file mode 100644 index 0000000000..f581e0ca4c --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/mail-lists.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Project Mailing Lists + + + + + + + +
+ +
+
+
+

Project Mailing Lists

These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.

NameSubscribeUnsubscribePostArchive
Apache Announce ListSubscribeUnsubscribePostmail-archives.apache.org
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/plugin-info.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/plugin-info.html new file mode 100644 index 0000000000..5de400fbfe --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/plugin-info.html @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Plugin documentation + + + + + + + +
+ +
+
+
+

Plugin documentation

Goals available:

GoalDescription
tuscany-itest:testIntegration-tests an SCA composite by running it in local copy of Apache Tuscany +and calling JUnit-based test components to exercise it.
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/project-info.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/project-info.html new file mode 100644 index 0000000000..ac8b6327ca --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/project-info.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Project Information + + + + + + + +
+ +
+
+
+

Project Information

This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by Maven on behalf of the project.

Overview

DocumentDescription
Project LicenseThis is a link to the definitions of project licenses.
AboutA plugin for Apache Maven that simplifies integration testing of SCA components.
DependenciesThis document lists the projects dependencies and provides information on each dependency.
Project TeamThis document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.
Mailing ListsThis document provides subscription and archive information for this project's mailing lists.
Continuous IntegrationThis is a link to the definitions of all continuous integration processes that builds and tests code on a frequent, regular basis.
Source RepositoryThis is a link to the online source repository that can be viewed via a web browser.
Issue TrackingThis is a link to the issue management system for this project. Issues (bugs, features, change requests) can be created and queried using this link.
Project SummaryThis document lists other related information of this project
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/project-reports.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/project-reports.html new file mode 100644 index 0000000000..6f0d320b48 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/project-reports.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Generated Reports + + + + + + + +
+ +
+
+
+

Generated Reports

This document provides an overview of the various reports that are automatically generated by Maven Each report is briefly described below.

Overview

DocumentDescription
Plugin documentationThis report provides goals and parameters documentation of a plugin
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/project-summary.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/project-summary.html new file mode 100644 index 0000000000..0dcd07954b --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/project-summary.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Project Summary + + + + + + + +
+ +
+
+
+

Project Summary

Project Information

FieldValue
NameApache Tuscany Integration Test Plugin
DescriptionA plugin for Apache Maven that simplifies integration testing of SCA components.
Homepagehttp://www.apache.org/parent/parent/tuscany-itest-plugin

Project Organization

FieldValue
NameApache Software Foundation
URLhttp://www.apache.org/

Build Information

FieldValue
GroupIdorg.apache.tuscany.sca
ArtifactIdtuscany-itest-plugin
Version1.0-incubator-SNAPSHOT
Typemaven-plugin
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/source-repository.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/source-repository.html new file mode 100644 index 0000000000..1d9249a076 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/source-repository.html @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Source Repository + + + + + + + +
+ +
+
+
+

Overview

This project uses Subversion to manage its source code. Instructions on Subversion use can be found at http://svnbook.red-bean.com/.

Web Access

The following is a link to the online source repository.

Anonymous access

The source can be checked out anonymously from SVN with this command:

$ svn checkout http://svn.apache.org/repos/asf/incubator/tuscany/java/parent/tuscany-itest-plugin tuscany-itest-plugin

Developer access

Everyone can access the Subversion repository via HTTPS, but Committers must checkout the Subversion repository via HTTPS.

$ svn checkout https://svn.apache.org/repos/asf/incubator/tuscany/java/parent/tuscany-itest-plugin tuscany-itest-plugin

To commit changes to the repository, execute the following command to commit your changes (svn will prompt you for your password)

$ svn commit --username your-username -m "A message"

Access from behind a firewall

For those users who are stuck behind a corporate firewall which is blocking http access to the Subversion repository, you can try to access it via the developer connection:

$ svn checkout https://svn.apache.org/repos/asf/incubator/tuscany/java/parent/tuscany-itest-plugin tuscany-itest-plugin

Access through a proxy

The Subversion client can go through a proxy, if you configure it to do so. First, edit your "servers" configuration file to indicate which proxy to use. The files location depends on your operating system. On Linux or Unix it is located in the directory "~/.subversion". On Windows it is in "%APPDATA%\Subversion". (Try "echo %APPDATA%", note this is a hidden directory.)

There are comments in the file explaining what to do. If you don't have that file, get the latest Subversion client and run any command; this will cause the configuration directory and template files to be created.

Example : Edit the 'servers' file and add something like :

[global]
+http-proxy-host = your.proxy.name
+http-proxy-port = 3128
+
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/team-list.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/team-list.html new file mode 100644 index 0000000000..f71a9c4c5e --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/team-list.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - Team list + + + + + + + +
+ +
+
+
+

The Team

A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.

The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.

Members

There are no developers working on this project.

Contributors

There are no contributors listed for this project. Please check back again later.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/test-mojo.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/test-mojo.html new file mode 100644 index 0000000000..a6fd81c682 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/test-mojo.html @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - + tuscany-itest-plugin - tuscany-itest:test + + + + + + + +
+ +
+
+
+ + + +

tuscany-itest:test

+

Integration-tests an SCA composite by running it in local copy of Apache Tuscany +and calling JUnit-based test components to exercise it.

+

Mojo Attributes:

    +
  • Requires a Maven 2.0 project to execute.
  • +
  • Automatically executes within the lifecycle phase: integration-test
  • +
+

+

Required Parameters

+ + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
testClassesDirectoryFileThe directory containing generated test classes of the project being tested.
testComponentNameStringThe name of the component that will be implemented by the test harness composite.
testDomainStringThe SCA domain in which to deploy the test components.
+
+

Optional Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
reportsDirectoryFileThe directory where reports will be written.
systemScdlURLThe location of the SCDL that configures the Apache Tuscany runtime. +This allows the default runtime configuration supplied in this plugin +to be overridden.
testScdlFileThe location if the SCDL that defines the test harness composite. +The source for this would normally be placed in the test/resources +directory and be copied by the resource plugin; this allows property +substitution if required.
trimStackTracebooleanWhether to trim the stack trace in the reports to just the lines within +the test, or show the full trace. Default value is true.
+
+

Parameter Details

+

reportsDirectory

+

The directory where reports will be written.

+
    +
  • Type: java.io.File
  • +
  • Required: No
  • +
  • Expression: ${project.build.directory}/surefire-reports
  • +

systemScdl

+

The location of the SCDL that configures the Apache Tuscany runtime. +This allows the default runtime configuration supplied in this plugin +to be overridden.

+
    +
  • Type: java.net.URL
  • +
  • Required: No
  • +

testClassesDirectory

+

The directory containing generated test classes of the project being tested.

+
    +
  • Type: java.io.File
  • +
  • Required: Yes
  • +
  • Expression: ${project.build.testOutputDirectory}
  • +

testComponentName

+

The name of the component that will be implemented by the test harness composite.

+
    +
  • Type: java.lang.String
  • +
  • Required: Yes
  • +
  • Expression: testHarness
  • +

testDomain

+

The SCA domain in which to deploy the test components.

+
    +
  • Type: java.lang.String
  • +
  • Required: Yes
  • +
  • Expression: itest://localhost/testDomain/
  • +

testScdl

+

The location if the SCDL that defines the test harness composite. +The source for this would normally be placed in the test/resources +directory and be copied by the resource plugin; this allows property +substitution if required.

+
    +
  • Type: java.io.File
  • +
  • Required: No
  • +
  • Expression: ${project.build.testOutputDirectory}/itest.scdl
  • +

trimStackTrace

+

Whether to trim the stack trace in the reports to just the lines within +the test, or show the full trace.

+
    +
  • Type: boolean
  • +
  • Required: No
  • +
  • Expression: ${trimStackTrace}
  • +
  • Default: true
  • +
+
+
+ + +
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-itest-plugin/usage.html b/site/trunk/site-publish/plugins/tuscany-itest-plugin/usage.html new file mode 100644 index 0000000000..32f475446f --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-itest-plugin/usage.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + Apache Tuscany Integration Test Plugin - + + + + + + + +
+ +
+
+
+

Usage

The tuscany-itest-plugin is associated with the integration-test phase of the build lifecycle.

The plugin can be invoked directly from the command line:

mvn org.apache.tuscany.sca:tuscany-itest-plugin:test

or can be included in the build definition for your project:

    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.tuscany.sca</groupId>
+                <artifactId>tuscany-itest-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>

Writing Integration Tests

Integration tests are written as JUnit TestCases (currently only JUnit 3.8.1 is supported but other frameworks may be added later) that use SCA references to access services provided by the components under test. The references are injected into your testcase before its setUp method is called (using constructor, setter or field injection).

For example, to test a component that implemented the MyService interface you could write:

public class ServiceTestComponent extends TestCase {
+
+    @Reference
+    public MyService service;
+
+    public void testSomething() {
+        assertEquals(result, service.doSomething);
+    }
+}

This TestCase is used as a component within a SCA composite that defines the test suite as described in the next section. This separates TestCase's for normal unit tests from those that are integration tests.

If any methods have an SCA @Init or @Destroy annotation they will be called before and after executing tests; if no methods are annotated in this way the normal JUnit setUp and tearDown methods will be called.

If the component's scope is STATELESS (the default), then a new instance of the test component will used to run each test; if the component's scope is COMPOSITE then a single instance will be used to run all tests. The scope can be set with the standard SCA @Scope annotation.

Defining an SCA Test Suite

The Test Suite for your integration tests is defined by an SCA composite file that contains the test components written above wired to the production components for the application. The test components must use an implementation type of <tuscany:junit> .

A simple way to achieve this is to use a SCDL include element to include the content of production composite in the test harness; this gives the test components access to all of the components and references in the production composite.

For example, the following SCDL configures the ServiceTestComponent above to test the MyServiceComponent in the production composite ProductionComposite:

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+           name="PropertyTestHarnessComposite">
+
+    <include name="ProductionComposite" scdlResource="META-INF/sca/default.scdl"/>
+
+    <component name="testMyService">
+        <tuscany:junit class="ServiceTestComponent"/>
+        <reference name="service">MyServiceImpl</reference>
+    </component>
+</composite>

Alternatively, the production composite can be tested as a black box by using it to implement a component and wiring test components to it. This allows the externally visible services to be tested without knowledge of the internals of the composite.

For example, the following SCDL tests the ProductionComposite in this way:

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+           name="PropertyTestHarnessComposite">
+
+    <component name="ProductionComponent">
+        <implementation.composite name="ProductionComposite"
+                                  scdlResource="META-INF/sca/default.scdl"/>
+    </component>
+
+    <component name="testMyService">
+        <tuscany:junit class="ServiceTestComponent"/>
+        <reference name="service">ProductionComponent</reference>
+    </component>
+</composite>

The location of this test composite definition can be specified using the testScdl plugin configuration property; the default location is $project.build.testOutputDirectory/itest.scdl which allows the itest.scdl source file to be placed in the test resources (src/test/resources).

Test Result Output

The test results are output using Surefire's reporting framework for integration with other test reports. XML and test results are stored in the normal test output directory (target/surefire-reports) with a summary displayed on the console:

[INFO] [tuscany-itest:test {execution: default}]
+[INFO] Starting Tuscany...
+[INFO] Deploying test SCDL from .../target/test-classes/itest.scdl
+[INFO] Executing tests...
+
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running testMyService
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec
+
+Results :
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+
+[INFO] Stopping Tuscany...
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/css/maven-base.css b/site/trunk/site-publish/plugins/tuscany-war-plugin/css/maven-base.css new file mode 100644 index 0000000000..044d12d206 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/css/maven-base.css @@ -0,0 +1,145 @@ +body { + margin: 0px; + padding: 0px; +} +img { + border:none; +} +table { + padding:0px; + width: 100%; + margin-left: -2px; + margin-right: -2px; +} +acronym { + cursor: help; + border-bottom: 1px dotted #feb; +} +table.bodyTable th, table.bodyTable td { + padding: 2px 4px 2px 4px; + vertical-align: top; +} +div.clear{ + clear:both; + visibility: hidden; +} +div.clear hr{ + display: none; +} +#bannerLeft, #bannerRight { + font-size: xx-large; + font-weight: bold; +} +#bannerLeft img, #bannerRight img { + margin: 0px; +} +.xleft, #bannerLeft img { + float:left; + text-shadow: #7CFC00; +} +.xright, #bannerRight img { + float:right; + text-shadow: #7CFC00; +} +#banner { + padding: 0px; +} +#banner img { + border: none; +} +#breadcrumbs { + padding: 3px 10px 3px 10px; +} +#leftColumn { + width: 170px; + float:left; + overflow: auto; +} +#bodyColumn { + margin-right: 1.5em; + margin-left: 197px; +} +#legend { + padding: 8px 0 8px 0; +} +#navcolumn { + padding: 8px 4px 0 8px; +} +#navcolumn h5 { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn ul { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn li { + list-style-type: none; + background-image: none; + background-repeat: no-repeat; + background-position: 0 0.4em; + padding-left: 16px; + list-style-position: outside; + line-height: 1.2em; + font-size: smaller; +} +#navcolumn li.expanded { + background-image: url(../images/expanded.gif); +} +#navcolumn li.collapsed { + background-image: url(../images/collapsed.gif); +} +#poweredBy { + text-align: center; +} +#navcolumn img { + margin-top: 10px; + margin-bottom: 3px; +} +#poweredBy img { + display:block; + margin: 20px 0 20px 17px; +} +#search img { + margin: 0px; + display: block; +} +#search #q, #search #btnG { + border: 1px solid #999; + margin-bottom:10px; +} +#search form { + margin: 0px; +} +#lastPublished { + font-size: x-small; +} +.navSection { + margin-bottom: 2px; + padding: 8px; +} +.navSectionHead { + font-weight: bold; + font-size: x-small; +} +.section { + padding: 4px; +} +#footer { + padding: 3px 10px 3px 10px; + font-size: x-small; +} +#breadcrumbs { + font-size: x-small; + margin: 0pt; +} +.source { + padding: 12px; + margin: 1em 7px 1em 7px; +} +.source pre { + margin: 0px; + padding: 0px; +} diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/css/maven-theme.css b/site/trunk/site-publish/plugins/tuscany-war-plugin/css/maven-theme.css new file mode 100644 index 0000000000..c982168bf2 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/css/maven-theme.css @@ -0,0 +1,141 @@ +body { + padding: 0px 0px 10px 0px; +} +body, td, select, input, li{ + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 13px; +} +code{ + font-family: Courier, monospace; + font-size: 13px; +} +a { + text-decoration: none; +} +a:link { + color:#36a; +} +a:visited { + color:#47a; +} +a:active, a:hover { + color:#69c; +} +#legend li.externalLink { + background: url(../images/external.png) left top no-repeat; + padding-left: 18px; +} +a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover { + background: url(../images/external.png) right center no-repeat; + padding-right: 18px; +} +#legend li.newWindow { + background: url(../images/newwindow.png) left top no-repeat; + padding-left: 18px; +} +a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover { + background: url(../images/newwindow.png) right center no-repeat; + padding-right: 18px; +} +h2 { + padding: 4px 4px 4px 6px; + border: 1px solid #999; + color: #900; + background-color: #ddd; + font-weight:900; + font-size: x-large; +} +h3 { + padding: 4px 4px 4px 6px; + border: 1px solid #aaa; + color: #900; + background-color: #eee; + font-weight: normal; + font-size: large; +} +h4 { + padding: 4px 4px 4px 6px; + border: 1px solid #bbb; + color: #900; + background-color: #fff; + font-weight: normal; + font-size: large; +} +h5 { + padding: 4px 4px 4px 6px; + color: #900; + font-size: normal; +} +p { + line-height: 1.3em; + font-size: small; +} +#breadcrumbs { + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + background-color: #ccc; +} +#leftColumn { + margin: 10px 0 0 5px; + border: 1px solid #999; + background-color: #eee; +} +#navcolumn h5 { + font-size: smaller; + border-bottom: 1px solid #aaaaaa; + padding-top: 2px; + color: #000; +} + +table.bodyTable th { + color: white; + background-color: #bbb; + text-align: left; + font-weight: bold; +} + +table.bodyTable th, table.bodyTable td { + font-size: 1em; +} + +table.bodyTable tr.a { + background-color: #ddd; +} + +table.bodyTable tr.b { + background-color: #eee; +} + +.source { + border: 1px solid #999; +} +dl { + padding: 4px 4px 4px 6px; + border: 1px solid #aaa; + background-color: #ffc; +} +dt { + color: #900; +} +#organizationLogo img, #projectLogo img, #projectLogo span{ + margin: 8px; +} +#banner { + border-bottom: 1px solid #fff; +} +.errormark, .warningmark, .donemark, .infomark { + background: url(../images/icon_error_sml.gif) no-repeat; +} + +.warningmark { + background-image: url(../images/icon_warning_sml.gif); +} + +.donemark { + background-image: url(../images/icon_success_sml.gif); +} + +.infomark { + background-image: url(../images/icon_info_sml.gif); +} + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/css/print.css b/site/trunk/site-publish/plugins/tuscany-war-plugin/css/print.css new file mode 100644 index 0000000000..26ad7f0b59 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/css/print.css @@ -0,0 +1,7 @@ +#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { + display: none !important; +} +#bodyColumn, body.docs div.docs { + margin: 0 !important; + border: none !important +} diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/dependencies.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/dependencies.html new file mode 100644 index 0000000000..acb47f0d18 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/dependencies.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - Project Dependencies + + + + + + + +
+ +
+
+
+

Project Dependencies

compile

The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

GroupIdArtifactIdVersionClassifierTypeOptional
commons-iocommons-io1.2-jar
org.apache.mavenmaven-artifact2.0-jar
org.apache.mavenmaven-plugin-api2.0-jar
org.codehaus.plexusplexus-utils1.0.4-jar

Project Transitive Dependencies

The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.

compile

The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

GroupIdArtifactIdVersionClassifierTypeOptional
commons-iocommons-io1.2-jar
org.apache.mavenmaven-artifact2.0-jar
org.apache.mavenmaven-plugin-api2.0-jar
org.codehaus.plexusplexus-utils1.0.4-jar

Project Dependency Graph

Dependency Listings

Apache Tuscany War Plugin

A plugin for Apache Maven that adds a Tuscany runtime to a war.

http://www.apache.org/parent/parent/tuscany-war-plugin

Project License: The Apache Software License, Version 2.0


Maven Artifact

Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.

http://maven.apache.org/maven2/maven-artifact

Project License: The Apache Software License, Version 2.0


Plexus Common Utilities

Project License: No project license is defined for this project.


Maven Plugin API

Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.

http://maven.apache.org/maven2/maven-plugin-api

Project License: The Apache Software License, Version 2.0


IO

Commons-IO contains utility classes, stream implementations, file filters, and endian classes.

http://jakarta.apache.org/commons/io/

Project License: The Apache Software License, Version 2.0


Licenses

Unknown: Plexus Common Utilities

The Apache Software License, Version 2.0: Apache Tuscany War Plugin, IO, Maven Artifact, Maven Plugin API

Dependency File Details

FilenameSizeEntriesClassesPackagesJDK RevDebugSealed
commons-io-1.2.jar65,621554441.1debug-
maven-artifact-2.0.jar78,76110174151.1debug-
maven-plugin-api-2.0.jar10,13321921.1debug-
tuscany-war-plugin-1.0-incubator-SNAPSHOT.jar30,579------
plexus-utils-1.0.4.jar163,803856871.1debug-
5 total dependencies348,897262195281.140
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/images/collapsed.gif b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/collapsed.gif new file mode 100644 index 0000000000..6e71084064 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/collapsed.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/images/expanded.gif b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/expanded.gif new file mode 100644 index 0000000000..0fef3d89e0 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/expanded.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/images/external.png b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/external.png new file mode 100644 index 0000000000..3f999fc88b Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/external.png differ diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_error_sml.gif b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_error_sml.gif new file mode 100644 index 0000000000..61132ef2b0 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_error_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_info_sml.gif b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_info_sml.gif new file mode 100644 index 0000000000..c6cb9ad7ce Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_info_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_success_sml.gif b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_success_sml.gif new file mode 100644 index 0000000000..52e85a430a Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_success_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_warning_sml.gif b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_warning_sml.gif new file mode 100644 index 0000000000..873bbb52cb Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/icon_warning_sml.gif differ diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/images/logos/maven-feather.png b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/logos/maven-feather.png new file mode 100644 index 0000000000..8dfb4ffce7 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/logos/maven-feather.png differ diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/images/newwindow.png b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/newwindow.png new file mode 100644 index 0000000000..6287f72bd0 Binary files /dev/null and b/site/trunk/site-publish/plugins/tuscany-war-plugin/images/newwindow.png differ diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/index.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/index.html new file mode 100644 index 0000000000..20e2f0f455 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/index.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - About + + + + + + + +
+ +
+
+
+

About Apache Tuscany War Plugin

A plugin for Apache Maven that adds a Tuscany runtime to a war.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/integration.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/integration.html new file mode 100644 index 0000000000..8dd7b1be62 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/integration.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - Continuous Integration + + + + + + + +
+ +
+
+
+

Continuous Integration

No continuous integration management system is defined. Please check back at a later date.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/issue-tracking.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/issue-tracking.html new file mode 100644 index 0000000000..d8cef81b91 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/issue-tracking.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - Issue Tracking + + + + + + + +
+ +
+
+
+

Overview

This project uses Jira a J2EE-based, issue tracking and project management application.

Issue Tracking

Issues, bugs, and feature requests should be submitted to the following issue tracking system for this project.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/license.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/license.html new file mode 100644 index 0000000000..46960cb314 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/license.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - + + + + + + + +
+ +
+
+
+ +
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/mail-lists.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/mail-lists.html new file mode 100644 index 0000000000..de5ad250c0 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/mail-lists.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - Project Mailing Lists + + + + + + + +
+ +
+
+
+

Project Mailing Lists

These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.

NameSubscribeUnsubscribePostArchive
Apache Announce ListSubscribeUnsubscribePostmail-archives.apache.org
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/plugin-info.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/plugin-info.html new file mode 100644 index 0000000000..93ee0ced83 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/plugin-info.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - Plugin documentation + + + + + + + +
+ +
+
+
+

Plugin documentation

Goals available:

GoalDescription
tuscany-war:tuscany-warBuild the tuscany war file by adding the tuscany dependencies. + +Performs the following tasks. + +
    +
  • Adds the boot dependencies transitively to WEB-INF/tuscany/boot
  • +
  • By default boot libraries are transitively resolved from webapp-host
  • +
  • The version of boot libraries can be specified using configuration/runTimeVersion element
  • +
  • Boot libraries can be overridden using the configuration/bootLibs element in the plugin
  • +
  • Adds the extension artifacts specified using configuration/extensions to WEB-INF/tuscany/extensions
  • +
  • If configuration/loadExtensionsDependency is set to true extension dependencies are transitivel loaded
  • +
  • Extension dependencies are loaded into WEB-INF/tuscany/repository directory in a Maven repo format
  • +
  • Extension dependency metadata is written to WEB-INF/tuscany/repository/dependency.metadata file
  • +
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/project-info.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/project-info.html new file mode 100644 index 0000000000..e4cac873ea --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/project-info.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - Project Information + + + + + + + +
+ +
+
+
+

Project Information

This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by Maven on behalf of the project.

Overview

DocumentDescription
Project LicenseThis is a link to the definitions of project licenses.
AboutA plugin for Apache Maven that adds a Tuscany runtime to a war.
DependenciesThis document lists the projects dependencies and provides information on each dependency.
Project TeamThis document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.
Mailing ListsThis document provides subscription and archive information for this project's mailing lists.
Continuous IntegrationThis is a link to the definitions of all continuous integration processes that builds and tests code on a frequent, regular basis.
Source RepositoryThis is a link to the online source repository that can be viewed via a web browser.
Issue TrackingThis is a link to the issue management system for this project. Issues (bugs, features, change requests) can be created and queried using this link.
Project SummaryThis document lists other related information of this project
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/project-reports.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/project-reports.html new file mode 100644 index 0000000000..f2417bf92f --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/project-reports.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - Generated Reports + + + + + + + +
+ +
+
+
+

Generated Reports

This document provides an overview of the various reports that are automatically generated by Maven Each report is briefly described below.

Overview

DocumentDescription
Plugin documentationThis report provides goals and parameters documentation of a plugin
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/project-summary.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/project-summary.html new file mode 100644 index 0000000000..007cdbaeb5 --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/project-summary.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - Project Summary + + + + + + + +
+ +
+
+
+

Project Summary

Project Information

FieldValue
NameApache Tuscany War Plugin
DescriptionA plugin for Apache Maven that adds a Tuscany runtime to a war.
Homepagehttp://www.apache.org/parent/parent/tuscany-war-plugin

Project Organization

FieldValue
NameApache Software Foundation
URLhttp://www.apache.org/

Build Information

FieldValue
GroupIdorg.apache.tuscany.sca
ArtifactIdtuscany-war-plugin
Version1.0-incubator-SNAPSHOT
Typemaven-plugin
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/source-repository.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/source-repository.html new file mode 100644 index 0000000000..c4d6be6caa --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/source-repository.html @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - Source Repository + + + + + + + +
+ +
+
+
+

Overview

This project uses Subversion to manage its source code. Instructions on Subversion use can be found at http://svnbook.red-bean.com/.

Web Access

The following is a link to the online source repository.

Anonymous access

The source can be checked out anonymously from SVN with this command:

$ svn checkout http://svn.apache.org/repos/asf/incubator/tuscany/java/parent/tuscany-war-plugin tuscany-war-plugin

Developer access

Everyone can access the Subversion repository via HTTPS, but Committers must checkout the Subversion repository via HTTPS.

$ svn checkout https://svn.apache.org/repos/asf/incubator/tuscany/java/parent/tuscany-war-plugin tuscany-war-plugin

To commit changes to the repository, execute the following command to commit your changes (svn will prompt you for your password)

$ svn commit --username your-username -m "A message"

Access from behind a firewall

For those users who are stuck behind a corporate firewall which is blocking http access to the Subversion repository, you can try to access it via the developer connection:

$ svn checkout https://svn.apache.org/repos/asf/incubator/tuscany/java/parent/tuscany-war-plugin tuscany-war-plugin

Access through a proxy

The Subversion client can go through a proxy, if you configure it to do so. First, edit your "servers" configuration file to indicate which proxy to use. The files location depends on your operating system. On Linux or Unix it is located in the directory "~/.subversion". On Windows it is in "%APPDATA%\Subversion". (Try "echo %APPDATA%", note this is a hidden directory.)

There are comments in the file explaining what to do. If you don't have that file, get the latest Subversion client and run any command; this will cause the configuration directory and template files to be created.

Example : Edit the 'servers' file and add something like :

[global]
+http-proxy-host = your.proxy.name
+http-proxy-port = 3128
+
+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/team-list.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/team-list.html new file mode 100644 index 0000000000..fb7e42647e --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/team-list.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - Team list + + + + + + + +
+ +
+
+
+

The Team

A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.

The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.

Members

There are no developers working on this project.

Contributors

There are no contributors listed for this project. Please check back again later.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/tuscany-war-mojo.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/tuscany-war-mojo.html new file mode 100644 index 0000000000..8b94f92ecd --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/tuscany-war-mojo.html @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - + tuscany-war-plugin - tuscany-war:tuscany-war + + + + + + + +
+ +
+
+
+ + + +

tuscany-war:tuscany-war

+

Build the tuscany war file by adding the tuscany dependencies. + +Performs the following tasks. + +

    +
  • Adds the boot dependencies transitively to WEB-INF/tuscany/boot
  • +
  • By default boot libraries are transitively resolved from webapp-host
  • +
  • The version of boot libraries can be specified using configuration/runTimeVersion element
  • +
  • Boot libraries can be overridden using the configuration/bootLibs element in the plugin
  • +
  • Adds the extension artifacts specified using configuration/extensions to WEB-INF/tuscany/extensions
  • +
  • If configuration/loadExtensionsDependency is set to true extension dependencies are transitivel loaded
  • +
  • Extension dependencies are loaded into WEB-INF/tuscany/repository directory in a Maven repo format
  • +
  • Extension dependency metadata is written to WEB-INF/tuscany/repository/dependency.metadata file
  • +

+

Mojo Attributes:

    +
  • Requires a Maven 2.0 project to execute.
  • +
  • Automatically executes within the lifecycle phase: package
  • +
+

+

Required Parameters

+ + + + + + + + + + + + + + + + +
NameTypeDescription
outputDirectoryStringThe directory for the generated WAR.
warNameStringThe name of the generated WAR.
+
+

Optional Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
bootLibsDependency[]The directory for the generated WAR.
dependenciesDependency[]The directory for the generated WAR.
extensionsDependency[]The directory for the generated WAR.
loadExtensionDependenciesbooleanA flag to indicate whether extension dependencies should be resolved transitively.
metadataSourceArtifactMetadataSourceArtifact metadata source.
runTimeVersionStringThe default version of boot dependany jar files
+
+

Parameter Details

+

bootLibs

+

The directory for the generated WAR.

+
    +
  • Type: org.apache.tuscany.plugin.war.Dependency[]
  • +
  • Required: No
  • +

dependencies

+

The directory for the generated WAR.

+
    +
  • Type: org.apache.tuscany.plugin.war.Dependency[]
  • +
  • Required: No
  • +

extensions

+

The directory for the generated WAR.

+
    +
  • Type: org.apache.tuscany.plugin.war.Dependency[]
  • +
  • Required: No
  • +

loadExtensionDependencies

+

A flag to indicate whether extension dependencies should be resolved transitively.

+
    +
  • Type: boolean
  • +
  • Required: No
  • +

metadataSource

+

Artifact metadata source.

+
    +
  • Type: org.apache.maven.artifact.metadata.ArtifactMetadataSource
  • +
  • Required: No
  • +

outputDirectory

+

The directory for the generated WAR.

+
    +
  • Type: java.lang.String
  • +
  • Required: Yes
  • +
  • Expression: ${project.build.directory}
  • +

runTimeVersion

+

The default version of boot dependany jar files

+
    +
  • Type: java.lang.String
  • +
  • Required: No
  • +

warName

+

The name of the generated WAR.

+
    +
  • Type: java.lang.String
  • +
  • Required: Yes
  • +
  • Expression: ${project.build.finalName}
  • +
+
+
+ + +
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/plugins/tuscany-war-plugin/usage.html b/site/trunk/site-publish/plugins/tuscany-war-plugin/usage.html new file mode 100644 index 0000000000..07ec1683de --- /dev/null +++ b/site/trunk/site-publish/plugins/tuscany-war-plugin/usage.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + Apache Tuscany War Plugin - + + + + + + + +
+ +
+
+
+

Usage

The tuscany-war-plugin is associated with the package phase of the build lifecycle and is typically included in the build definition for your project:

    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.tuscany.sca</groupId>
+                <artifactId>tuscany-war-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>tuscany-war</id>
+                        <goals>
+                            <goal>tuscany-war</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>

The plugin adds the jars needed by the webapp integration code into WEB-INF/lib so that they are included on the web application's classpath.

It also adds the jars needed by the webapp runtime into WEB-INF/tuscany/lib. These are loaded by the integration code and do not appear on the web application's classpath.

+
+
+
+
+
+ + + diff --git a/site/trunk/site-publish/portuguese-portal.html b/site/trunk/site-publish/portuguese-portal.html new file mode 100644 index 0000000000..cc843b8297 --- /dev/null +++ b/site/trunk/site-publish/portuguese-portal.html @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + Apache Tuscany : Portuguese Portal + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Portuguese Portal + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Forum sobre Apache Tuscany SCA

+ + + + + + + + + +
+ Google Groups +
+ Forum sobre Apache Tuscany SCA em Portugues +
+ Subscription(Email): + +
+ Forum sobre Tuscany SCA
+English Translation of the Tuscany SCA Portuguese Forum +
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/pre-packaged-or-roll-your-own.html b/site/trunk/site-publish/pre-packaged-or-roll-your-own.html new file mode 100644 index 0000000000..b191c6f5a5 --- /dev/null +++ b/site/trunk/site-publish/pre-packaged-or-roll-your-own.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + Apache Tuscany : Pre-packaged or roll your own? + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Obtaining a Tuscany Java SCA Implementation > Pre-packaged or roll your own? + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Choosing between a package runtime and building your own
+ + Downloading and installing a release
+ + (use the the approach I'm experimenting with @ http://www.mail-archive.com/tuscany-dev%40ws.apache.org/msg13707.html)
+ + Setting up a build environment
+ + Choosing a source / understanding the source tree
+ + Building - which bits to build
+ + Debugging build issues
+ + Build tips (eg. use of mvn -fn to continue building despite test case failures)

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/privacy-policy.html b/site/trunk/site-publish/privacy-policy.html new file mode 100644 index 0000000000..b440e8dc41 --- /dev/null +++ b/site/trunk/site-publish/privacy-policy.html @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + Apache Tuscany : Privacy Policy + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Privacy Policy + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +
Subprojects
+

SDO
+DAS

+
+ +

Privacy Policy

+ +

Information about your use of this website is collected using server access logs and a tracking cookie. The collected information consists of the following:

+ +
    +
  • The IP address from which you access the website;
  • +
  • The type of browser and operating system you use to access our site;
  • +
  • The date and time you access our site;
  • +
  • The pages you visit; and
  • +
  • The addresses of pages from where you followed a link to our site.
  • +
+ + +

Part of this information is gathered using a tracking cookie set by the Google Analytics service and handled by Google as described in their privacy policy. See your browser documentation for instructions on how to disable the cookie if you prefer not to share this data with Google.

+ +

We use the gathered information to help us make our site more useful to visitors and to better understand how and when our site is used. We do not track or collect personally identifiable information or associate gathered data with any personally identifying information from other sources.

+ +

By using this website, you consent to the collection of this data in the manner and for the purpose described above.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/projects-using-tuscany.html b/site/trunk/site-publish/projects-using-tuscany.html new file mode 100644 index 0000000000..572714718c --- /dev/null +++ b/site/trunk/site-publish/projects-using-tuscany.html @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + Apache Tuscany : Projects Using Tuscany + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > General Info > Projects Using Tuscany + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + +
+

User Feedback

+

This page contains feedback from users who would like to share their experience with others about Apache Tusany when used in production environment.

+
    +
  • If you would like to share information, please post your feedback on the mailing list and include the text [Feedback] in the heading. Your post will be added to this page.
  • +
+ + +

Thank you for sharing information.

+ +

IBM Software Group

+

Feedback email thread

+ +

IBM Software Group is using the Apache Tuscany project to deliver a Java implementation of SCA 1.0 to its WebSphere Application Server customers," said Erik P. Kristiansen, WebSphere Product Manager of IBM Software Group. "Delivered as an optional product extension, the IBM WebSphere Application Server v7.0 Feature Pack for Service Component Architecture v1.0 is available at http://www.ibm.com/websphere/was/sca .

+ +

Erik P. Kristiansen,
+WebSphere Product Manager of IBM Software Group

+ +

Primeton Technologies Ltd

+

Feedback email thread
+Using tuscany to help our leading banking customers to fullfil the SOA architecture and business component specification :

+ +

Primeton has done a consulting service for one of China Leading Financial Service Company, to help them to fulfil the SOA architecture, Business Component Specifications and the Container Implementation. Now the Enterprise architecture, business component specifications and container implementation have been approved to be used in all the Enterprise-wide applications in the future.

+ +

Chris Cheng
+VP of Primeton Technologies Ltd.

+ +

Amdocs, OSS division

+ +

Feedback email thread
+Amdocs is the leading supplier of customer experience systems service
+providers worldwide. Within Amdocs, the OSS Division has adopted Tuscany
+as the SCA implementation at the heart of its solution for delivery of
+SOA services for Cramer6 OSS Suite.

+ +

The current release of the Cramer6 OSS Suite provide both out-of-the-box
+SOA services as well as tools allowing the creation of new OSS-specific
+SOA services. These services are built on top of the Tuscany runtime and
+allow Amdocs customers to integrate their existing systems with Cramer6
+OSS Suite services using whatever technology is appropriate. Thus,
+customers may access the services through any appropriate transport
+mechanism and from any "native" or SCA based client. They can also
+publish new services that can be accessed over a variety of different
+transport mechanisms with minimal recoding.

+ +

"SCA has helped us to widen our support for SOA by giving us a mechanism
+to create SOA Services" said DAVE ETTLE, Senior Vice President, Products
+& Technology "We believe Tuscany provides the most appropriate SCA
+runtime implementation for our needs".

+ +

Amdocs intends to continue to use SCA/Tuscany for its OSS applications.

+ +

Steve Chamberlain
+Principal Architect, Platform & Architecture Group

+ +

Deloitte Inc. , Aug. 2007

+ +

Feedback email thread

+ +

Currently working for a consulting firm with a major financial services Institute in Canada to implement a mix of retail and commercial banking services. We plan to go into production by the end of this quarter, we have finished the majority of implementation, conducted functional and performance testing (with very good results) and plan to do a limited deployment with a small subset of users within a couple of months. We are currently deploying Tuscany on websphere 6.1, Solaris 10, and taking advantage of a combination of Web services bindings/SDO as well as local/spring bindings.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/quick-guide-to-sca.data/calc.jpg b/site/trunk/site-publish/quick-guide-to-sca.data/calc.jpg new file mode 100644 index 0000000000..4c1ea05f6d Binary files /dev/null and b/site/trunk/site-publish/quick-guide-to-sca.data/calc.jpg differ diff --git a/site/trunk/site-publish/quick-guide-to-sca.data/calc.jpg.jpeg b/site/trunk/site-publish/quick-guide-to-sca.data/calc.jpg.jpeg new file mode 100644 index 0000000000..50a49ce9c9 Binary files /dev/null and b/site/trunk/site-publish/quick-guide-to-sca.data/calc.jpg.jpeg differ diff --git a/site/trunk/site-publish/quick-guide-to-sca.data/calc.ppt b/site/trunk/site-publish/quick-guide-to-sca.data/calc.ppt new file mode 100644 index 0000000000..bac69f7a6a Binary files /dev/null and b/site/trunk/site-publish/quick-guide-to-sca.data/calc.ppt differ diff --git a/site/trunk/site-publish/quick-guide-to-sca.data/component.png b/site/trunk/site-publish/quick-guide-to-sca.data/component.png new file mode 100644 index 0000000000..72b9d1b4d2 Binary files /dev/null and b/site/trunk/site-publish/quick-guide-to-sca.data/component.png differ diff --git a/site/trunk/site-publish/quick-guide-to-sca.data/component.png.jpeg b/site/trunk/site-publish/quick-guide-to-sca.data/component.png.jpeg new file mode 100644 index 0000000000..6ab7db30aa Binary files /dev/null and b/site/trunk/site-publish/quick-guide-to-sca.data/component.png.jpeg differ diff --git a/site/trunk/site-publish/quick-guide-to-sca.data/delete-calc.jpg b/site/trunk/site-publish/quick-guide-to-sca.data/delete-calc.jpg new file mode 100644 index 0000000000..1d5cb16ba7 Binary files /dev/null and b/site/trunk/site-publish/quick-guide-to-sca.data/delete-calc.jpg differ diff --git a/site/trunk/site-publish/quick-guide-to-sca.data/delete-calc.jpg.jpeg b/site/trunk/site-publish/quick-guide-to-sca.data/delete-calc.jpg.jpeg new file mode 100644 index 0000000000..3354c2d651 Binary files /dev/null and b/site/trunk/site-publish/quick-guide-to-sca.data/delete-calc.jpg.jpeg differ diff --git a/site/trunk/site-publish/quick-guide-to-sca.data/domain.jpg b/site/trunk/site-publish/quick-guide-to-sca.data/domain.jpg new file mode 100644 index 0000000000..587094badc Binary files /dev/null and b/site/trunk/site-publish/quick-guide-to-sca.data/domain.jpg differ diff --git a/site/trunk/site-publish/quick-guide-to-sca.data/domain.jpg.jpeg b/site/trunk/site-publish/quick-guide-to-sca.data/domain.jpg.jpeg new file mode 100644 index 0000000000..829bd77110 Binary files /dev/null and b/site/trunk/site-publish/quick-guide-to-sca.data/domain.jpg.jpeg differ diff --git a/site/trunk/site-publish/quick-guide-to-sca.html b/site/trunk/site-publish/quick-guide-to-sca.html new file mode 100644 index 0000000000..340e75f96a --- /dev/null +++ b/site/trunk/site-publish/quick-guide-to-sca.html @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + Apache Tuscany : Quick Guide to SCA + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Quick Guide to SCA + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+


+
A quick guide to SCA
+

Purpose of this guide is to help you understand the high level concepts in SCA as it relates to the specification. For more details on SCA please refer to the various specifications available at www.osoa.org.

+
+

What is SCA?

+

SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology.

+ +

SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.

+ +

SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes.

+ +

Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled applications.

+ +

Now let's talk about SCA building blocks and concepts.

+ +

SCA Component

+ +

The basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:

+ +
    +
  • Service: Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.
  • +
  • Reference: This describes the dependencies this type of component has in order to function. A reference is an interface.
  • +
  • Property: This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.
  • +
  • Intent policies: This describes assumptions on how the component will behave. There are two types of policies. +
      +
    • Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging
    • +
    • Interaction policy - defines how the components behave with one another. For example, security.
    • +
    +
  • +
  • Implementation: Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.
  • +
+ + +

This is demonstrated below.
+

+ +

The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.

+ +

SCA Wire

+ +

As mentioned above, an SCA component may have zero or more references. Refrences in SCA define how SCA components invoke services. The relationship between a reference and a service is typically demonstrated through a line in a SCA diagrams and is referred to as a wire.

+ +

The term wire can at the begining seem confusing because you may ask how a wire is realized. There is no physical definition for a wire, it is really derived from the relationship between a Service and its refrence(s) at runtime. This is realized through dependency injection in Tuscany.

+ + +

SCA Composite

+ +

An SCA composite consists of components, services, references, and wires that connect them. A composite is the unit of deployment for SCA.
+A composite can be viewed as a component whose implementation is not code but an aggregation of one or more components co-operating to provide higher level services. Think of composite as a solution, for example a credit check composite may consist of multiple components that together perform the credit checking work. A composite can also be used within a larger solution, for example credit check can be part of a order processing composite. A composite has the same charactersitics as a component. It provides Services, has References to other dependencies, and can be configured using Properties and can have intent policies in just the same way as an individual components can. In thise case, attributes of some of the components that are embedded in the composite get 'promoted' and becom the attribute of the composite. In the example below, you see a calculator composite which consists of 5 components, a calculator service has references to four components:Add, Subtract, Multiply and Divide.

+ +


+ The assembly or wiring is defined in .composite file through Service Component Definition Language (SCDL) that is in XML. For example, calculator.composite would define that calculator component references the other four components.

+ +

SCA Contribution

+ +

The artifacts that make up a solution get packaged into what is called a contribution. A contribution can take a number of different forms. For example, it could be a jar file, or it could be a directory tree on the file system. A contribution can contain composites, java classes, BPEL processes, XSD files, wsdl files, etc. An SCA application can be divided into multiple contributions with dependencies between them. In general, some services depend closely on other services and it makes sense to package them together. If services are more independent it is best to package them separately so that they can be reused in different contexts. A contribution is a deployable unit. A solution may require multiple contributions that share artifacts and artifacts can be shared between (imported) between contributions.

+ +

SCA Domain

+ +

Contribution packages get contributed to what is called SCA domain which is the scope of adminstration at runtime. An SCA Domain represents a complete runtime configuration, potentially distributed over a series of interconnected runtime nodes and is a logical view of the running applications or a coherent grouping of components that are working together. An SCA Domain typically represents an area of business functionality controlled by a single organization. For example, an SCA Domain may be the whole of a business, or it may be a department within a business.

+ +

Therefore, an SCA domain consists of the definitions of composites, components, their implementations, and the nodes on which they run. Components deployed into a domain can directly wire to other components within the same domain. Communication with services outside of a domain is done through bindings.

+ + +

SCA Domains can vary in size from the very small to the very large:

+
    +
  • a very small domain could be one within a test environment inside an IDE
  • +
  • a medium sized domain could be a single server or small cluster supporting a single application
  • +
  • a large domain could describe all the services within a department or company
  • +
+ + +

In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services. However, during development one is not concerned with all this. The code is packaged and made available for deployment. Tuscany SCA Java supports contributions in the form of JAR or filesystem.

+ +

Below is an example of domain with two contributions.
+

+ +

SCA Binding

+

A binding is used as a means of communication between services and handles the protocols. It defines with what communication method a service can be accessed with or with what communication method it can will access other services. There can be different types of bindings depending on technologies used to develop a solution. For example JMS binding, Webservices binding, Atom binding for web20 interaction, etc.

+ +

Services can be configured with different bindings and there can be multiple bindings for a service. Bindings for the services and references get defined declaratively in the .composite file. There is a default binding called binding.sca which when used leaves the choice of binding to the underlying infrastructure by default.

+ +

The declarative bindings and the abstraction of protocols from business logic brings agility to SCA applications. This allows SCA applications to be purely focused on business logic and not be contaminated with protocol handling information. It also enables the SCA compositions to grow or change without code modification while also working with applications that are not enabled with SCA.

+ + +

SCA Policy

+

An enterprise application requires control beyond the business functional capability which can include how security is handled in the enterprise or what transactional capability should be applied to services that are offered. SCA policies define the constraints or capabilities that get applied to services and their interaction. Two types of policies are defined in SCA.

+
    +
  • Interaction Policies - Define the policies that influence interaction of services for example whether authentication is required or not.
  • +
  • Implementation Policies - Define how the components behave at runtime for example whether it is transactional or not.
  • +
+ + +

SCA mechanisms for defining policies such as intents and policySets can only be used in the context of a single domain. The fact that policies can be defined declaratively make applications adaptive to the environment that they get deployed into or to changes in the business requirements.
+For more information about policy check out the sca policy framework specificationversion=1]

+ + + + + + + + + + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-architecture-guide.data/ClassDiag.jpg b/site/trunk/site-publish/rdb-das-architecture-guide.data/ClassDiag.jpg new file mode 100644 index 0000000000..8ae45037f9 Binary files /dev/null and b/site/trunk/site-publish/rdb-das-architecture-guide.data/ClassDiag.jpg differ diff --git a/site/trunk/site-publish/rdb-das-architecture-guide.data/ClassDiag.jpg.jpeg b/site/trunk/site-publish/rdb-das-architecture-guide.data/ClassDiag.jpg.jpeg new file mode 100644 index 0000000000..74d0972fa5 Binary files /dev/null and b/site/trunk/site-publish/rdb-das-architecture-guide.data/ClassDiag.jpg.jpeg differ diff --git a/site/trunk/site-publish/rdb-das-architecture-guide.data/rdbDAS.gif b/site/trunk/site-publish/rdb-das-architecture-guide.data/rdbDAS.gif new file mode 100644 index 0000000000..7c96e84552 Binary files /dev/null and b/site/trunk/site-publish/rdb-das-architecture-guide.data/rdbDAS.gif differ diff --git a/site/trunk/site-publish/rdb-das-architecture-guide.data/rdbDAS.gif.jpeg b/site/trunk/site-publish/rdb-das-architecture-guide.data/rdbDAS.gif.jpeg new file mode 100644 index 0000000000..abb57b0ada Binary files /dev/null and b/site/trunk/site-publish/rdb-das-architecture-guide.data/rdbDAS.gif.jpeg differ diff --git a/site/trunk/site-publish/rdb-das-architecture-guide.html b/site/trunk/site-publish/rdb-das-architecture-guide.html new file mode 100644 index 0000000000..cbe579affa --- /dev/null +++ b/site/trunk/site-publish/rdb-das-architecture-guide.html @@ -0,0 +1,704 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS architecture guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > DAS General Menu > DAS RDB Menu > RDB DAS architecture guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + +

Overview

+ +

Service Data Object (SDO) and Service Component Architecture (SCA) are the basic building blocks in Service Oriented Architecture (SOA). SDO is the way of representing data in SCA. As the applications using SOA have back-end data representation in different formats like Database, File System, XML Based Data, etc., there is a need to provide a mapping between these data representations and SDO. Java RDB DAS (Data Access Service for Relational Database) is the effort to suffice this mapping requirement for Relational Database. There is a C++ implementation coming up too.

+ +

Function Description

+ +

RDB DAS provides 2 major capabilities:-
+1) Execute SQL Queries and return result as a graph of Data Objects.
+2) Reflect changes made to a graph of Data Objects back to the database.
+It also supports explicit CUD SQL statements execution against database.
+

+ +

Architecture

+ +

This section describes the overall architecture of Java RDB DAS. The details are elaborated in Design Details. Also, for details of different DAS Configuration settings, refer to Configuration Schema(config.xsd).

+ +

DAS functions based on external Configuration. This configuration can be specified using file or can be programmatically build by the caller, using ConfigHelper interface.

+ +

Design follows a factory pattern to create DAS instance. DAS instance contains Connection, Config and Commands.

+ +

The Connection can either be passed from caller or can be created using the Configuration information. It is used for all the database operations done in that DAS instance and also for controlling transactions. Configuration parameter managedtx decides whether the transaction will be controlled by DAS or by caller.

+ +

Commands hold all the commands from Configuration file and also the ones that are created programmatically on the fly. The Command is implemented using different inherited classes like Read/Insert/Update/Delete/StoredProcedure/OptimisticWrite with root parent class CommandImpl. More details on different classes will be in Design Details.

+ +

Config holds the reference for Configuration associated with the DAS instance and contains all details as mentioned in Configuration Schema (config.xsd).

+ +

Caller has 2 (and some other) main APIs available in DAS instance to use the Commands getCommand(name) and applyChanges(Data Object)

+
    +
  1. getCommand(name) is typically used to retrieve the Command (SQL String) available from Config. SQL String, Connection and Parameters required for the SQL are contained in the Command instance. User also needs to call setParameter() on Command as required by the underlying SQL. User finally calls execute() /executeQuery() on this Command and based on whether it is CUD/Read operation. executeQuery() returns DataObject.
  2. +
  3. applyChanges(Data Object) is the way to process a SDO DataObject and SDO ChangeSummary to create SQL UPDATE statement to be executed against database. More details on SDO integration are in Design Details.
  4. +
+ + +

User Interface

+ +

DAS exposes a set of interfaces to end user. Javadoc is available for all public APIs in binary distribution from Downloads.

+
    +
  • DASFactory Different options to produce DAS instance using Factory pattern.
    +Method Summary +
    + + + + + + + + + + + + + + + + +
    DAS createDAS(java.sql.Connection connection) Creates a DAS based on the provided connection
    DAS createDAS(java.io.InputStream configStream) Creates a DAS based on the provided config file stream
    DAS createDAS(java.io.InputStream configStream, java.sql.Connection connection) Creates a DAS based on the provide config file stream and connection
    +
    +
  • +
+ + +
    +
  • DAS Interface to call APIs for DAS instance.
    +Field Summary +
    + + + + + +
    static DASFactory FACTORY
    +
    + +

    Method Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    void applyChanges(DataObject root) The change history is scanned and modifications to the graph of data objects are flushed to the database.
    Command createCommand(java.lang.String sql) Creates a Command based on the provided SQL statement
    Command getCommand(java.lang.String name) Gets the named command from this factory's inventory
    void releaseResources() If the CommandGroup is managing connections then this method must be called when the client is done with the instance.
    +
    +
  • +
+ + +
    +
  • Command Used to execute read / write (CRUD) on database.
    +Method Summary +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void execute() Performs the function defined by the command
    DataObject executeQuery() Performs the function defined by the command and return the results in the root DataObject
    int getGeneratedKey() Returns the value of the database-generated key.
    java.lang.Object getParameter(int index) Returns the value of the associated Parameter
    void setParameter(int index, java.lang.Object value) Sets the value of the associated Parameter
    +
    +
  • +
+ + +
    +
  • ConfigHelper It is used as an aid in programmatic construction of Config instances. This is an
    +alternative to providing needed configuration information in an XML file.
    +Constructor Summary +
    + + + + + + + +
    ConfigHelper()
    ConfigHelper(Config config)
    +
    + +

    Method Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Column addColumn(Table table, java.lang.String columnName, java.lang.String propertyName)
    void addConnectionInfo(java.lang.String dataSourceName)
    void addConnectionInfo(java.lang.String dataSourceName, boolean managedtx)
    void addConnectionInfo(java.lang.String driverClass, java.lang.String databaseURL, java.lang.String user, java.lang.String password, int loginTimeout)
    void addCreateStatement(Table table, java.lang.String statement, java.lang.String parameters)
    Command addDeleteCommand(java.lang.String name, java.lang.String sql)
    void addDeleteStatement(Table table, java.lang.String statement, java.lang.String parameters)
    Command addInsertCommand(java.lang.String name, java.lang.String sql)
    void addPrimaryKey(java.lang.String columnName)
    Relationship addRelationship(java.lang.String parentName, java.lang.String childName)
    Relationship addRelationship(java.util.Vector parentNames, java.util.Vector childNames)
    Command addSelectCommand(java.lang.String name, java.lang.String sql)
    Table addTable(java.lang.String name, java.lang.String typeName)
    Command addUpdateCommand(java.lang.String name, java.lang.String sql)
    void addUpdateStatement(Table table, java.lang.String statement, java.lang.String parameters)
    Config getConfig()
    void setDataObjectModel(java.lang.String dataObjectModel)
    +
    +
  • +
+ + +
    +
  • Converter A lightweight Table-column <--> DataObject-property converter framework. Converters allow a user to insert a transformation between a column's value and its destination DataObject property's value. For example, by default, a VARCHAR column will be represented as a String in its corresponding DataObject property. A user could insert a converter that transforms the VARCHAR value to an Integer. If this is done then although the column returns character data, the DataObject property will be an Integer
    +Method Summary +
    + + + + + + + + + + + +
    java.lang.Object getColumnValue(java.lang.Object propertyData) Transform the columnData object to a new value and possibly new type
    java.lang.Object getPropertyValue(java.lang.Object columnData) Transform the columnData object to a new value and possibly new type.
    +
    +
  • +
+ + +
    +
  • Pager An iterator-like interface to conveniently move through chunks of data. The idea is that a Pager works with a read Command. The read command returns a large amount of data and the client wants to work with chunks of it at a time. So the Pager is created on the command and each call to next returns the next chunk of data.
    +Method Summary +
    + + + + + + + + + + + + + + + + +
    DataObject getPage(int page) Return a specific identified page
    DataObject next() Get the next page of data
    DataObject previous() Get the page prior to the last page returned
    +
    +
  • +
+ + +
    +
  • GraphMerger is utility class implementation (no interface), to provide functions for flexibly managing DataObjects.
    +Constructor Summary +
    + + + + +
    GraphMerger()
    +
    + +

    Method Summary

    +
    + + + + + + + + + + + + + + + + + +
    void addPrimaryKey(java.lang.String key)
    DataObject emptyGraph(Config config)
    DataObject merge(DataObject primary, DataObject secondary)
    DataObject merge(java.util.List graphs)
    +
    +
  • +
+ + +

Class Diagram

+ +

Class Diagram

+ +

Design Details

+ +

Major classes are described here at high level to show how these fit in the complete picture. For
+methods/members details please refer to javadoc from binary distribution at Downloads.

+ +

DASFactoryImpl Expose methods to create DAS instance from Config or Connection or both.

+ +

DASImpl The sole instance of DAS existing for one DAS runtime. It contains MappingWrapper, JDBC Connection and a Map of all DAS Commands. To create appropriate instances of CommandImpl, DASImpl, scan's each Config Command for attribute kind, and based on that required instance of CommandImpl is added to the map. Connection from DataSource or Database Driver Manager both are supported. releaseResources() method allows external caller to close JDBC Connection when it is supplied by the caller.Provides methods to get/create DAS Commands and applyChanges(changed DataObject) to reflect DataObject changes to Database.

+ +

MappingWrapper Wrapper over DAS Config. Provides various get/set methods for all different elements in DAS Config.

+ +

ConnectionImpl Contains JDBC Connection, and whether it is managed by DAS/caller and also whether Database platform support auto-generated key column values.

+ +

BaseCommandImpl Parent class for all other CommandImpl classes. Contains MappingWrapper. setConnection() method to associate ConnectionImpl with each DAS Command.

+ +

ApplyChangesCommandImpl Extends BaseCommandImpl. Contains ChangeSummarizer. It is used to load DataObject's ChangeSummary and for each change, Generator classes (UpdateGenerator, DeleteGenerator) are called to form appropriate SQL Statement with parameters, which is executed against the Database.

+ +

CommandImpl Extends BaseCommandImpl and implements DAS Config's <Command>. So, in effect it is parent class for all explicit CRUD Commands. It contains Statement, Parameters and ResultSetShape.

+ +

WriteCommandImpl Extends CommandImpl. Parent for CUD. If SELECT(Read) is attempted, exception is thrown.

+ +

DeleteCommandImpl Extends WriteCommandImpl.

+ +

InsertCommandImpl Extends WriteCommandImpl. Supports Database generated keys.

+ +

UpdateCommandImpl Extends WriteCommandImpl.

+ +

OptimisticWriteCommandImpl Extends UpdateCommandImpl. Supports OCC feature. Here by design when a CollisionParameter's value is attempted to change more than once, the CollisionParameter does not allow its value change (as during first setValue(), flag indicating that value is changed is set). So, the attempt results in no database rows getting changes. On this condition exception is thrown as Update Collision is occurred.

+ +

ReadCommandImpl Extends CommandImpl. Used for explicit SELECT. Support's DAS feature, ResultDescriptor. If CUD is attempted, exception is thrown. Supports paging. When Query is executed (executeQuery()), the JDBC ResultSet is converted into DataObject Graph and returned to caller.

+ +

SPCommandImpl Extends ReadCommandImpl for StoredProcedure call. Method executeQuery() is used when the stored procedure returns ResultSet and method execute() is used when the stored procedure does not have any return ResultSet.
+Parameters hold both IN and OUT parameters.

+ +

PagerImpl Holds ReadCommandImpl, page size and current page index. Implements next(), previous(), getPage(index) methods. In each based on current page index and page size, the ReadCommandImpl is executed with start and end boundaries set.

+ +

ChangeFactory This class is used during DAS.applyChanges(). With changed DataObject and ChangeSummary, required type of ChangeOperation instance is created (like DeleteOperation, UpdateOperation). This instance of ChangeOperation holds appropriate CommandImpl, which in itself holds the Parameters. Thus for a given DAS Config and Connection, ChangeFactory is used to propagate DataObject changes to Database via CommandImpl.

+ +

ChangeSummarizer Main function of this class is load Changes based on root DataObject of applyChanges() Command MappingWrapper is used to sort the ChangeOperations in Changes.

+ +

Changes Contains DeleteList, InsertList, Update List pertaining to one applyChanges() command.

+ +

DeleteList Maintains ordered/unordered list of DeleteOperations. If DAS Config defines any Relationships, MappingWrapper aids in forming Delete Order for all the Tables undergoing DeleteOperation, based on Parent-Child relationships. If Delete Order is available, DeleteList forms a List following appropriate Referential Integrity. Otherwise no order is maintained.

+ +

InsertList Maintains ordered/unordered list of CreateOperations. If DAS Config defines any Relationships, MappingWrapper aids in forming Insert Order for all the Tables undergoing InsertOperation, based on Parent-Child relationships. If Insert Order is available, InsertList forms a List following appropriate Referential Integrity. Otherwise no order is maintained.

+ +

UpdateList As UpdateOperation happens on single Table, there is no reason for sorting based on any Referntial Relationships. So, this class is just a wrapper on ArrayList.

+ +

BaseGenerator Parent class for Delete/Update/InsertGenerator. If in DAS Config, any Table Column specifies a ColumnConverter class, BaseGenerator, returns a new instance of this class.

+ +

DeleteGenerator Extends BaseGenerator. Based on Table and DAS Config, DELETE statement is generated with Primary Keys in WHERE clause. Using this, DeleteCommandImpl is instantiated. For Parameters in DeleteCommandImpl ColumnConverter is considered if present.

+ +

InsertGenerator Same as DeleteGenerator. Here Database Key value generation is also considered.

+ +

UpdateGenerator Extends BaseGenerator. In UPDATE statement WHERE clause Primary Keys are considered as well as Default OCC policy is considered. Also check is implemented for any violation for Foreign Key relationships. Parameters in UpdateCommandImpl consider ColumnConvert as appropriate. OCC attributes in DAS Config for <Column>, viz. managed and collision are considered in SET and WHERE clause formation respectively.

+ +

ChangeOperation Abstract parent class for Create/Delete/UpdateOperation. It contains WriteCommand, DatabaseObject and any generated ID.

+ +

DeleteOperation Extends ChangeOperation. Uses SDO's ChangeSummary based OldValues as in the DataGraph , deleted objects have lost their settings.

+ +

CreateOperation Extends ChangeOperation, makes use of Generated ID.

+ +

UpdateOperation Extends ChangeOperation and makes use of generated ID.

+ +

DatabaseObject Wraps DataObject. If a field is FK, it will return value from parent. It also sets the Database generated value in primary key property of DataObject.

+ +

RowObjects Holds a Map of TableName->DataObject. It uses relationship information to associate these DataObjects to form DataGraph .

+ +

GraphBuilderMetadata Class that form Metadata for forming DataObjects based on MetaData available in JDBC ResultSet. It uses DAS Config, ResultSet and ResultSetShape to form a Collection of ResultMetaData. It is used in ResultSetProcessor and thus further in RowObjects.

+ +

ResultSetProcessor This class is used to transform data in ResultSet into set of inter-related DataObjects. It contains TableRegistry, GraphBuilderMetadata and DataObjectMaker. Using GrapbBuilderMetadata and the JDBC ResultSet, it forms
+ResultSetRow , then form RowObjects and connects related DataObjects using Relationship information from RowObjects to form the completed DataGraph.

+ +

DataObjectMaker Forms DataObject based on TableData. It is used in ResultSetProcessor for this.

+ +

TableRegistry Base Interface for Single/MultiTableRegistry.

+ +

SingleTableRegistry No functionality.

+ +

MultiTableRegistry Implements TableRegistry. Used when converting JDBC ResultSet of SQL SELECT into DataObjects.

+ +

DefaultConverter Implements Converter. In case of Blob database column type, returns byte[] for the column value when mapping from database data to property value.

+ +

ResultMetaData Holds complete ResultSet related metadata of the Query result- ResultSet, ColumnConverters, MappingWrapper, SDO Type Names, SDO Property Names, ResultSetShape for the ResultSet, Map containing Table Type > Column Property (equivalent to Database Table>Column). It provides various get methods on these members.

+ +

ResultSetRow A ResultSetRow is used to transform a single row of ResultSet into a set of DataObjects. It uses TableData as a intermediate place to keep Database Data for a Row , which is later used to form DataObject. It holds a List of all Table Data for the current row. This class is used in ResultSetProcessor.

+ +

TableData Holds single JDBC row for a Table and its Columns - tableName, list of PKs, Map of ColumnName->Data, if table has PK. Is used by DataObjectMaker to form DataObject based on Table Row.

+ +

ResultSetTypeMap Provides mapping from sql.Types to SDO Type. Used in ResultSetShape to populate SDO Type[] for all columns present in ResultSet.

+ +

FactoryRegistry Maintains registry of ChangeFactory. There is one FactoryRegistry for on DAS Config and Connection. It maintains a Map with entries of each SDO Type against ChangeFactory for current DAS Config+Connection.

+ +

ParameterImpl Holds values required for representing SQL statement/StoredProcedure parameter like name, index, value, SDO Type and columnConverter. Can have direction IN/OUT/IN-OUT. IN is default. OUT/IN-OUT is only in case of Stored Procedure.

+ +

ManagedParameterImpl Extends ParameterImpl. Expected to be integer or BigDecimal type, else exception is thrown. setValue() returns oldValue+1.

+ +

CollisionParameter Extends ParameterImpl. Design restricts setting value in CollisionParameter only once.

+ +

Parameters Maintains lists of parameters (used in SQL statements), IN/OUT parameters (used in stored procedures).

+ +

ResultSetShape This is an alternative to use ResultSetMetaData of the Query result. It can be used when some platforms like Oracle do not fully support MetaData. For a given SQL Query, this holds schemaName, tableName, columnName, SDO Column Type for each column in ResultSet. It has 2 constructors, one uses JDBC's ResultSetMetaData to form ResultSetShape and another uses DAS Config supplied ResultDescriptor to form ResultSetShape.

+ +

Statement Holds SQL String, JDBC connection, JDBC PreparedStatement and also state information whether the current statement is used by Pager.

+ +

SDODataTypeHelper Provides mapping between SDO's Type and JDBC's sql.Types.

+ +

SDODataTypes Uses SDO's TypeHelper to get SDO Type for given string.

+ +

QualifiedColumn Maintains schemaName, tableName and columnName for a Table's Column.

+ +

RelationshipWrapper Wrapper for DAS Config's <Relationship>. Only one method to return Collection of all FKColumns in a Relationship.

+ +

TableWrapper Wrapper on DAS Config's <Table>. Provides various get methods to get values of different elements and attributes within <Table>.

+ +

ConfigUtil Uses SDO's XMLHelper to load DAS Config Data Model in memory.

+ +

DataObjectUtil Provides utility methods for SDO DataObject like copying one DataObject into another, restoring Old Values of a DataObject using its SDO's ChangeSummary.

+ +

Configuration Schema(config.xsd)

+ +

Complete DAS Configuration follows.
+Convention Element <attribute> Child Element

+
+ + + + +
Config->
+<uri> Not used
+<dataObjectModel> Needs a valid value when creating static DataObjects.
+<databaseSchemaNameSupported> when true, multiple database schema under same database are supported
+Command-0..n
+Table-0..n
+Relationship-0..n
+ConnectionInfo-0..1
+ConnectionInfo->
+<dataSource>complete URL of data source
+<managedtx>if true, DAS manages database transaction
+ConnectionProperties-0..1
+ConnectionProperties->
+<driverClass>complete qualified class name
+<databaseURL>database URL
+<username> authentic database user
+<password> password for the user
+<loginTimeout>in milliseconds
+Command->
+<name>
+<SQL kind>Select/Update/Delete/Insert/procedure
+Parameter-0..n
+ResultDescriptor-0..n
+Parameter->
+<columnName> database table column name (no meaning when Command kind is procedure)
+<direction>IN/OUT (OUT makes sense when Command kind is "procedure")
+<index>used in set/getParameter() on Command based on direction (used when Command kind is procedure).
+ResultDescriptor-> Used as alternative to database result set metadata.
+<columnName> database table column name
+<tableName> database table name
+<schemaName> used when databaseSchemaNameSupported=true
+<columnType>SDO mapped data type
+Relationship->
+<name>
+<primaryKeyTable>
+<foreignKeyTable>
+<many> =true allows for 1:n relationship. If it is false, it's 1:1 relationship.
+<keyRestricted> In case of 1:1 relationship, if keyRestricted is not specified, the
+link (relationship) between the parent and child rows can be broken, by setting the
+parentKeyTable's row to null/deleting the row. Also, a different parent row can
+be associated to the child row, which has one pre-existing parent row association.
+If keyRestricted=true, this kind on change in existing relationship is not allowed,
+user will get exception 'Can not modify a one to one relationship that is key
+restricted'.
+KeyPair-0..n
+KeyPair->
+<PrimaryKeyColumn>database table column name
+<ForeignKeyColumn>database table column name
+Table->
+<tableName>Database table name
+<typeName>Data Object type name
+<schemaName> used when databaseSchemaNameSupported=true
+Column-0..n
+Create-0..1
+Update-0..1
+Delete-0..1
+Create->
+<sql> INSERT statement in PreparedStement format
+<parameters>space separated column names used in explicit INSERT
+Update->
+<sql> UPDATE statement in PreparedStement format
+<parameters> space separated column names used in explicit UPDATE
+Delete->
+<sql> DELETE statement in PreparedStement format
+<parameters> space separated column names used in explicit DELETE
+Column->
+<columnName> database table column name
+<propertyName> SDO data object's property name
+<converterClassName> if converter is used, this needs a valid class name
+<primaryKey>true if column is PK
+<generated> true if column value is database generated
+<collision> when true, during UPDATE statement generation, that column is
+included in the WHERE clause.(OCC feature)
+<managed> when true, during UPDATE statement generation, that column (needs
+to be BigDecimal) value is incremented by 1 and used in the SET clause in
+UPDATE.
+managed=true, is effective only when collision=true, else managed attribute value
+is ignored.
+
+ + +

Scalability Aspects

+ +

Java RDB DAS has exposed User Interfacefor end user. Other than that, from design perspective, many major DAS classes do not have associated interfaces and by design are tightly coupled with SDO and Database. It needs further enhancement on this line, especially when more DAS flavors are coming up as mentioned in Future. As DAS is a bridge between SOA based applications and backend Data Sources, the interfaces with SOA and Data Source need to be flexible. E.g. SDO/Some Other mechanism should be pluggable when using DAS as well as different technologies based Data Sources can be supported like XML files, LDAP based file system and so forth. Work is in-progress on this front.

+ +

Future

+ +

DAS is implemented in Java and C++ and both are integrated with SDO and support Relational Database based Data Source. There are other flavors of DAS coming up like LDAP DAS, XQuery DAS etc. These implementations will provide different ways to interface with the backend data source as their names suggest.

+ +

Samples

+ +

There are a couple of samples distributed to demonstrate working examples of using different DAS features. See User Guide/Samples for more details.

+ +

Terminology and Useful Links

+ +
+ + + + + + + + + + + + + + + + +
1 User Guide Readme
2 Getting Started Readme
3 All Useful Links Links
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-c-architecture.data/DAS_lite_diagram.jpg b/site/trunk/site-publish/rdb-das-c-architecture.data/DAS_lite_diagram.jpg new file mode 100644 index 0000000000..9aefc7f42d Binary files /dev/null and b/site/trunk/site-publish/rdb-das-c-architecture.data/DAS_lite_diagram.jpg differ diff --git a/site/trunk/site-publish/rdb-das-c-architecture.data/DAS_lite_diagram.jpg.jpeg b/site/trunk/site-publish/rdb-das-c-architecture.data/DAS_lite_diagram.jpg.jpeg new file mode 100644 index 0000000000..9a1189ebfb Binary files /dev/null and b/site/trunk/site-publish/rdb-das-c-architecture.data/DAS_lite_diagram.jpg.jpeg differ diff --git a/site/trunk/site-publish/rdb-das-c-architecture.html b/site/trunk/site-publish/rdb-das-c-architecture.html new file mode 100644 index 0000000000..76634fb4d5 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-architecture.html @@ -0,0 +1,103 @@ + + + + + + + RDB DAS C++ Architecture : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > DAS C++ Architecture Guide > DAS Lite C++ > RDB DAS C++ Architecture + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+ + + + +
Development
+ +

Class Diagram

+ +

    This class diagram represents the structure of DAS Lite C+. These classes were extracted from DAS Java and should be implemented in C+. The Connection class should be replaced for HDBC structure, from ODBC framework.
+!DAS_lite_diagram.

+
+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-c-changesummaryprocessing.html b/site/trunk/site-publish/rdb-das-c-changesummaryprocessing.html new file mode 100644 index 0000000000..ff2b60a39c --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-changesummaryprocessing.html @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS C++ - ChangeSummaryProcessing + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > RDB DAS C++ - ChangeSummaryProcessing + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

ChangeSummaryProcessing

+ +

SDO provides an important feature called the ChangeSummary. Using this feature, a graph of related DataObjects can track changes made to iteself. These changes include additions to the graph, deletions, DataObject property (attribute) changes and even changes to object relationships.

+ +

The RDB DAS leverages the SDO ChangeSummary to drive graph chages to a database. Here is a simple example:

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(getConnection());
+ CommandPtr select = das->createCommand("Select * from CUSTOMER where ID = 1");
+ DataObjectPtr root = select->executeQuery();

+ +

DataObjectPtr customer = root->getDataObject("CUSTOMER[1]");
+ customer->setCString("LASTNAME", "Pavick");
+ das->applyChanges(root);

+
+

The first half of this example creates a new read command and executes it. The result is a graph of DataObjects (in this case just one) represented by the containing "root".

+ +

The second half of the example makes modification to a single object in the graph and then calls the applyChanges() method. As part of the applyChanges processing, the das will scan the SDO ChangeSummary and notice the modified DataObject. It will then generate the UPDATE statement required to reflect the change to the database:

+
+
UPDATE CUSTOMER SET LASTNAME = 'Pavick' WHERE ID = 1
+
+
+

Notice that only a single column is updated rahther than all columns. This is because the SDO ChangeSummary has enough fidelity to track changes on a property-by-property bases and the das has the ability to generate partial updates.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-c-conventionoverconfiguration.html b/site/trunk/site-publish/rdb-das-c-conventionoverconfiguration.html new file mode 100644 index 0000000000..025a465e0b --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-conventionoverconfiguration.html @@ -0,0 +1,119 @@ + + + + + + + RDB DAS C++ - ConventionOverConfiguration : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS C++ - ConventionOverConfiguration + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

ConventionOverConfiguration

+ +

This concept reflects the notion that configuration (defining a bunch of stuff in a side file) can be avoided by following convention (adhering to prescribed patterns) and that this is generally a good thing. The RDB DAS has several reasonable conventions in place and using these can significantly reduce a developer's work-load.

+ +

As an example, the RDB DAS provides a straight-forward, one-to-one mapping of database tables to DataObject Types and from table columns to DataObject properties. If a user provides no mapping information to the contrary, a graph of DataObjects returned by the DAS will directly map Types/Properties to the Tables/Columns queried.

+ +

For example, consider a database with the following table:

+
+
TABLE CUSTOMER
+     ID         INTEGER
+     LASTNAME   VARCHAR(20)
+     ADDRESS    VARCHAR(30)
+
+

If an application uses the DAS to query this table with the following SQL statement:

+
+
SELECT * FROM CUSTOMER
+
+
+

The DAS will return a graph of DataObjects each of Type CUSTOMER and each instance in will have three properties: (ID, LASTNAME, ADDRESS). Here is the example code. Note that no configuration data is provided at all.

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(getConnection());
+ CommandPtr readCustomers = das->createCommand("select * from CUSTOMER");
+ DataObjectPtr root = readCustomers->executeQuery();

+
+

Another piece of convention followed by the RDB DAS has to do with database table keys. When asked to "apply changes", the RDB DAS scans the SDO ChangeSummery and generates the set of INSERT/UPDATE and DELETE statements needed to flush the graph changes to the database. To generate the correct statements the RDB DAS needs to know how a DataObject's properties map to a database table key. In typical Object/Relational mappings frameworks, this information is provided in a config file with something like this:

+
+
<Table tableName="COMPANY">
+      <Column columnName="ID" primaryKey="true"/>
+      .
+      .
+      .
+   </Table>
+
+
+

However, the RDB DAS understands is that, in the absence of user provided cofiguration data, a DataObject property named "ID" maps to a key column named "ID" in the database. If a developer follows this convention (naming key columns "ID") then this key-mapping information need not be specified in a configuration file. Convention Over Configuration strings are not case sensitives, so "ID", "Id", "iD" or"id" will be mapped as a primary key.

+ + +

The RDB DAS also has convention in place for mapping DataObject relationships. If a database table (yyy) has a column named xxx_ID then the DAS will assume, in the absence of config data to the contrary, that there is a one-to-many relationship from table xxx to table yyy and that the key column for table xxx is named "ID".

+ +

There is more "convention over configuration" coming. We are currently looking into support for optimistic concurrency control conventions and other areas.

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-c-foreignkeyrepresentationandmanagement.html b/site/trunk/site-publish/rdb-das-c-foreignkeyrepresentationandmanagement.html new file mode 100644 index 0000000000..fa8f302283 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-foreignkeyrepresentationandmanagement.html @@ -0,0 +1,86 @@ + + + + + + + RDB DAS C++ ForeignKeyRepresentationAndManagement : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS C++ ForeignKeyRepresentationAndManagement + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

ForeignKeyRepresentationAndManagement

+ +

Database table foreign keys map to DataObjects as relationships to other DataObjects. Consider two tables: DEPARTMENT and EMPLOYEE and assume the EMPLOYEE table has a FK column DEPT_ID that references a row in the DEPARTEMENT table.

+ +

If you use the DAS to read a particular department and all of its related employees then you will end up with a DEPARTMENT DataObject that has a property named "EMPLOYEE" that is a reference to a list of related EMPLOYEE DataObjects. You can navigate directly to the employees via this property like this: department->getList("EMPLOYEE").

+ +

As DEPARTMENT PK is stored on the DataObject, a reference to a EMPLOYEE DataObject  does not need to store the DEPARTMENT FK, because the DEPARTMENT FK and DEPARTMENT PK should be the same according to Referential Integrity (RI). So, if a EMPLOYEE is removed from a DEPARTMENT to another, when DAS apply the changes back to the database, it needs only to get the PK value from the new DEPARTENT that references the EMPLOYEE and set it on its DEPARTMENT FK.

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-c-optimisticconcurrencycontrol.html b/site/trunk/site-publish/rdb-das-c-optimisticconcurrencycontrol.html new file mode 100644 index 0000000000..8d926c8beb --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-optimisticconcurrencycontrol.html @@ -0,0 +1,96 @@ + + + + + + + RDB DAS C++ - OptimisticConcurrencyControl : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS C++ - OptimisticConcurrencyControl + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

OptimisticConcurrencyControl

+ +

The RDB DAS is intended for use in disconnected scenarios. When the DAS returns a graph of SDO DataObjects as the result of a query, there are no locks held on the underlying database and the data is no longer associated with any database connection or transaction. However, although locks are not held, the DAS does employ a mechanism called Optimistic Concurrency Control (OCC) to manage concurrency.

+ +

Basically, when OCC is being utilized, the DAS checks whether the state of the database has changed since the original data was read before applying any writes to the same location. For example, suppose that a DAS client reads a set of Customers, modifies one Customer and then attempts to write the change back to the database:

+
+

CommandPtr select = das->createCommand("Select * from CUSTOMER where LASTNAME = 'Williams'");
+ DataObjectPtr root = select->executeQuery();

+ +

DataObjectPtr customer = root->getDataObject("CUSTOMER[1]");
+ customer->setCString("LASTNAME", "Pavick");

+ +

//Some period of time passes in which "CUSTOMER[1]" could be modified by another process or application

+ +

das->applyChanges(root);

+
+

If OCC is enabled then as part of "applyChanges" processing the DAS will ensure that the table row representing "CUSTOMER[1]" has not been changed since it was read. This is possible because a feature of the original SDO graph is to "remember" its original state along with any changes that have been made. The DAS has access to this original state and uses it to create an "overqualified" update statement. When the DAS executes this update statement against the database, it will fail if the underlying data has been modified (a collision has occurred) and, if so, an exception will be thrown and the transaction rolled back. If there is no collision then the update statement execution succeeds and the change is applied.

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-c-partialupdate.html b/site/trunk/site-publish/rdb-das-c-partialupdate.html new file mode 100644 index 0000000000..26e87d10cc --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-partialupdate.html @@ -0,0 +1,92 @@ + + + + + + + RDB DAS C++ PartialUpdate : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS C++ PartialUpdate + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

PartialUpdate

+ +

The RDB DAS uses the SDO Change Summary to generate a set of database write operations. Rather than generated a statement to update all columns in a table that maps to a SDO DataObject Type, the DAS generates statements that update ony those columns that map to a modified DataObject property. For example, consider a Customer DataObject that has had the LastName property changed. The partial update statement generated by the DAS will look something like this:

+
+
UPDATE CUSTOMER SET LASTNAME = 'Tuscany' WHERE ID = '1'
+
+
+

Rather than a statement that updates all columns like this:

+
+
UPDATE CUSTOMER SET FIRSTNAME = 'APACHE', SET LASTNAME = 'TUSCANY', SET ADDRESS = 'USA', SET PHONE = '555-5555', SET AGE = '7', SET SHOESIZE = '15' WHERE ID = '1'
+
+
+

There are a couple of very good reasons for using a partial update approach. For one, a performance boost can be realized by applications writing to wide tables. For example, tables with over 100 columns are not unheard of. It can be a huge waste of resource to update 100 columns when only one was modified. Another reason for partial update is that some databases employ triggerson specific columns in a table. Partial updates are necessary when column triggers are employed to avoid tripping the trigger on every row update rather than only on updates to the specific column.

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-c-resultsetdrivendataobjecttypes.html b/site/trunk/site-publish/rdb-das-c-resultsetdrivendataobjecttypes.html new file mode 100644 index 0000000000..fd6e26d6a0 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-resultsetdrivendataobjecttypes.html @@ -0,0 +1,98 @@ + + + + + + + RDB DAS C++ ResultSetDrivenDataObjectTypes : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS C++ ResultSetDrivenDataObjectTypes + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

ResultSetDrivenDataObjectTypes 

+ +

RDB DAS uses the database metadata retrieved by ODBC driver to create the set of SDO Types used to construct the data graph returned as a result of a query. ODBC returns the data resulting from a query as a set of rows of column values. The metadata associated with this result set provides information about these values. Table name, column name, column type, etc. are all provided for each returned value.

+ +

For example, consider a database with the following table:

+
+
TABLE CUSTOMER
+      ID         INTEGER
+      LASTNAME   VARCHAR(20)
+      ADDRESS    VARCHAR(30)
+
+
+

The user might query the database like this:

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(getConnection());
+ CommandPtr readCustomers = das->createCommand("select * from CUSTOMER where LASTNAME = 'Williams'");
+ DataObjectPtr root = readCustomers0->executeQuery();

+
+

The DAS returns a graph of DataObjects each of Type CUSTOMER and each instance will have three properties: (ID, LASTNAME, ADDRESS). Since this example does not pass the DAS a set of SDO Types to use, the DAS creates the Types dynamically based on the metadata.

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-c-user-guide.html b/site/trunk/site-publish/rdb-das-c-user-guide.html new file mode 100644 index 0000000000..1933f9d1e4 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-user-guide.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS C++ - User Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +

Tuscany/TuscanyC++ /DAS C++ Overview/RDBDAS C++ User Guide

+ + +

Introduction

+ +

    This Guide provides user-level information describing the capabilities of the RDB DAS.

+ +

Concepts

+ +

    This section provides an overview of several main concepts that are key to understanding and working with the RDB DAS.

+ + + +

Capabilities (How to)

+ + + + +

Samples (See Capabilities In Use)

+ +

User can try the samples below to understand the above mentioned concepts and capabilities.

+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-c-workingwithbasiccrud.html b/site/trunk/site-publish/rdb-das-c-workingwithbasiccrud.html new file mode 100644 index 0000000000..c71c124c83 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-workingwithbasiccrud.html @@ -0,0 +1,123 @@ + + + + + + + RDB DAS C++ - WorkingWithBasicCrud : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS C++ - WorkingWithBasicCrud + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

WorkingWithBasicCrud

+ +

The RDB DAS provides a simple, command-oriented approach for reading and writing to the database.

+ +

A simple read

+ +

The following illustrates the simplest possible read:

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(getConnection());
+ CommandPtr readCustomers = das->createCommand("select * from CUSTOMER where ID = 22590");
+ DataObjectPtr root = readCustomers->executeQuery();

+
+

The first line creates an instance of the DAS that is primed with a given ODBC Connection object. The Connection can be procured in a number of different ways. This example is from the RDB DAS test suite and the implentation of getConnection() create a Connection object using a DSN string.

+ + +

The second line uses the das instance as a factory to create a Command instance from the provided SQL SELECT string. The third line executes the command which returns a "root" SDO DataObject. This root DataObject is sometimes referred to as a "dummy" root and acts as a container for the graph of data returned from the query. The RDB DAS always returns a dummy root from executing a query.

+ +

Once we have a handle to the root we can pull information from the returned customer object using the dynamic SDO apis like this:

+
+

DataObjectPtr cust = root->getDataObject("CUSTOMER[1]");
+ wstring name = cust->getCString("LASTNAME");

+
+

The first line retreives the first Customer from the root's list of returned Customers (since we queried by ID, thereis only one). The second line pulls the LASTNAME value from the customer.

+ +

A simple write

+ +

The DAS leverages the SDO Change Summary to provide a very simple mechanism to flush data changes back to the database. We can illustrate this by continuing the previous example:

+
+

customer->setCString("LASTNAME", "Pavick");
+ das->applyChanges(root);

+
+

The first line uses the SDO dynamic APIs to change the LASTNAME property of the Customer instance and the second line directs the das to flush graph changes back to the database. At this point, the das scans the SDO ChangeSummary and generates the required UPDATE statement necessary to synchronize this change with the database.

+ +

Although this simple example demonstrates a single property change to a single object, the das will process any numbers of changes made to any number of objects in a graph. Even if we read 1000 customers from the database and made several changes to each, flushing those changes back to the database is still just one call to das->applyChanges().

+ +

A write commmand

+ +

Writes to the database can also be done without using the change summary. To do this, we simply use the das instance as a factory to create a command initialized with a CREATE/UPDATE or DELETE statement.

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(getConnection());
+ CommandPtr insert = das->createCommand("insert into CUSTOMER values (10, 'Williams', '5555 Maine Ave.')");
+ insert->executeQuery();

+
+

Although allowing the das to generate write statements from the change summary is recommended, this low level ability to execute aribtrary SQL is another option.

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-c-workingwithoptimisticconcurrencycontrol.html b/site/trunk/site-publish/rdb-das-c-workingwithoptimisticconcurrencycontrol.html new file mode 100644 index 0000000000..96e836ce5a --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-workingwithoptimisticconcurrencycontrol.html @@ -0,0 +1,103 @@ + + + + + + + RDB DAS C++ WorkingWithOptimisticConcurrencyControl : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS C++ WorkingWithOptimisticConcurrencyControl + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

WorkingWithOptimisticConcurrencyControl

+ +

The RDB DAS provides a straightforward mechanism for support of [OptimisticConcurrencyControl\|RDB DAS C+\+ - OptimisticConcurrencyControl|RDB DAS C++ - OptimisticConcurrencyControl]. To enable OCC a client must designate an integer version column in the configuration (usually via a config xml file). The following example is an example of a cofig file that identifies a version column:<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+ +

<Command name="select book 1" SQL="select * from BOOK where BOOK_ID = 1" kind="Select"/>

+ +

<Table tableName="BOOK">
+ <Column columnName="BOOK_ID" primaryKey="true"/>
+ <Column columnName="OCC" collision="true" managed="true"/>
+ </Table>

+ +

</Config>

+ +

This line in the config file _<Column columnName="OCC" collision="true" managed="true"/>_designates the column named "OCC" as the version column and also sets "managed" to true. The "managed" attribute has to do with how the version column is changed. In order for OCC to work, some agent must change the value of the version column each time the row is modified. A new value in the version column is what tells the DAS that the row has been modified. If a version column is "managed" then the DAS is responsible for incrementing the value of the column each time some column in the row is changed. The other option is "managed= false" and in this case, the DAS will assume some other agent is responsible for updating the version column. This other agent is likely to be the client application itself or the database via a trigger or some other mechanism.

+ +

When applying changes made to a graph (see [ChangeSummaryProcessing\|RDB DAS C+\+ - ChangeSummaryProcessing|RDB DAS C++ - ChangeSummaryProcessing]), the DAS will throw an exception if any table row has been modified since the row was read. For example, if a DAS client reads a row representing a specific Customer and then tries to update that Customer, the DAS will throw an exception if the Customer has already been modified by some other agent. The following example illustrates applying changes and checking for a collision failure:DAS* das = DASImpl::getFactory().createDAS(Config("ManagedBooksConfig.xml"), getConnection());
+ // Read a book instance
+ CommandPtr select = das->getCommand("select book 1");
+ DataObjectPtr root = select->executeQuery();
+ DataObjectPtr book = root->getDataObject("BOOK1");
+ book->setInt("QUANTITY", 2);

+ +

// Try to apply changes and catch potential update collision
+ try

Unknown macro: { das.applyChanges(root); }
catch (DASOptimisticConcurrencyControlException&)
Unknown macro: { recover(); }

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-c-workingwithrelationships.html b/site/trunk/site-publish/rdb-das-c-workingwithrelationships.html new file mode 100644 index 0000000000..47f1f184b4 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-workingwithrelationships.html @@ -0,0 +1,117 @@ + + + + + + + RDB DAS C++ - WorkingWithRelationships : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS C++ - WorkingWithRelationships + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

WorkingWithRelationships

+ +

As mentioned elsewhere in this guide, the RDB DAS provides a simple, implicit mapping from SDO Types/Properties to Relational Tables/Columns. So, in the absence of configuration to the otherwise, reading a table named CUSTOMER with columns NAME and ADDRESS will result in a data graph containing SDO DataObjects of Type CUSTOMER with properties NAME and ADDRESS.

+ +

This is great for reading entities from a single table but clients often need to read data from related tables for example Customers and their related Orders. The RDB DAS can work with related database tables and reads that span tables produce graphs of related data objects. Continuing with our Customer->Order example, a client can read a set of Customers and related Orders by using a SELECT statement that includes a join as in the following example:

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(Config("CustomerOrderConfig.xml"), getConnection());
+ // Read some customers and related orders
+CommandPtr select = das->createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID WHERE CUSTOMER.ID = 1");

+ +

DataObjectPtr root = select->executeQuery();
+ DataObjectPtr customer = root->getDataObject("customer[1]");
+ DataObjectList& orders = customer->getList("orders");

+
+

You can see that the client can work with the data graph as a set of related objects. Once the application has a handle to a customer, it can reference that customers related orders by accessing the customers "orders" property.

+ +

Notice that the example provides a config file as part of creating the DAS. This file contains mapping information that defines to the DAS how the queried tables are related. Here are the contents of the config file:

+
+
<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd">
+
+     <Table tableName="CUSTOMER">
+        <Column columnName="ID" primaryKey="true"/>
+     </Table>
+
+     <Table tableName="ANORDER">
+        <Column columnName="ID" primaryKey="true"/>
+     </Table>
+
+     <Relationship name="orders" primaryKeyTable="CUSTOMER" foreignKeyTable="ANORDER" many="true">
+        <KeyPair primaryKeyColumn="ID" foreignKeyColumn="CUSTOMER_ID"/>
+     </Relationship>
+
+   </Config>
+
+
+

This config file specifies the primary keys of the related tables and then the relationship between them. It also provides a convenient name for the relationship. In short, this config specifies that the CUSTOMER table and ANORDER table are related via ANORDERs column named "CUSTOMER_ID" which references CUSTOMERS column named "ID". The name of the relationship is "orders"

+ +

As a side note, the config in this example is not required since the table definitions follow a "convention" recognized by the DAS. See [WorkingWithConventions\|RDB DAS C+\+ - WorkingWithConventions|RDB DAS C++ - WorkingWithConventions].

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-c-writeoperationordering.html b/site/trunk/site-publish/rdb-das-c-writeoperationordering.html new file mode 100644 index 0000000000..d24b227a28 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-c-writeoperationordering.html @@ -0,0 +1,89 @@ + + + + + + + RDB DAS C++ WriteOperationOrdering : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS C++ WriteOperationOrdering + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

 WriteOperationOrdering

+ +

Relational databases often use Referential Integrity (RI)constraints to maintain database consistency. When RI is enabled, database operations must be performed in a specific order that prevents invalid references. If this order is not adhered to then the database will throw an exception rather than let the write succeed.

+ +

When an application makes modifications to a data graph and then asks the RDB DAS to "apply changes", the DAS will create a "batch" of database writes that must be sorted and then executed in the correct order to avoid RI Constraint exceptions. A simple example will help here. Assume a database with two tables CUSTOMER and ORDER. Also assume that the ORDER table has a foreign keyreference to the CUSTOMER table. Now assume that the application has made modifications to a data graph that was retrieved by the DAS using a SELECT statement like the following:

+
+
SELECT * FROM CUSTOMER LEFT JOIN ORDER ON CUSTOMER.ID = ORDER.CUSTOMER_ID WHERE CUSTOMER.NAME = 'Tuscany'
+
+
+

The resulting data graph will contain all matching customers as well as their related orders. Now assume the application uses the SDO API's to delete some customer from the graph and then also deletes the related orders. Although the application deleted the customer first, the DAS must delete the orders first from the database since deleting the customer, with existing referencing orders, would violate the RI constraints and result in an exception.

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-class-diagram.data/ClassDiag.jpg b/site/trunk/site-publish/rdb-das-class-diagram.data/ClassDiag.jpg new file mode 100644 index 0000000000..8ae45037f9 Binary files /dev/null and b/site/trunk/site-publish/rdb-das-class-diagram.data/ClassDiag.jpg differ diff --git a/site/trunk/site-publish/rdb-das-class-diagram.data/ClassDiag.jpg.jpeg b/site/trunk/site-publish/rdb-das-class-diagram.data/ClassDiag.jpg.jpeg new file mode 100644 index 0000000000..74d0972fa5 Binary files /dev/null and b/site/trunk/site-publish/rdb-das-class-diagram.data/ClassDiag.jpg.jpeg differ diff --git a/site/trunk/site-publish/rdb-das-class-diagram.html b/site/trunk/site-publish/rdb-das-class-diagram.html new file mode 100644 index 0000000000..8f9314f4d2 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-class-diagram.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS class diagram + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > DAS General Menu > DAS RDB Menu > RDB DAS class diagram + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+ +
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-changesummaryprocessing.html b/site/trunk/site-publish/rdb-das-cpp-changesummaryprocessing.html new file mode 100644 index 0000000000..975972b91a --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-changesummaryprocessing.html @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - ChangeSummaryProcessing + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - ChangeSummaryProcessing + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

ChangeSummaryProcessing

+ +

SDO provides an important feature called the ChangeSummary. Using this feature, a graph of related DataObjects can track changes made to iteself. These changes include additions to the graph, deletions, DataObject property (attribute) changes and even changes to object relationships.

+ +

The RDB DAS leverages the SDO ChangeSummary to drive graph chages to a database. Here is a simple example:

+
+

DASImpl* das = DASImpl::getFactory().createDAS(getConnection());
+ CommandPtr select = das->createCommand("select * from CUSTOMER where ID = 1");
+ DataObjectPtr root = select->executeQuery();

+ +

DataObjectPtr customer = root->getDataObject("CUSTOMER[1]");
+ customer->setCString("LASTNAME", "Pavick");
+ das->applyChanges(root);

+ +

 delete das;

+
+

The first half of this example creates a new read command and executes it. The result is a graph of DataObjects (in this case just one) represented by the containing "root".

+ +

The second half of the example makes modification to a single object in the graph and then calls the applyChanges() method. As part of the applyChanges processing, the das will scan the SDO ChangeSummary and notice the modified DataObject. It will then generate the UPDATE statement required to reflect the change to the database:

+
+
UPDATE CUSTOMER SET LASTNAME = 'Pavick' WHERE ID = 1
+
+
+

Notice that only a single column is updated rather than all columns. This is because the SDO ChangeSummary has enough fidelity to track changes on a property-by-property bases and the das has the ability to generate partial updates.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-conventionoverconfiguration.html b/site/trunk/site-publish/rdb-das-cpp-conventionoverconfiguration.html new file mode 100644 index 0000000000..c6d68bcc8b --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-conventionoverconfiguration.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - ConventionOverConfiguration + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - ConventionOverConfiguration + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

ConventionOverConfiguration

+ +

This concept reflects the notion that configuration (defining a bunch of stuff in a side file) can be avoided by following convention (adhering to prescribed patterns) and that this is generally a good thing. The RDB DAS has several reasonable conventions in place and using these can significantly reduce a developer's work-load.

+ +

As an example, the RDB DAS provides a straight-forward, one-to-one mapping of database tables to DataObject Types and from table columns to DataObject properties. If a user provides no mapping information to the contrary, a graph of DataObjects returned by the DAS will directly map Types/Properties to the Tables/Columns queried.

+ +

For example, consider a database with the following table:

+
+
TABLE CUSTOMER
+     ID         INTEGER
+     LASTNAME   VARCHAR(20)
+     ADDRESS    VARCHAR(30)
+
+
+

If an application uses the DAS to query this table with the following SQL statement:

+
+
SELECT * FROM CUSTOMER
+
+
+

The DAS will return a graph of DataObjects each of Type CUSTOMER and each instance in will have three properties: (ID, LASTNAME, ADDRESS). Here is the example code. Note that no configuration data is provided at all.

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(getConnection());
+ CommandPtr readCustomers = das->createCommand("select * from CUSTOMER");
+ DataObjectPtr root = readCustomers->executeQuery();

+ +

 delete das;

+
+

Another piece of convention followed by the RDB DAS has to do with database table keys. When asked to "apply changes", the RDB DAS scans the SDO ChangeSummery and generates the set of INSERT/UPDATE and DELETE statements needed to flush the graph changes to the database. To generate the correct statements the RDB DAS needs to know how a DataObject's properties map to a database table key. In typical Object/Relational mappings frameworks, this information is provided in a config file with something like this:

+
+
<Table tableName="COMPANY">
+      <Column columnName="ID" primaryKey="true"/>
+      .
+      .
+      .
+   </Table>
+
+
+

However, the RDB DAS understands is that, in the absence of user provided cofiguration data, a DataObject property named "ID" maps to a key column named "ID" in the database. If a developer follows this convention (naming key columns "ID") then this key-mapping information need not be specified in a configuration file. Convention Over Configuration strings are not case sensitives, so "ID", "Id", "iD" or"id" will be mapped as a primary key.

+ +

The RDB DAS also has convention in place for mapping DataObject relationships. If a database table (yyy) has a column named xxx_ID then the DAS will assume, in the absence of config data to the contrary, that there is a one-to-many relationship from table xxx to table yyy and that the key column for table xxx is named "ID".

+ +

There is more "convention over configuration" coming. We are currently looking into support for optimistic concurrency control conventions and other areas.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-foreignkeyrepresentationandmanagement.html b/site/trunk/site-publish/rdb-das-cpp-foreignkeyrepresentationandmanagement.html new file mode 100644 index 0000000000..dad32628f2 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-foreignkeyrepresentationandmanagement.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - ForeignKeyRepresentationAndManagement + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - ForeignKeyRepresentationAndManagement + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

ForeignKeyRepresentationAndManagement

+ +

Database table foreign keys map to DataObjects as relationships to other DataObjects. Consider two tables: DEPARTMENT and EMPLOYEE and assume the EMPLOYEE table has a FK column DEPT_ID that references a row in the DEPARTEMENT table.

+ +

If you use the DAS to read a particular department and all of its related employees then you will end up with a DEPARTMENT DataObject that has a property named "EMPLOYEE" that is a reference to a list of related EMPLOYEE DataObjects. You can navigate directly to the employees via this property like this: department->getList("EMPLOYEE").

+ +

As DEPARTMENT PK is stored on the DataObject, a reference to a EMPLOYEE DataObject  does not need to store the DEPARTMENT FK, because the DEPARTMENT FK and DEPARTMENT PK should be the same according to Referential Integrity (RI). So, if a EMPLOYEE is removed from a DEPARTMENT to another, when DAS apply the changes back to the database, it needs only to get the PK value from the new DEPARTENT that references the EMPLOYEE and set it on its DEPARTMENT FK.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-optimisticconcurrencycontrol.html b/site/trunk/site-publish/rdb-das-cpp-optimisticconcurrencycontrol.html new file mode 100644 index 0000000000..f530979f31 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-optimisticconcurrencycontrol.html @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - OptimisticConcurrencyControl + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - OptimisticConcurrencyControl + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

OptimisticConcurrencyControl

+ +

The RDB DAS is intended for use in disconnected scenarios. When the DAS returns a graph of SDO DataObjects as the result of a query, there are no locks held on the underlying database and the data is no longer associated with any database connection or transaction. However, although locks are not held, the DAS does employ a mechanism called Optimistic Concurrency Control (OCC) to manage concurrency.

+ +

Basically, when OCC is being utilized, the DAS checks whether the state of the database has changed since the original data was read before applying any writes to the same location. For example, suppose that a DAS client reads a set of Customers, modifies one Customer and then attempts to write the change back to the database:

+
+

CommandPtr select = das->createCommand("Select * from CUSTOMER where LASTNAME = 'Williams'");
+ DataObjectPtr root = select->executeQuery();

+ +

DataObjectPtr customer = root->getDataObject("CUSTOMER[1]");
+ customer->setCString("LASTNAME", "Pavick");

+ +

//Some period of time passes in which "CUSTOMER[1]" could be modified by another process or application

+ +

das->applyChanges(root);

+
+

If OCC is enabled then as part of "applyChanges" processing the DAS will ensure that the table row representing "CUSTOMER[1]" has not been changed since it was read. This is possible because a feature of the original SDO graph is to "remember" its original state along with any changes that have been made. The DAS has access to this original state and uses it to create an "overqualified" update statement. When the DAS executes this update statement against the database, it will fail if the underlying data has been modified (a collision has occurred) and, if so, an exception will be thrown and the transaction rolled back. If there is no collision then the update statement execution succeeds and the change is applied.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-partialupdate.html b/site/trunk/site-publish/rdb-das-cpp-partialupdate.html new file mode 100644 index 0000000000..5a9d6d9b49 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-partialupdate.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - PartialUpdate + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - PartialUpdate + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

PartialUpdate

+ +

The RDB DAS uses the SDO Change Summary to generate a set of database write operations. Rather than generated a statement to update all columns in a table that maps to a SDO DataObject Type, the DAS generates statements that update ony those columns that map to a modified DataObject property. For example, consider a Customer DataObject that has had the LastName property changed. The partial update statement generated by the DAS will look something like this:

+
+
UPDATE CUSTOMER SET LASTNAME = 'Tuscany' WHERE ID = '1'
+
+
+

Rather than a statement that updates all columns like this:

+
+
UPDATE CUSTOMER SET FIRSTNAME = 'APACHE', SET LASTNAME = 'TUSCANY', SET ADDRESS = 'USA', SET PHONE = '555-5555', SET AGE = '7', SET SHOESIZE = '15' WHERE ID = '1'
+
+
+

There are a couple of very good reasons for using a partial update approach. For one, a performance boost can be realized by applications writing to wide tables. For example, tables with over 100 columns are not unheard of. It can be a huge waste of resource to update 100 columns when only one was modified. Another reason for partial update is that some databases employ triggerson specific columns in a table. Partial updates are necessary when column triggers are employed to avoid tripping the trigger on every row update rather than only on updates to the specific column.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-resultsetdrivendataobjecttypes.html b/site/trunk/site-publish/rdb-das-cpp-resultsetdrivendataobjecttypes.html new file mode 100644 index 0000000000..9e0692aade --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-resultsetdrivendataobjecttypes.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - ResultSetDrivenDataObjectTypes + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - ResultSetDrivenDataObjectTypes + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

ResultSetDrivenDataObjectTypes 

+ +

RDB DAS uses the database metadata retrieved by ODBC driver to create the set of SDO Types used to construct the data graph returned as a result of a query. ODBC returns the data resulting from a query as a set of rows of column values. The metadata associated with this result set provides information about these values. Table name, column name, column type, etc. are all provided for each returned value.

+ +

For example, consider a database with the following table:

+
+
TABLE CUSTOMER
+      ID         INTEGER
+      LASTNAME   VARCHAR(20)
+      ADDRESS    VARCHAR(30)
+
+
+

The user might query the database like this:

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(getConnection());
+ CommandPtr readCustomers = das->createCommand("select * from CUSTOMER where LASTNAME = 'Williams'");
+ DataObjectPtr root = readCustomers0->executeQuery();

+
+

The DAS returns a graph of DataObjects each of Type CUSTOMER and each instance will have three properties: (ID, LASTNAME, ADDRESS). Since this example does not pass the DAS a set of SDO Types to use, the DAS creates the Types dynamically based on the metadata.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-workingwithbasiccrud.html b/site/trunk/site-publish/rdb-das-cpp-workingwithbasiccrud.html new file mode 100644 index 0000000000..30703144df --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-workingwithbasiccrud.html @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - WorkingWithBasicCrud + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - WorkingWithBasicCrud + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

WorkingWithBasicCrud

+ +

The RDB DAS provides a simple, command-oriented approach for reading and writing to the database.

+ +

A simple read

+ +

The following illustrates the simplest possible read:

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(getConnection());
+ CommandPtr readCustomers = das->createCommand("select * from CUSTOMER where ID = 22590");
+ DataObjectPtr root = readCustomers->executeQuery();

+
+

The first line creates an instance of the DAS that is primed with a given ODBC Connection object. The Connection can be procured in a number of different ways. This example is from the RDB DAS test suite and the implentation of getConnection() create a Connection object using a DSN string.

+ +

The second line uses the das instance as a factory to create a Command instance from the provided SQL SELECT string. The third line executes the command which returns a "root" SDO DataObject. This root DataObject is sometimes referred to as a "dummy" root and acts as a container for the graph of data returned from the query. The RDB DAS always returns a dummy root from executing a query.

+ +

Once we have a handle to the root we can pull information from the returned customer object using the dynamic SDO apis like this:

+
+

DataObjectPtr cust = root->getDataObject("CUSTOMER[1]");
+ wstring name = cust->getCString("LASTNAME");

+
+

The first line retreives the first Customer from the root's list of returned Customers (since we queried by ID, thereis only one). The second line pulls the LASTNAME value from the customer.

+ +

A simple write

+ +

The DAS leverages the SDO Change Summary to provide a very simple mechanism to flush data changes back to the database. We can illustrate this by continuing the previous example:

+
+

customer->setCString("LASTNAME", "Pavick");
+ das->applyChanges(root);

+
+

The first line uses the SDO dynamic APIs to change the LASTNAME property of the Customer instance and the second line directs the das to flush graph changes back to the database. At this point, the das scans the SDO ChangeSummary and generates the required UPDATE statement necessary to synchronize this change with the database.

+ +

Although this simple example demonstrates a single property change to a single object, the das will process any numbers of changes made to any number of objects in a graph. Even if we read 1000 customers from the database and made several changes to each, flushing those changes back to the database is still just one call to das->applyChanges().

+ +

A write commmand

+ +

Writes to the database can also be done without using the change summary. To do this, we simply use the das instance as a factory to create a command initialized with a CREATE/UPDATE or DELETE statement.

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(getConnection());
+ CommandPtr insert = das->createCommand("insert into CUSTOMER values (10, 'Williams', '5555 Maine Ave.')");
+ insert->executeQuery();

+
+

Although allowing the das to generate write statements from the change summary is recommended, this low level ability to execute aribtrary SQL is another option.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-workingwithcompoundkeys.html b/site/trunk/site-publish/rdb-das-cpp-workingwithcompoundkeys.html new file mode 100644 index 0000000000..41545fe964 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-workingwithcompoundkeys.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - WorkingWithCompoundKeys + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - WorkingWithCompoundKeys + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

WorkingWithCompoundKeys

+ +

The RDB DAS provides the ability to work with single-column keys as well as keys composed of multiple columns (compound keys). RDB DAS clients can specify the primary key for a table as well as foreign keys that reference other tables. The primary key for a table can be identified to the DAS via configuration (typically via a configuration xml file). The following is an example config file that defines a compound primary key:

+
+
<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd">
+
+      <Table tableName="ORDERDETAILS">
+         <Column columnName="ORDERID" primaryKey="true"/>
+         <Column columnName="PRODUCTID" primaryKey="true"/>
+      </Table>
+
+   </Config>
+
+
+

Relationships between tables are in terms of primary keys and foreign keys and so foreign keys can also be compound. The following example illustrates a relationship using a compound foreign key:

+
+
<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd">
+
+      <Table tableName="ORDERDETAILS">
+         <Column columnName="ORDERID" primaryKey="true"/>
+         <Column columnName="PRODUCTID" primaryKey="true"/>
+      </Table>
+
+      <Table tableName="ORDERDETAILSDESC">
+         <Column columnName="ID" primaryKey="true"/>
+      </Table>
+
+      <Relationship name="orderDetailsDesc" primaryKeyTable="ORDERDETAILS"
+                     foriegnKeyTable="ORDERDETAILSDESC" many="true">
+         <KeyPair primaryKeyColumn="ORDERID" foriegnKeyColumn="ORDERID"  />
+         <KeyPair primaryKeyColumn="PRODUCTID" foreignKeyColumn="PRODUCTID" />
+      </Relationship>
+   </Config>
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-workingwithconventions.html b/site/trunk/site-publish/rdb-das-cpp-workingwithconventions.html new file mode 100644 index 0000000000..40b3df3f65 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-workingwithconventions.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - WorkingWithConventions + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - WorkingWithConventions + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

WorkingWithRelationships

+ +

As mentioned elsewhere in this guide, the RDB DAS provides a simple, implicit mapping from SDO Types/Properties to Relational Tables/Columns. So, in the absence of configuration to the otherwise, reading a table named CUSTOMER with columns NAME and ADDRESS will result in a data graph containing SDO DataObjects of Type CUSTOMER with properties NAME and ADDRESS.

+ +

This is great for reading entities from a single table but clients often need to read data from related tables for example Customers and their related Orders. The RDB DAS can work with related database tables and reads that span tables produce graphs of related data objects. Continuing with our Customer->Order example, a client can read a set of Customers and related Orders by using a SELECT statement that includes a join as in the following example:

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(Config("CustomerOrderConfig.xml"), getConnection());
+ // Read some customers and related orders
+CommandPtr select = das->createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID WHERE CUSTOMER.ID = 1");

+ +

DataObjectPtr root = select->executeQuery();
+ DataObjectPtr customer = root->getDataObject("customer[1]");
+ DataObjectList& orders = customer->getList("orders");

+ +

delete das; 

+
+

You can see that the client can work with the data graph as a set of related objects. Once the application has a handle to a customer, it can reference that customers related orders by accessing the customers "orders" property.

+ +

Notice that the example provides a config file as part of creating the DAS. This file contains mapping information that defines to the DAS how the queried tables are related. Here are the contents of the config file:

+
+
<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+     <Table tableName="CUSTOMER">
+        <Column columnName="ID" primaryKey="true"/>
+     </Table>
+
+     <Table tableName="ANORDER">
+        <Column columnName="ID" primaryKey="true"/>
+     </Table>
+
+     <Relationship name="orders" primaryKeyTable="CUSTOMER" foreignKeyTable="ANORDER" many="true">
+        <KeyPair primaryKeyColumn="ID" foreignKeyColumn="CUSTOMER_ID"/>
+     </Relationship>
+
+   </Config>
+
+
+

This config file specifies the primary keys of the related tables and then the relationship between them. It also provides a convenient name for the relationship. In short, this config specifies that the CUSTOMER table and ANORDER table are related via ANORDERs column named "CUSTOMER_ID" which references CUSTOMERS column named "ID". The name of the relationship is "orders"

+ +

As a side note, the config in this example is not required since the table definitions follow a "convention" recognized by the DAS. See []WorkingWithConventions.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-workingwithnamemapping.html b/site/trunk/site-publish/rdb-das-cpp-workingwithnamemapping.html new file mode 100644 index 0000000000..f9565dfdbc --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-workingwithnamemapping.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - WorkingWithNameMapping + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - WorkingWithNameMapping + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

WorkingWithNameMapping

+ +

The default behavior for the RDB DAS is to map database names to SDO names. So, if a CUTSOMER table is read from the database then each row will be represented as a CUSTOMER DataObject. Likewise, if the CUSTOMER tabel has columns (ID, LASTNAME, ADDRESS) then CUSTOMER DataObject instances will have properties (ID, LASTNAME, ADDRESS). Database Table names map to DataObject Type names and database column names map to DataObject property names.

+ +

This implicit mapping of database and SDO names woks well but some developers will want explicit name mapping that allows the database and SDO names to vary. One typical example is that the database table and column names will be automatically converted to uppercase when DAS generates the SDO Types, but a developer might want to work with SDO Types and properties that are camelcased. So, database names CUSTOMER and LASTNAME might map to SDO names Customer and lastName.

+ +

The RDB DAS allows this type of explicit mapping via configuration (usually in the form of a XML config file). The following example illstrates the use of this feature:

+
+
DAS* das = DASImpl::getFactory().createDAS(Config("BooksConfigWithAlias.xml"), getConnection());
+
+   CommandPtr select = das->getCommand("get book by ID equal 1");
+
+   DataObjectPtr root = select->executeQuery();
+   wstring author = root->getCString("Book[1]/Writer"));    delete das; 
+
+
+

Here is the associated configuration file:

+
+
<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd">
+
+       <Command name="get all books" SQL="SELECT * FROM BOOK"/>
+
+       <Command name="get Cat in the Hat" SQL="SELECT * FROM BOOK WHERE NAME = 'Cat in the Hat'"/>
+
+       <Command name="get book by ID equal 1" SQL="SELECT * FROM BOOK WHERE BOOK.BOOK_ID = 1"/>
+
+       <Table tableName="BOOK" typeName="Book">
+           <Column columnName="BOOK_ID" primaryKey="true"/>
+           <Column columnName="AUTHOR" propertyName="Writer"/>
+           <Column columnName="OCC" collision="true"/>
+       </Table
+   </Config>
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-workingwithoptimisticconcurrencycontrol.html b/site/trunk/site-publish/rdb-das-cpp-workingwithoptimisticconcurrencycontrol.html new file mode 100644 index 0000000000..eda3f5a0c2 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-workingwithoptimisticconcurrencycontrol.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - WorkingWithOptimisticConcurrencyControl + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - WorkingWithOptimisticConcurrencyControl + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

WorkingWithOptimisticConcurrencyControl

+ +

The RDB DAS provides a straightforward mechanism for support of OptimisticConcurrencyControl. To enable OCC a client must designate an integer version column in the configuration (usually via a config xml file). The following example is an example of a cofig file that identifies a version column:<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+ +

<Command name="select book 1" SQL="select * from BOOK where BOOK_ID = 1" kind="Select"/>

+ +

<Table tableName="BOOK">
+ <Column columnName="BOOK_ID" primaryKey="true"/>
+ <Column columnName="OCC" collision="true" managed="true"/>
+ </Table>

+ +

</Config>

+ +

This line in the config file _<Column columnName="OCC" collision="true" managed="true"/>_designates the column named "OCC" as the version column and also sets "managed" to true. The "managed" attribute has to do with how the version column is changed. In order for OCC to work, some agent must change the value of the version column each time the row is modified. A new value in the version column is what tells the DAS that the row has been modified. If a version column is "managed" then the DAS is responsible for incrementing the value of the column each time some column in the row is changed. The other option is "managed= false" and in this case, the DAS will assume some other agent is responsible for updating the version column. This other agent is likely to be the client application itself or the database via a trigger or some other mechanism.

+ +

When applying changes made to a graph (see ChangeSummaryProcessing), the DAS will throw an exception if any table row has been modified since the row was read. For example, if a DAS client reads a row representing a specific Customer and then tries to update that Customer, the DAS will throw an exception if the Customer has already been modified by some other agent. The following example illustrates applying changes and checking for a collision failure:

+
+
DAS* das = DASImpl::getFactory().createDAS(Config("ManagedBooksConfig.xml"), getConnection());
+
+ // Read a book instance
+ CommandPtr select = das->getCommand("select book 1");
+ DataObjectPtr root = select->executeQuery();
+ DataObjectPtr book = root->getDataObject("BOOK1");
+ book->setInt("QUANTITY", 2); // Try to apply changes and catch potential update collision
+ 
+ try {    das.applyChanges(root);    } catch (DASOptimisticConcurrencyControlException&) { recover(); }
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-workingwithrelationships.html b/site/trunk/site-publish/rdb-das-cpp-workingwithrelationships.html new file mode 100644 index 0000000000..36f8bbe02c --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-workingwithrelationships.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - WorkingWithRelationships + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - WorkingWithRelationships + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

WorkingWithRelationships

+ +

As mentioned elsewhere in this guide, the RDB DAS provides a simple, implicit mapping from SDO Types/Properties to Relational Tables/Columns. So, in the absence of configuration to the otherwise, reading a table named CUSTOMER with columns NAME and ADDRESS will result in a data graph containing SDO DataObjects of Type CUSTOMER with properties NAME and ADDRESS.

+ +

This is great for reading entities from a single table but clients often need to read data from related tables for example Customers and their related Orders. The RDB DAS can work with related database tables and reads that span tables produce graphs of related data objects. Continuing with our Customer->Order example, a client can read a set of Customers and related Orders by using a SELECT statement that includes a join as in the following example:

+
+

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(Config("CustomerOrderConfig.xml"), getConnection());
+ // Read some customers and related orders
+CommandPtr select = das->createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID WHERE CUSTOMER.ID = 1");

+ +

DataObjectPtr root = select->executeQuery();
+ DataObjectPtr customer = root->getDataObject("CUSTOMER[1]");
+ DataObjectList& orders = customer->getList("ORDERS");

+ +

delete das; 

+
+

You can see that the client can work with the data graph as a set of related objects. Once the application has a handle to a customer, it can reference that customers related orders by accessing the customers "orders" property.

+ +

Notice that the example provides a config file as part of creating the DAS. This file contains mapping information that defines to the DAS how the queried tables are related. Here are the contents of the config file:

+
+
<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd">
+
+     <Table tableName="CUSTOMER">
+        <Column columnName="ID" primaryKey="true"/>
+     </Table>
+
+     <Table tableName="ANORDER">
+        <Column columnName="ID" primaryKey="true"/>
+     </Table>
+
+     <Relationship name="orders" primaryKeyTable="CUSTOMER" foreignKeyTable="ANORDER" many="true">
+        <KeyPair primaryKeyColumn="ID" foreignKeyColumn="CUSTOMER_ID"/>
+     </Relationship>
+
+   </Config>
+
+
+

This config file specifies the primary keys of the related tables and then the relationship between them. It also provides a convenient name for the relationship. In short, this config specifies that the CUSTOMER table and ANORDER table are related via ANORDERs column named "CUSTOMER_ID" which references CUSTOMERS column named "ID". The name of the relationship is "orders"

+ +

As a side note, the config in this example is not required since the table definitions follow a "convention" recognized by the DAS. See WorkingWithConventions.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-cpp-writeoperationordering.html b/site/trunk/site-publish/rdb-das-cpp-writeoperationordering.html new file mode 100644 index 0000000000..a9db00817d --- /dev/null +++ b/site/trunk/site-publish/rdb-das-cpp-writeoperationordering.html @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS CPP - WriteOperationOrdering + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS C++ > DAS C++ Documentation Menu > RDB DAS C++ - User Guide > RDB DAS CPP - WriteOperationOrdering + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

 WriteOperationOrdering

+ +

Relational databases often use Referential Integrity (RI)constraints to maintain database consistency. When RI is enabled, database operations must be performed in a specific order that prevents invalid references. If this order is not adhered to then the database will throw an exception rather than let the write succeed.

+ +

When an application makes modifications to a data graph and then asks the RDB DAS to "apply changes", the DAS will create a "batch" of database writes that must be sorted and then executed in the correct order to avoid RI Constraint exceptions. A simple example will help here. Assume a database with two tables CUSTOMER and ORDER. Also assume that the ORDER table has a foreign keyreference to the CUSTOMER table. Now assume that the application has made modifications to a data graph that was retrieved by the DAS using a SELECT statement like the following:

+
+
SELECT * FROM CUSTOMER LEFT JOIN ORDER ON CUSTOMER.ID = ORDER.CUSTOMER_ID WHERE CUSTOMER.NAME = 'Tuscany'
+
+
+

The resulting data graph will contain all matching customers as well as their related orders. Now assume the application uses the SDO API's to delete some customer from the graph and then also deletes the related orders. Although the application deleted the customer first, the DAS must delete the orders first from the database since deleting the customer, with existing referencing orders, would violate the RI constraints and result in an exception.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-faq.html b/site/trunk/site-publish/rdb-das-faq.html new file mode 100644 index 0000000000..4dd198d214 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-faq.html @@ -0,0 +1,121 @@ + + + + + + + + RDB DAS - FAQ + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java Project > RDB DAS > RDB DAS - FAQ + +
+ + + + + + +
+
+ +
+ +
+ Added by haleh mahbod, last edited by haleh mahbod on Apr 06, 2007 + +
+ +
+
+

This page will contain frequently asked questions about RDB DAS. Please use the following template to further enhance this page.

+ +

question text

+

answer

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-ideas-wish-lists-todos-etc.html b/site/trunk/site-publish/rdb-das-ideas-wish-lists-todos-etc.html new file mode 100644 index 0000000000..a1d1083ecc --- /dev/null +++ b/site/trunk/site-publish/rdb-das-ideas-wish-lists-todos-etc.html @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS - Ideas, Wish Lists, Todos, etc + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - Ideas, Wish Lists, Todos, etc + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + +
Development
+ +

Overview

+ +

This is a place to store ideas, wish list and todos and anything that we might review while working for the future of DAS.

+ +

Whish List: JIRAS

+ + + + +

Functionality

+ +
    +
  • Core functions +
      +
    • Optimisc concurrency control +
        +
      • managed collision column (DLINK "version" column)
      • +
      +
    • +
    • Static dataObjects - Relationships +
        +
      • 1..1 +
          +
        • "unique" attribute (similar to DLINQ)
        • +
        +
      • +
      +
    • +
    • Explicit resultSetShape definition
    • +
    +
  • +
+ + +
    +
  • Miscellaneous +
      +
    • Samples +
        +
      • Better BigBank integration
      • +
      • Other samples to exercise DAS festures
      • +
      +
    • +
    • GraphHelper +
        +
      • emptyGraph()
      • +
      +
    • +
    +
  • +
+ + +
    +
  • Future releases +
      +
    • C++ DAS implementation
    • +
    +
  • +
+ + +

Possible DAS sub-projects

+ + + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-java-beta1-incubating.html b/site/trunk/site-publish/rdb-das-java-beta1-incubating.html new file mode 100644 index 0000000000..3dbccc4e1d --- /dev/null +++ b/site/trunk/site-publish/rdb-das-java-beta1-incubating.html @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS Java beta1-incubating + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS Releases > RDB DAS Java beta1-incubating + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

RDB DAS Java beta1-incubating

+ +

RDB DAS Java beta1-incubating was released in June 2007.

+ +

This release represents a significant milestone on the road to Apache Tuscany DAS 1.0 release.

+
    +
  • DAS Core features +
      +
    • Optimisc concurrency control
    • +
    • Default OCC policy (all OCC-capable fileds used in overquaified "where") (TUSCANY-866)
    • +
    • DAS Configuration supports ConnectionInfo for J2SE environment (TUSCANY-948)
    • +
    • DAS supports queries that reference tables in multiple schema (TUSCANY-952)
    • +
    +
  • +
+ + +
    +
  • DAS Samples +
      +
    • Creation and initialization of database for DAS samples (TUSCANY-863)
    • +
    • Sample with Advanced DAS features Demo (TUSCANY-800)
    • +
    • Sample with J2SE application using DAS (samples/customer)
    • +
    +
  • +
+ + +
    +
  • Documentation +
      +
    • More sections added to DAS User's Guide
    • +
    • Javadoc available
    • +
    • Added FAQs
    • +
    • Added "Starting with DAS" Guide to help user get started with using different DAS features
    • +
    • Added DAS Architecture Guide
    • +
    +
  • +
+ + +

For full detail about the release see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-das-beta1-incubating.zip ASC MD5
Source apache-tuscany-das-beta1-incubating-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-das-beta1-incubating.tar.gz ASC MD5
Source apache-tuscany-das-beta1-incubating-src.tar.gz ASC MD5
+
+ + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-java-das-beta1-release.html b/site/trunk/site-publish/rdb-das-java-das-beta1-release.html new file mode 100644 index 0000000000..112ce90a1c --- /dev/null +++ b/site/trunk/site-publish/rdb-das-java-das-beta1-release.html @@ -0,0 +1,822 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS - Java DAS Beta1 Release + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - Java DAS Beta1 Release + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + +
Development
+ + + +

Ongoing work items.

+ +

Remaining Items

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Item Details Status
JIRA-863 Canned DB creation Done
JIRA-800 DAS Features Demo Done
JIRA-952 Multiple-schema support Done
JIRA-1295 Memory leak in DAS and test framework defered
JIRA-1300 Integrate Companyweb sample with DBConfig Done
JIRA-1304 OCC Error when multiple updates Done
JIRA-1323 dbConfig testcase failure after SDO commits Done
+
+ + + +

Documentation

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Num Title Details Status
1 user guide update some pages are added/update, some work is still pending in-progress
2 architecture guide   To be done
3 deveoper guide   in-progress
4 starting with DAS   under review
5 http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS-javadoc give link to be done
6 What's new? list new features in this release under review
7 Downloads add links after 1st RC to be done
8 New-Useful Links   to be done
9 http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+-+Releases Make this page in sync with what is going out in M3 to be done
10 http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+Java+-+FAQ add details to be done
11 Capabilities(How To)
+ -DAS support for J2SE environment
+ -content for Explicit Create/Update/Delete
+ -content for Explicit Result Set Shape definition
+ -Graph Merger
  under review
12 Samples (See Capabilities In Use)   under review
+
+ + +

Other

+
+ + + + + + + + + + + + + + + + + + + +
Num Title Details Status
1 Distribution Layout   In-progress
2 RAT   to be done
+
+ + +

Unresolved Java DAS JIRAs

+ +

The table below contains the listed JIRAs for Java DAS that are actually(04/18/2007) unresolved. It must be decided which JIRA should be resolved before M3 release and which should be postponed for next.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T Patch Info Key Summary Assignee Reporter Pr Status Res Created Updated
Bug

TUSCANY-1027 DAS should throw a meaningful exception if applyChanges process encounters a DO with no defined PK Unassigned Kevin Williams   Open UNRESOLVED 04/Jan/07 10/Jan/07
Improvement
TUSCANY-864 Better integration between SCA and DAS Unassigned Luciano Resende   Open UNRESOLVED 16/Oct/06 09/Nov/06
Bug
TUSCANY-961 DAS: Using deprected SDO method causes Type lookup failure Brent Daniel Brent Daniel   Open UNRESOLVED 30/Nov/06 17/Jan/07
Test
TUSCANY-1010 Add/Enhance explicit CUD testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1009 Adding/Enhancing name mapping testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1014 Add/Enhance convention over configuration testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1012 Add/Enhance explicit resultSetShape testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1011 Add/Enhance external transactions test cases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1015 Add/Enhance graphhelper testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Improvement
TUSCANY-986 DAS integration with SDO 2.1 APIs Unassigned Kevin Williams   Open UNRESOLVED 11/Dec/06 17/Jan/07
Improvement
TUSCANY-915 User level documentation Unassigned Kevin Williams   Open UNRESOLVED 10/Nov/06 17/Jan/07
New Feature

TUSCANY-916 OCC recovery framework Brent Daniel Kevin Williams   Open UNRESOLVED 10/Nov/06 17/Jan/07
Bug
TUSCANY-953 Invalid data graph results in NPE on applyChanges Unassigned Kevin Williams   Open UNRESOLVED 28/Nov/06 17/Jan/07
Bug
TUSCANY-542 Pager API needs some work Kevin Williams Kevin Williams   Open UNRESOLVED 13/Jul/06 17/Jan/07
Improvement
TUSCANY-233 Case sensitivity DAS config file Unassigned Rick Rineholt   Open UNRESOLVED 26/Apr/06 17/Jan/07
Sub-task Patch Available TUSCANY-904 TUSCANY-864
+ Expose DAS as SCA container
Unassigned Amita Vadhavkar   Open UNRESOLVED 07/Nov/06 27/Feb/07
+
+ + +

In-Progress Java DAS JIRAs

+ +

The table below contains the list of JIRAs for DAS that are in-progess(04/20/2007) and will be resolved in next couple of days. Removed the same ones from Unresolved Java DAS JIRAs.

+
+ + + + + + + + + + + + + + +
T Patch Info Key Summary Assignee Reporter Pr Status Res Created Updated
+
+ + +

Resolved Java DAS JIRAs

+ +

The table below contains the listed JIRAs for DAS Java that were resolved/closed since last release: Java DAS M2 released on November 20th, 2006. It will be included as the fixed bugs and new features in Java DAS M3 release documentation.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T Patch Info Key Summary Assignee Reporter Pr Status Res Created Updated
New Feature
TUSCANY-866 DAS Use overqualified update by default Brent Daniel Brent Daniel   Resolved Fixed 17/Oct/06 27/Nov/06
Improvement
TUSCANY-954 Need to throw an exception when users try to set a relationship and FK property Brent Daniel Brent Daniel   Resolved Fixed 28/Nov/06 04/Dec/06
Bug
TUSCANY-968 Invalid FK columns causes NPE Brent Daniel Brent Daniel   Resolved Fixed 04/Dec/06 04/Dec/06
Bug
TUSCANY-1087 DAS should not commit individual commands as part of applyChanges Unassigned Kevin Williams   Closed Fixed 01/Feb/07 01/Feb/07
Improvement Patch Available TUSCANY-841 Need a test for relationships formed by compound keys Luciano Resende Kevin Williams   Resolved Fixed 14/Oct/06 24/Mar/07
New Feature
TUSCANY-898 Expose DAS as a SCA service Luciano Resende Luciano Resende   Resolved Fixed 05/Nov/06 03/Jan/07
Bug
TUSCANY-971 DAS may not now depend on CPL if EMF has completed migration to EPL Luciano Resende Luciano Resende   Resolved Fixed 05/Dec/06 05/Dec/06
Bug
TUSCANY-937 Multiple test failures while connecting with MySQL Brent Daniel Luciano Resende   Resolved Fixed 16/Nov/06 21/Nov/06
Improvement
TUSCANY-948 Consider DAS config connection info for J2SE environment Luciano Resende Kevin Williams   Resolved Fixed 22/Nov/06 10/Feb/07
Test
TUSCANY-1008 Adding/Enhancing PartialUpdates testcases Luciano Resende Luciano Resende   Resolved Fixed 21/Dec/06 21/Dec/06
New Feature
TUSCANY-1041 DAS Needs a JavaDoc distribution Luciano Resende Luciano Resende   Resolved Fixed 09/Jan/07 09/Jan/07
Improvement
TUSCANY-886 DAS distributions should unpack into it's own directory based on the version Luciano Resende Luciano Resende   Resolved Fixed 28/Oct/06 04/Dec/06
Bug
TUSCANY-441 Remove DAS use of Class variable to trigger logging. Luciano Resende Kevin Williams   Resolved Fixed 05/Jun/06 07/Mar/07
Bug
TUSCANY-957 DAS generates invalid INSERT statement when no properties are set on the new DO Brent Daniel Kevin Williams   Resolved Fixed 29/Nov/06 05/Dec/06
Test
TUSCANY-1013 Add/Enhance configHelper testcases Luciano Resende Luciano Resende   Resolved Fixed 21/Dec/06 09/Mar/07
Improvement
TUSCANY-939 DAS Should throw an exception when ResultSetMetadata is invalid Brent Daniel Kevin Williams   Resolved Fixed 17/Nov/06 27/Nov/06
Improvement Patch Available TUSCANY-863 CompanyWeb DAS Sample should create and initialize the canned database when app is loaded by first time and db is not available Luciano Resende Luciano Resende   Resolved Fixed 16/Oct/06 29/May/07
Bug Patch Available TUSCANY-952 DAS must support queries that reference tables in different "schemas" Unassigned Kevin Williams   Resolved Fixed 28/Nov/06 29/May/07
New Feature Patch Available TUSCANY-800 Introduce new DAS Sample APP to demonstrate DAS advanced features Luciano Resende Luciano Resende   Resolved FIXED 05/Oct/06 08/June/07
+
+ + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-java-das-m3-release.html b/site/trunk/site-publish/rdb-das-java-das-m3-release.html new file mode 100644 index 0000000000..f6480df3a5 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-java-das-m3-release.html @@ -0,0 +1,770 @@ + + + + + + + RDB DAS - Java DAS M3 Release : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java Project > RDB DAS > RDB DAS - Java DAS M3 Release + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + +
Development
+ +

Unresolved Java DAS JIRAs

+ +

The table below contains the listed JIRAs for Java DAS that are actually(04/18/2007) unresolved. It must be decided which JIRA should be resolved before M3 release and which should be postponed for next.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T Patch Info Key Summary Assignee Reporter Pr Status Res Created Updated
Bug

TUSCANY-1027 DAS should throw a meaningful exception if applyChanges process encounters a DO with no defined PK Unassigned Kevin Williams   Open UNRESOLVED 04/Jan/07 10/Jan/07
Improvement
TUSCANY-864 Better integration between SCA and DAS Unassigned Luciano Resende   Open UNRESOLVED 16/Oct/06 09/Nov/06
Bug
TUSCANY-961 DAS: Using deprected SDO method causes Type lookup failure Brent Daniel Brent Daniel   Open UNRESOLVED 30/Nov/06 17/Jan/07
Test
TUSCANY-1010 Add/Enhance explicit CUD testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1009 Adding/Enhancing name mapping testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1014 Add/Enhance convention over configuration testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1012 Add/Enhance explicit resultSetShape testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1011 Add/Enhance external transactions test cases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Test
TUSCANY-1015 Add/Enhance graphhelper testcases Unassigned Luciano Resende   Open UNRESOLVED 21/Dec/06 16/Jan/07
Improvement
TUSCANY-986 DAS integration with SDO 2.1 APIs Unassigned Kevin Williams   Open UNRESOLVED 11/Dec/06 17/Jan/07
Improvement
TUSCANY-915 User level documentation Unassigned Kevin Williams   Open UNRESOLVED 10/Nov/06 17/Jan/07
New Feature

TUSCANY-916 OCC recovery framework Brent Daniel Kevin Williams   Open UNRESOLVED 10/Nov/06 17/Jan/07
Bug
TUSCANY-953 Invalid data graph results in NPE on applyChanges Unassigned Kevin Williams   Open UNRESOLVED 28/Nov/06 17/Jan/07
Bug
TUSCANY-542 Pager API needs some work Kevin Williams Kevin Williams   Open UNRESOLVED 13/Jul/06 17/Jan/07
Improvement
TUSCANY-233 Case sensitivity DAS config file Unassigned Rick Rineholt   Open UNRESOLVED 26/Apr/06 17/Jan/07
Sub-task Patch Available TUSCANY-904 TUSCANY-864
+ Expose DAS as SCA container
Unassigned Amita Vadhavkar   Open UNRESOLVED 07/Nov/06 27/Feb/07
+ +

In-Progress Java DAS JIRAs

+ +

The table below contains the list of JIRAs for DAS that are in-progess(04/20/2007) and will be resolved in next couple of days. Removed the same ones from Unresolved Java DAS JIRAs.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T Patch Info Key Summary Assignee Reporter Pr Status Res Created Updated
New Feature Patch Available TUSCANY-800 Introduce new DAS Sample APP to demonstrate DAS advanced features Luciano Resende Luciano Resende   Open UNRESOLVED 05/Oct/06 10/Apr/07
Improvement Patch Available TUSCANY-863 CompanyWeb DAS Sample should create and initialize the canned database when app is loaded by first time and db is not available Luciano Resende Luciano Resende   Open UNRESOLVED 16/Oct/06 17/Apr/07
Bug Patch Available TUSCANY-952 DAS must support queries that reference tables in different "schemas" Unassigned Kevin Williams   Open UNRESOLVED 28/Nov/06 01/Mar/07
+ +

Resolved Java DAS JIRAs

+ +

The table below contains the listed JIRAs for DAS Java that were resolved/closed since last release: Java DAS M2 released on November 20th, 2006. It will be included as the fixed bugs and new features in Java DAS M3 release documentation.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T Patch Info Key Summary Assignee Reporter Pr Status Res Created Updated
New Feature
TUSCANY-866 DAS Use overqualified update by default Brent Daniel Brent Daniel   Resolved Fixed 17/Oct/06 27/Nov/06
Improvement
TUSCANY-954 Need to throw an exception when users try to set a relationship and FK property Brent Daniel Brent Daniel   Resolved Fixed 28/Nov/06 04/Dec/06
Bug
TUSCANY-968 Invalid FK columns causes NPE Brent Daniel Brent Daniel   Resolved Fixed 04/Dec/06 04/Dec/06
Bug
TUSCANY-1087 DAS should not commit individual commands as part of applyChanges Unassigned Kevin Williams   Closed Fixed 01/Feb/07 01/Feb/07
Improvement Patch Available TUSCANY-841 Need a test for relationships formed by compound keys Luciano Resende Kevin Williams   Resolved Fixed 14/Oct/06 24/Mar/07
New Feature
TUSCANY-898 Expose DAS as a SCA service Luciano Resende Luciano Resende   Resolved Fixed 05/Nov/06 03/Jan/07
Bug
TUSCANY-971 DAS may not now depend on CPL if EMF has completed migration to EPL Luciano Resende Luciano Resende   Resolved Fixed 05/Dec/06 05/Dec/06
Bug
TUSCANY-937 Multiple test failures while connecting with MySQL Brent Daniel Luciano Resende   Resolved Fixed 16/Nov/06 21/Nov/06
Improvement
TUSCANY-948 Consider DAS config connection info for J2SE environment Luciano Resende Kevin Williams   Resolved Fixed 22/Nov/06 10/Feb/07
Test
TUSCANY-1008 Adding/Enhancing PartialUpdates testcases Luciano Resende Luciano Resende   Resolved Fixed 21/Dec/06 21/Dec/06
New Feature
TUSCANY-1041 DAS Needs a JavaDoc distribution Luciano Resende Luciano Resende   Resolved Fixed 09/Jan/07 09/Jan/07
Improvement
TUSCANY-886 DAS distributions should unpack into it's own directory based on the version Luciano Resende Luciano Resende   Resolved Fixed 28/Oct/06 04/Dec/06
Bug
TUSCANY-441 Remove DAS use of Class variable to trigger logging. Luciano Resende Kevin Williams   Resolved Fixed 05/Jun/06 07/Mar/07
Bug
TUSCANY-957 DAS generates invalid INSERT statement when no properties are set on the new DO Brent Daniel Kevin Williams   Resolved Fixed 29/Nov/06 05/Dec/06
Test
TUSCANY-1013 Add/Enhance configHelper testcases Luciano Resende Luciano Resende   Resolved Fixed 21/Dec/06 09/Mar/07
Improvement
TUSCANY-939 DAS Should throw an exception when ResultSetMetadata is invalid Brent Daniel Kevin Williams   Resolved Fixed 17/Nov/06 27/Nov/06
+ +

The above tables will be updated when JIRA status changes in ASF-JIRA

+ +

Ongoing work items.

+ +

Code

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Num Title Details Status
1JIRA-863Canned DB creation committed, status needs to reflect this in ASF-JIRA site
2JIRA-800DAS Features Demo final review in-progress, no pending issues
3JIRA-952Multiple-schema support depends on JIRA-1295, code changes for JIRA-952 are reviewed
4JIRA-1295Memory leak in DAS and test framework in-progress
+ +

Documentation

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Num Title Details Status
1user guide update some pages are added/update, some work is still pendingin-progress
2architecture guide To be done
3deveoper guide in-progress
4starting with DAS under review
5http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS-javadocgive linkto be done
6What's new?list new features in this releaseunder review
7Downloadsadd links after 1st RCto be done
8New-Useful Links to be done
9http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+-+ReleasesMake this page in sync with what is going out in M3to be done
10http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+Java+-+FAQadd detailsto be done
11Capabilities(How To)
+-DAS support for J2SE environment
+-content for Explicit Create/Update/Delete
+-content for Explicit Result Set Shape definition
+-Graph Merger
 under review
12Samples (See Capabilities In Use) under review
+ +

Note In FAQs can add below and more...
+Can add below list:-
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg04822.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg16300.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg16711.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg01162.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg16520.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg00589.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg06635.html
+ How to create non containment association ?
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg12091.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg17136.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg05860.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg17146.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg04672.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg09827.html
+ http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg09571.html

+ +

Other

+ + + + + + + + + + + + + + + + + + + +
Num Title Details Status
1Distribution Layout In-progress
2RAT to be done
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-java-faq.html b/site/trunk/site-publish/rdb-das-java-faq.html new file mode 100644 index 0000000000..9c8bf1c080 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-java-faq.html @@ -0,0 +1,202 @@ + + + + + + + RDB DAS Java - FAQ : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java Project > RDB DAS > RDB DAS Java - FAQ + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + +
Development
+ +

This page will contain frequently asked questions about RDB DAS. Please use the following template to further enhance this page.

+ +

How does DAS implement internal/external transaction management?

+ +

In DAS Config, element ConnectionInfo has a boolean attribute managedtx (default true).
+If it is true, DAS runtime manages transaction otherwise the caller is supposed to manage
+transaction.
+In cases, when the connection is externally passed (config file does not specify ConnectionInfo),
+the managedtx attribute default value ( true) is assumed.

+ + +

If two tables have a parent-child relationship but the query result set contains only columns from one table, does RDB DAS result DataGraph contain data from both parent and child table?

+ +

The RDB DAS will only populate a graph with data returned from the used query. If you want a
+graph that contains data from related tables then the query provided must return that data
+(typically a join). The relationship tests in the test suite demonstrate this.

+ +

If two tables have a parent-child relationship and the query result set contains columns from both tables, is the relationship analyzed by DAS when,

+
    +
  1. DAS Config explicitly defines relationship
  2. +
  3. DAS Config does not explicitly define relationship?
  4. +
+ + +

DAS supports some Convention over Configuration when it comes to supporting implied relationships.
+http://cwiki.apache.org/confluence/display/TUSCANY/ConventionOverConfiguration
+http://cwiki.apache.org/confluence/display/TUSCANY/ForeignKeyRepresentationAndManagement
+http://cwiki.apache.org/confluence/display/TUSCANY/WorkingWithRelationships
+Also, see test: ImpliedRelationshipTests.testAddNewOrder()

+ +

So, in summary, if the query has a where clause specifying the relationship, there is no need to
+have any relationship definition in config file as long as the column names (PK, FK) follow the
+naming conventions.

+ +

In the absence of naming conventions, the relationship needs to be explicitly defined in the config,
+so that the query result is mapped against it and the necessary result DataGraph is represented
+reflecting the relationship.

+ +

As DAS (and SDO) support disconnected processing of data, how does DAS achieve mapping between DataGraph properties and Database Metadata like table name, column name etc.?

+ +

DAS supports this mapping using DAS Config and in the absence of that using Convention over Configuration.
+http://cwiki.apache.org/confluence/display/TUSCANY/ConventionOverConfiguration. DataObject graph
+change summary contains old as well as modified values. Using this change summary and config/conventions DAS can support the necessary mapping.

+ +

Does DAS support working with tables that have no PK defined?

+ +

DAS mandates PK for any table, either specified in DAS Config or by following convention. In absence
+of both of these, DAS throws an error.

+ +

How does DAS support database generated keys?

+ +

This is supported for INSERT operation - either explicit insert (SQL INSERT statement as DAS command) or generated insert.
+In case of generated insert, the DAS config needs to have Column element having attribute "generated" set to "true". This attribute is not needed in case of explicit insert.
+In case of generated insert, "generated" attribute from Column element in Config is checked to form the appropriate insert statement. The jdbc supported PreparedStatement.getGeneratedKeys() is used to fetch the values being generated by the database. In case of generated insert, the value thus returned is set in DataGraph.

+ +

This feature is not supported on all versions of Oracle drivers, so DAS does not use this functionality if database is Oracle.

+ +

What manipulations does DAS provide for DataObjects?

+ +

DAS can get DataObject using Dynamic approach or Static approach. In Dynamic approach the query result set is used to form the DataObject. In static approach, DAS Config's DataObjectModel attribute needs a valid value, using which the DataObjects are created.
+For more details see http://cwiki.apache.org/confluence/display/TUSCANY/Graph+Merge.

+ +

When there is 1:n relationship between 2 tables, say Department:Employee, and there is a DataGraph with this relationship present, can one Employee DataObject from this graph be associated with 2 different Department DataObjects, using DAS Java Client? i.e. can 1:n relationship be changed to n:n using SDO?

+ +

No, when this is attempted, SDO maintains referential integrity. e.g.
+If you have a dept1 with emp1 and then execute:
+ dep2.getEmployees.add(emp1)
+the graph will automatically remove emp1 from dep1's list of employees and
+you are left with valid 1:m relationship.

+ +

What is Optimistic Concurrency Control?

+

See details on http://cwiki.apache.org/confluence/display/TUSCANY/OptimisticConcurrencyControl

+ +

By default OCC is ON. With this, in generated UPDATE statement, any column undergoing change also gets included in the WHERE clause.

+ +

Other than that, in DAS Config, in <Table> element , the <Column> element can have two boolean attributes:- managed(default true), collision

+ +

When collision=true for a column, during UPDATE statement generation, that column is included
+in the WHERE clause.

+ +

When managed=true for a column, during UPDATE statement generation, that column (needs to be BigDecimal) value is incremented by 1 and used in the SET clause in UPDATE.

+ +

managed=true, is effective only when collision=true, else managed attribute value is ignored.

+ +

What is the purpose of many and keyRestricted attributes in Relationship?

+ +

many=true allows for 1:n relationship. If it is false, it's 1:1 relationship. In case of 1:1 relationship, if keyRestricted is not specified, the link (relationship) between the parent and child rows can be broken, by setting the parentKeyTable's row to null/deleting the row. Also, a different parent row can be associated to the child row, which has one pre-existing parent row association. If keyRestricted=true, this kind on change in existing relationship is not allowed, user will get exception 'Can not modify a one to one relationship that is key restricted'.

+ +

In case of parent-child relationship, how to traverse back and forth?

+ +

If by Convention over Configuration/from DAS Config there is a name to a relationship, the opposite relationship is named with _opposite appended to it.

+ +

e.g. Consider two tables (CUSTOMER, ORDER) each with a PK named "ID". Also, ORDER has a FK named CUSTOMER_ID. The DAS recognizes this convention and assumes a one:many relationship between CUSTOMER and ORDER. In the fully dynamic case, a read of CUSTOMER and ORDER tables using a join will result in a graph of CUSTOMER DataObjects along with their related ORDERS.(name of relationship is ORDERS now.)

+ +

The property for the CUSTOMER Types list of ORDERs is named "ORDER" so:
+ DataObject order = cust.getDataObject("ORDER1");
+The name of the property in the ORDER Type that references the parent CUSTOMER, is
+ DataObject cust = order.getDataObject("CUSTOMER_opposite")

+ +

what is paging capability?

+ +

What is currently available in DAS is detailed on http://cwiki.apache.org/confluence/display/TUSCANY/WorkingWithPaging
+Other than sequential page access(pager.next(), pager.previous()), random access is also
+allowed using pager.getPage(number).

+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das-java-previous-releases.html b/site/trunk/site-publish/rdb-das-java-previous-releases.html new file mode 100644 index 0000000000..424b354e9a --- /dev/null +++ b/site/trunk/site-publish/rdb-das-java-previous-releases.html @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS Java Previous Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS Releases > RDB DAS Java Previous Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
+ + + + + + + + + + + + + +
  Release Name
1.
DAS Java Incubator-M2 (November, 2006)
2.
DAS Java Incubating-M1 (June, 2006)
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-java.data/RDB DAS.PNG b/site/trunk/site-publish/rdb-das-java.data/RDB DAS.PNG new file mode 100644 index 0000000000..4ac629f9e3 Binary files /dev/null and b/site/trunk/site-publish/rdb-das-java.data/RDB DAS.PNG differ diff --git a/site/trunk/site-publish/rdb-das-java.data/RDB DAS.PNG.jpeg b/site/trunk/site-publish/rdb-das-java.data/RDB DAS.PNG.jpeg new file mode 100644 index 0000000000..0ee10a255d Binary files /dev/null and b/site/trunk/site-publish/rdb-das-java.data/RDB DAS.PNG.jpeg differ diff --git a/site/trunk/site-publish/rdb-das-java.data/rdbDAS.gif b/site/trunk/site-publish/rdb-das-java.data/rdbDAS.gif new file mode 100644 index 0000000000..7c96e84552 Binary files /dev/null and b/site/trunk/site-publish/rdb-das-java.data/rdbDAS.gif differ diff --git a/site/trunk/site-publish/rdb-das-java.data/rdbDAS.gif.jpeg b/site/trunk/site-publish/rdb-das-java.data/rdbDAS.gif.jpeg new file mode 100644 index 0000000000..abb57b0ada Binary files /dev/null and b/site/trunk/site-publish/rdb-das-java.data/rdbDAS.gif.jpeg differ diff --git a/site/trunk/site-publish/rdb-das-java.html b/site/trunk/site-publish/rdb-das-java.html new file mode 100644 index 0000000000..c5b2266ee4 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-java.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS Java + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ +
+ +

What is RDB Data Access Service?

+ +

RDB DAS provides 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 SDO Data Object types/properties.

+ +

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 a DAS client. 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.

+ + +

+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-releases.html b/site/trunk/site-publish/rdb-das-releases.html new file mode 100644 index 0000000000..87fc7fad61 --- /dev/null +++ b/site/trunk/site-publish/rdb-das-releases.html @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + +
+ + +
+ +
+
+

+ + + + +
Development
+ +

Latest Release

+

RDB DAS Java beta1-incubating

+ +

RDB DAS Java beta1-incubating was released in June 2007.

+ +

This release represents a significant milestone on the road to Apache Tuscany DAS 1.0 release.

+
    +
  • DAS Core features +
      +
    • Optimisc concurrency control
    • +
    • Default OCC policy (all OCC-capable fileds used in overquaified "where") (TUSCANY-866)
    • +
    • DAS Configuration supports ConnectionInfo for J2SE environment (TUSCANY-948)
    • +
    • DAS supports queries that reference tables in multiple schema (TUSCANY-952)
    • +
    +
  • +
+ + +
    +
  • DAS Samples +
      +
    • Creation and initialization of database for DAS samples (TUSCANY-863)
    • +
    • Sample with Advanced DAS features Demo (TUSCANY-800)
    • +
    • Sample with J2SE application using DAS (samples/customer)
    • +
    +
  • +
+ + +
    +
  • Documentation +
      +
    • More sections added to DAS User's Guide
    • +
    • Javadoc available
    • +
    • Added FAQs
    • +
    • Added "Starting with DAS" Guide to help user get started with using different DAS features
    • +
    • Added DAS Architecture Guide
    • +
    +
  • +
+ + +

For full detail about the release see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-das-beta1-incubating.zip ASC MD5
Source apache-tuscany-das-beta1-incubating-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-das-beta1-incubating.tar.gz ASC MD5
Source apache-tuscany-das-beta1-incubating-src.tar.gz ASC MD5
+
+ + +

Previous Releases

+

Here is a complete list of all Apache Tuscany RDB DAS downloads:

+
+ + + + + + + + + + + + + +
  Release Name
1.
DAS Java Incubator-M2 (November, 2006)
2.
DAS Java Incubating-M1 (June, 2006)
+
+
+ +

old content

+

Latest Release

+

RDB DAS Java beta1 incubating

+

RDB DAS Java beta1 was release in June 2007.
+This release represents a significant milestone on the road to Apache Tuscany DAS 1.0 release.
+For full detail about the release see the RELEASE_NOTES and CHANGES files.

+ +
    +
  • DAS Core features +
      +
    • Optimisc concurrency control
    • +
    • Default OCC policy (all OCC-capable fileds used in overquaified "where") (TUSCANY-866)
    • +
    • DAS Configuration supports ConnectionInfo for J2SE environment (TUSCANY-948)
    • +
    • DAS supports queries that reference tables in multiple schema (TUSCANY-952)
    • +
    +
  • +
+ + +
    +
  • DAS Samples +
      +
    • Creation and initialization of database for DAS samples (TUSCANY-863)
    • +
    • Sample with Advanced DAS features Demo (TUSCANY-800)
    • +
    • Sample with J2SE application using DAS (samples/customer)
    • +
    +
  • +
+ + +
    +
  • Documentation +
      +
    • More sections added to DAS User's Guide
    • +
    • Javadoc available
    • +
    • Added FAQs
    • +
    • Added "Starting with DAS" Guide to help user get started with using different DAS features
    • +
    • Added DAS Architecture Guide
    • +
    +
  • +
+ + +

Previous Releases

+

Here is a complete list of all Apache Tuscany RDB DAS features for old releases.

+ +

Java M2 Release - DAS Key Features

+ +
    +
  • DAS Core features +
      +
    • MySQL support
    • +
    • Static Data Objects
    • +
    • Dynamic root for static graphs
    • +
    • "Unique" attribute on relationships
    • +
    • Explicit ResultSet shape definition
    • +
    • Improved logging
    • +
    • Programmatic Configuration
    • +
    • Helper for empty SDO Graph +
        +
      • Column named "ID" is the PK
      • +
      • Column named "xxx_ID" is the FK to table "xxx"
      • +
      +
    • +
    • Convention over configuration
    • +
    +
  • +
+ + +
    +
  • DAS Samples +
      +
    • Tomcat integration and automated DAS samples testing (htmlUnit)
    • +
    • DAS Samples now have all dependencies and source code inside the sample war
    • +
    • M2 JIRAS
    • +
    +
  • +
+ + +

Java M1 Release - DAS Key Features

+ +
    +
  • RDB CRUD operations in terms of SDO DataObjects
  • +
  • Optimistic concurrency control
  • +
  • Generated database IDs
  • +
  • Stored procedures
  • +
  • Paging API
  • +
  • 1..1 and 1..n relationships
  • +
  • Partial row updates
  • +
+ + +

Java M3 Release - DAS Key Features (Old Proposed Planning - NEED REVIEW)

+ +
    +
  • DAS Core features +
      +
    • Optimisc concurrency control +
        +
      • Support for OCC recovery (TUSCANY-916) - Default OCC policy (all OCC-capable fileds used in overquaified "where")
      • +
      +
    • +
    • More performant pager (TUSCANY-542) - Review MySQL Support (TUSCANY-937)
    • +
    • SCA Intgration +
        +
      • Expose DAS as a Pojo SCA Service (impl.java) (TUSCANY-898) - Container-based DAS (impl.das) (TUSCANY-904)
      • +
      +
    • +
    +
  • +
+ + +
    +
  • DAS Samples +
      +
    • Sample consuming DAS as a Pojo SCA service - Sample consuming container-based DAS
    • +
    +
  • +
+ + +
    +
  • Documentation +
      +
    • Continue to work on DAS User's guide - HOW-TO describing how to build a DAS Application
    • +
    +
  • +
+ + +
    +
  • Infrastructure +
      +
    • Automate release distribution process
    • +
    +
  • +
+ + + +
+ + + + + + + + + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-transaction-control.html b/site/trunk/site-publish/rdb-das-transaction-control.html new file mode 100644 index 0000000000..26c0a65abd --- /dev/null +++ b/site/trunk/site-publish/rdb-das-transaction-control.html @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS - Transaction Control + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > RDB DAS - Transaction Control + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + +
Transaction Management in RDB-Data Access Service (RDB DAS)
+ +

Overview

+ +

A typical enterprise application accesses and stores information in one or more databases. Data integrity is
+the most essential aspect of correct business functioning. Transactions control the concurrent access of data
+by multiple programs. In the event of a system failure, transactions make sure that after recovery the data will
+ be in a consistent state. This document helps to understand transaction management in RDB DAS.

+ +

One DAS instance is always associated with one database and one Connection. DAS participates in
+A> DAS managed and B> Externally managed transactions.

+ +

DAS managed transactions

+ +

By default, the RDB DAS assumes responsibility for managing transaction boundaries by executing commit and
+rollback operations against the database. A configuration attribute managedtx is assumed with default value
+TRUE. This signals DAS to control the transaction. The boundaries of these transactions are as follows:

+ +

Reading Data
+Queries to the database are always made by calling DAS command's "executeQuery()" method. The associated
+transaction lives for the duration of this method execution. That is, the transaction can be thought to start
+when control is transferred to "executeQuery" and the transaction ends just prior to return from this method.

+ +

Writing Data
+Writes can be accomplished by two DAS APIs. First is calling the DAS "execute()" command against a command the
+will perform write operations and, in this case, the transaction boundaries are the same as read queries. That
+is the transaction life matches the life of the "execute" processing. If the method returns without exception
+then the application can assume that any changes were successfully committed to the database. If an exception is
+returned then the changes will have all been rolled back.

+ +

The second API used by clients is the DAS applyChanges() method (see ChangeSummaryProcessing). Again, the
+boundaries of the transaction match the boundaries of the call to the method. The DAS will create a set of
+INSERT/UPDATE and DELETE statements to flush the graph changes to the database and all of these statements
+will be executed as part of a single transaction. If the method returns without exception then the application
+can assume that all changes were successfully committed to the database. If an exception is returned then the changes
+will have all been rolled back.

+ +

Use

+ +

This mode is useful for simple data operations, where there is no need of having group of SQL statements or group of DAS
+Commands in one transaction unit. At the maximum one applyChanges() call having multiple INSERT/UPDATE/DELETE executes
+under one transaction. Cases where multiple applyChanges() method calls or multiple executeQuery() method calls are
+required to be part of one transaction, this mode is not useful. In this mode, the database Connection can be internally
+obtained using DAS Config ConnectionInfo settings or database Connection can also be passed from the client to DAS instance.
+When DAS obtains database Connection internally, in Config ConnectionInfo, settings can either specify DataSource name or
+Database Driver related information. Typical examples -

+
    +
  • When using Tomcat based web app with DAS, Tomcat configured DataSource name is set in the DAS Config.
  • +
  • When using J2SE application client with DAS, Database Driver related information from DAS Config is used to form a database Connection.
  • +
+ + +

When multiple SQL statements/DAS commands need to be part of one transaction and also when multiple DAS instances need to participate
+in one transaction, the other mode "Externally managed transactions" is useful.

+ +

Externally managed transactions

+ +

The RDB DAS provides a straightforward mechanism for working with external transactions. In this mode, DAS is configured to not issue
+commit/rollback. This behavior is needed to have the DAS participate in a larger transaction since some external party is responsible
+for these actions.

+ +

Use

+ +

The scope of transaction support is a blend of Supports and Mandatory transaction attributes in J2EE scenario. i.e. DAS will use the
+client's transaction if it is available. DAS does not throw exception if external client transaction is not available, but the end result
+without external transaction is unpredictable. So, when using DAS in this mode, client needs to ensure availability of external transaction
+encompassing required DAS/s commands. External transaction can be JDBC transaction or JTA transaction.

+ +

When JDBC transaction, it is possible to group multiple Commands from single DAS instance in one transaction. Also nested transactions using
+multiple DAS instances can be carried out. AS JTA does not support nested transactions, if nested transactions is the requirement, JDBC
+Transactions should be used. For example:-

+ +
+
Das1 = DAS.FACTORY.createDAS(jdbcconn1);
+Das2 = DAS.FACTORY.createDAS(jdbcconn2);
+
+try {
+     doSomeDAS1Stuff();
+        doSomeDAS2Stuff();
+        jdbcconn2.commit();
+     doSomeDAS1Stuff();
+     jdbcconn1.commit();
+} catch (AnyException ex) {
+     jdbcconn1.rollback();
+     jdbcconn2.rollback();
+}
+
+
+ +

When JTA transaction, multiple units like JMS, DAS1(derbydatabase1), DAS2(derbydatabase2/mysqldatabase2) can be part of single transaction.
+See example:-

+ +
+
tx.begin();
+try {
+     doSomeJMSStuff();
+     doSomeDAS1Stuff();
+     doSomeDAS2Stuff();
+     tx.commit();
+} catch (AnyException ex) {
+     tx.rollback();
+}
+
+
+ +

In both the examples above, the DAS1 and DAS2 have been configured to not manage transactions since this is handled by the calling program.
+The DAS is set to behave this way by a piece of configuration (typically via a configuration xml file). The following config file snippet
+illustrates this setting:

+ +
+
<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+        <ConnectionInfo managedtx="false"/>
+
+</Config>
+
+
+ +

Note When using DAS with "Externally managed transactions", it is required by the client to pass appropriate Connection object to DAS
+instance. There is no meaning to forming Connection internally in DAS using Config info, as such Connections will not be part of external
+Transaction Control.

+ +

Methods Not Used in Externally managed transactions
+DAS does not invoke any method that might interfere with the transaction boundaries set by the Transaction Manager. The list of prohibited
+methods follows:

+
    +
  • The commit, setAutoCommit, and rollback methods of java.sql.Connection
  • +
  • The getUserTransaction method of javax.ejb.EJBContext
  • +
  • Any method of javax.transaction.UserTransaction
  • +
+ + +

Note DAS never allows AutoCommit(TRUE) for the Connection it is using and throws Exception if this mode is detected.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-user-guide.html b/site/trunk/site-publish/rdb-das-user-guide.html new file mode 100644 index 0000000000..058b32ae4d --- /dev/null +++ b/site/trunk/site-publish/rdb-das-user-guide.html @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + Apache Tuscany : RDB DAS - User Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +

Tuscany/TuscanyJava/DAS Java Overview/RDBDAS Java User Guide

+ + +

Introduction

+ +

    This Guide provides user-level information describing the capabilities of the RDB DAS.

+ +

Concepts

+ +

    This section provides an overview of several main concepts that are key to understanding and working with the RDB DAS.

+ + + +

Capabilities (How to)

+ + + + +

Samples (See Capabilities In Use)

+ +

User can try the samples below to understand the above mentioned concepts and capabilities.

+ + + +

To download go to Downloads

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/rdb-das-users-guide.html b/site/trunk/site-publish/rdb-das-users-guide.html new file mode 100644 index 0000000000..9ce467ccbc --- /dev/null +++ b/site/trunk/site-publish/rdb-das-users-guide.html @@ -0,0 +1,119 @@ + + + + + + + + RDB DAS - Users Guide + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java Project > RDB DAS > RDB DAS - Users Guide + +
+ + + + + + +
+
+ +
+ +
+ Added by Luciano Resende, last edited by Luciano Resende on Apr 27, 2007 + +
+ +
+
+

Place holder to migrate the DAS Users guide from old wiki.
+http://wiki.apache.org/ws/Tuscany/TuscanyJava/DAS_Java_Overview/RDBDAS_Java_User_Guide

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/rdb-das.data/RDB DAS.PNG b/site/trunk/site-publish/rdb-das.data/RDB DAS.PNG new file mode 100644 index 0000000000..4ac629f9e3 Binary files /dev/null and b/site/trunk/site-publish/rdb-das.data/RDB DAS.PNG differ diff --git a/site/trunk/site-publish/rdb-das.data/RDB DAS.PNG.jpeg b/site/trunk/site-publish/rdb-das.data/RDB DAS.PNG.jpeg new file mode 100644 index 0000000000..0ee10a255d Binary files /dev/null and b/site/trunk/site-publish/rdb-das.data/RDB DAS.PNG.jpeg differ diff --git a/site/trunk/site-publish/rdb-das.data/rdbDAS.gif b/site/trunk/site-publish/rdb-das.data/rdbDAS.gif new file mode 100644 index 0000000000..7c96e84552 Binary files /dev/null and b/site/trunk/site-publish/rdb-das.data/rdbDAS.gif differ diff --git a/site/trunk/site-publish/rdb-das.data/rdbDAS.gif.jpeg b/site/trunk/site-publish/rdb-das.data/rdbDAS.gif.jpeg new file mode 100644 index 0000000000..abb57b0ada Binary files /dev/null and b/site/trunk/site-publish/rdb-das.data/rdbDAS.gif.jpeg differ diff --git a/site/trunk/site-publish/rdb-das.html b/site/trunk/site-publish/rdb-das.html new file mode 100644 index 0000000000..f3f788fc14 --- /dev/null +++ b/site/trunk/site-publish/rdb-das.html @@ -0,0 +1,111 @@ + + + + + + + RDB DAS : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + +
Development
+ + +

What is RDB Data Access Service?

+ +

RDB DAS provides 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 SDO Data Object types/properties.

+ +

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 a DAS client. 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.

+ + +

+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/related-projects.html b/site/trunk/site-publish/related-projects.html new file mode 100644 index 0000000000..0ca996dbd3 --- /dev/null +++ b/site/trunk/site-publish/related-projects.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : related projects + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > related projects + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/release-process.html b/site/trunk/site-publish/release-process.html new file mode 100644 index 0000000000..971b8adfbd --- /dev/null +++ b/site/trunk/site-publish/release-process.html @@ -0,0 +1,212 @@ + + + + + + + Release Process : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > DAS Overview > Release Process + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Starting a Release for DAS Subproject

+

This is work in progress. At this point, thoughts are put together to review with the community. Please help to complete this

+ +

What's a Release

+ +

The ASF release definition basically says that any artifact that is made available for people outside of the Apache Tuscany project is considered a release. The Release process usually consist of preparing the contents of the release on the project dev-list, voting release candidate(s) and, because Tuscany is still under Incubation, asking the iPMC to approve the release after it has already been approved on the project development community.

+ +

Prerequisites

+ +

DAS releases are dependent on SDO release. Make sure we have a SDO release to base this release on.

+ +

Starting the release process

+
    +
  1. Identify a release manager on devlist.
  2. +
  3. The release manager initiates the discussion on the dev list or gathers previous dicussion threads related to the release content and starts a release thread discussion. Get consensus on the content from the community early.
  4. +
  5. Nail the must-have functions from the community that is required to be delivered in this release.
  6. +
  7. Target (or reTarget) all of the Jira defects and new function that is required for the release. Move non-critical items to the next milestone.
  8. +
+ + +

During the release

+
    +
  1. Keep Jiras under control during the milestone. Make sure new opened ones are targeted for the appropriate release, and the backlog is decreasing.
  2. +
  3. Make sure the new function Jira are marked appropriately (since they will be used in the ReadMe file creation).
  4. +
  5. Look for Jira's that have patches attached to them and get the code integrated early in the cycle. Don't wait until the last minute.
  6. +
  7. Make sure that you begin to obtain clean versions for all SNAPSHOTs in the build. This can sometimes be a lengthy process as dependent packages are sometimes not available.
  8. +
  9. Lay out a plan for the distributed execution of the test suites (unit tests, integration tests, scenarios)
  10. +
  11. Ensure that all of the licenses are valid and replacements/remediation should be done.
  12. +
  13. Make sure that you remind the community that all modules should have the appropriate header file with the appropriate copyright statement.
  14. +
  15. Prepare for signing/authenticating distro files +
      +
    1. identify/install s/w for public key infrastructure stuff and MD5 message digest generation
    2. +
    3. Create a PGP key for signing files
    4. +
    5. Lodge your PGP key with a keyserver
    6. +
    7. Put your public key in the svn KEYS file
    8. +
    +
  16. +
  17. Get set up for easy file transfer to people.apache.org +
      +
    1. Identify/Install clients for ssh, secure copying and secure ftping
    2. +
    3. Establish authentication with people.apache.org by key
    4. +
    +
  18. +
  19. Ensure that there is inter-module understanding of how we plan to sequence releasing modules and requesting IPMC votes
  20. +
  21. make the trunk reference the newly released parent pom and buildtools
  22. +
  23. optionally make a branch
  24. +
  25. stabilize code in branch (or trunk if development activity can be halted in trunk) +
      +
    1. check LICENSE and NOTICE files in project roots and in jar manifests +
        +
      1. run the rat tool against the source and check for exceptions
      2. +
      3. once exceptions have been fixed, store the rat log and make a note of rat log exceptions which are there because they have to be
      4. +
      5. repeat this as necessary during the release process if new files are included
      6. +
      +
    2. +
    3. update readme with the important New Function and a pointer to defect fixes for this release. Put the delivery date of the release at the top of the readme.
    4. +
    +
  26. +
+ + +
    +
  1. +
      +
    1. Ensure the DAS Tuscany project's root level svn Status file is up to date, and then copy/update it into the root folders of any source distribution that will be made,
    2. +
    +
  2. +
+ + +

Exiting the release cycle

+ +
    +
  1. Create a release candidate +
      +
    1. Create local copies of source hierarchies, , one per source distribution, using svn export <uri> <local-dir>
    2. +
    3. Make archives of your clean exports in order to be able to distribute source
    4. +
    5. Follow the instructions in BUILDING.txt in the root folders of the source distributions to produce the binary distribution
    6. +
    7. Test binary distro on a clean machine before publishing it as an RC.
    8. +
    9. When ready, put in place distro signing capabilities +
        +
      1. Sign and create md5 checksums for each of the source and binary distribution archives
      2. +
      3. transfer the archives to a logical place under your public_html people.apache.org space
      4. +
      5. create a suitable readme for the root level of your release candidate folder, and ensure the readme names the release candidate version
      6. +
      +
    10. +
    +
  2. +
+ + +
    +
  1. Declare a candidate build and ask for feedback on devlist and user list. Work out any issues that are voiced.
  2. +
  3. Get some to verify that all of the samples pass without issues. Integration tests and unit tests should run and known problems need to be identifed.
  4. +
  5. Initiate a vote on tuscany-dev mailing list for the release candidate to make the build a public release.
  6. +
  7. After 3 days, post the result to the devlist
  8. +
  9. Once the community approved the candidate, create a tag from the branch (or trunk if no branch) +
      +
    1. Note that a release must have a referenceable tag
      + svn will complain when you try to do an svn commit into a tag, which is a warning only, and during this phase of the release process, updates to a tag are justifiable
    2. +
    +
  10. +
  11. Get approval from IPMC to make this a public release. Send a note to general@apache.org which summarizes the result of vote on devlist and include a pointer to the release in your note. 3 (+1) IPMC votes are required to make this a public release and of course no (-1).
  12. +
  13. Once you have IPMC approval, post the release to people.apache.org.
  14. +
  15. Update the version elements of the poms to define the version of the parent pom and buildtools that should be used
  16. +
  17. Update the tags version names of the distributable artifacts to non SNAPSHOT titles that match the release name
  18. +
  19. Update the tags version names of the dependencies to non SNAPSHOT versions, if not already done earlier in the release candidate process
  20. +
  21. Ideally update the tags version names of maven plugins to non SNAPSHOT versions if not already done earlier in the release candidate process (note that if the plugin behaviour changes after release, your tag or source distribution may not build in the same way as it did when you released if you rely on SNAPSHOT plugin versions)
  22. +
  23. Rebuild and upload a new release to /www/people.apache.org/dist/incubator/tuscany/java
  24. +
  25. update 'Download' link on the wiki and make it a goal to update or add documentation.
  26. +
  27. Announce the release by sending to anounce@apache.org (note that you must use an apache.org email address to do this), copying tuscany-dev, tuscany-user and general@incubator
  28. +
  29. Don't forget that all this could not have been done without everyone's help. Post a congratulation note to the dev list and thank the entire team for their efforts to make this happen And thank you for the extra ordinary effort to make this happen
  30. +
+ + + +

Good References

+ + + + +

Examples

+

http://wiki.apache.org/ws/FrontPage/Axis2C/releases/steps

+ + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/repeating-menu.html b/site/trunk/site-publish/repeating-menu.html new file mode 100644 index 0000000000..8c00ead59b --- /dev/null +++ b/site/trunk/site-publish/repeating-menu.html @@ -0,0 +1,84 @@ + + + + + + + Repeating Menu : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Menus > Repeating Menu + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/repeating-subproject-menu.html b/site/trunk/site-publish/repeating-subproject-menu.html new file mode 100644 index 0000000000..935be459d7 --- /dev/null +++ b/site/trunk/site-publish/repeating-subproject-menu.html @@ -0,0 +1,83 @@ + + + + + + + Repeating Subproject Menu : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Menus > Repeating Subproject Menu + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/resources/space.css b/site/trunk/site-publish/resources/space.css new file mode 100644 index 0000000000..9ca27bc4a3 --- /dev/null +++ b/site/trunk/site-publish/resources/space.css @@ -0,0 +1,5269 @@ + +/* Confluence master stylesheet */ +body { + margin: 0; + padding: 0; + background-color: #f0f0f0; +} +body.content-preview { + background: #fff; + border: none; +} + +body, p, td, table, tr, .bodytext, .stepfield { + font-size: 10pt; + line-height: 1.3; + color: #000; + font-weight: normal; +} + +#page { + width: 100%; + height: 100%; + margin: 0; + padding: 0; +} + +#PageContent { + text-align: left; + background-color: #fff; + padding: 0 0 20px 0; + margin: 0; +} + +.print-only { + display: none; +} + +.monospaceInput { + font: 12px Monaco, Consolas, "Courier New", monospace; +} + +pre { + padding: 0; + margin: 10px 0; + text-align: left; + overflow: auto; +} + +.helpheading { + font-weight: bold; + background-color: #d0d9bd; + border-bottom-width: 1px; + border-bottom-style: solid; + padding: 4px; + margin: 0; + margin-top: 10px; +} +.helpcontent { + padding: 4px 4px 20px 4px; + background-color: #f5f7f1; +} + +.help-section-div .helpheading { + margin: 0; +} +.help-section-div { + margin-bottom: 2em; +} + +#print-friendly-help-toggle { + position: absolute; + top: 1em; + right: 1em; + text-indent: -999em; + width: 16px; + height: 16px; + background-image: url("../../../images/icons/print_16.gif"); + background-repeat: no-repeat; + outline: none; +} + +#commentsHide { + color: #666; + font-weight: normal; +} + +#showingComments { + border: none; + font-size: 10pt; +} + +.pageSection { + margin-top: 10px; + clear: both; +} + + +.pageSectionHeader { + margin-bottom: 5px; + padding: 2px 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.pageSectionHeader.summary { + border-bottom: none; +} + +.pageSectionBody { + margin-top: 4px; +} + +a.grey:link { color: #666; } +a.grey:visited { color: #666; } +a.grey:active { color: #666; } +a.grey:hover { color: #666; } + +.more-comments { + font-size: 10pt; + color: #dde2e6; +} + +.commentBox { + padding: 0; + margin: 10px 0; + overflow: auto; +} + +.commentBox table.comment { + border: 0; + border-bottom: #f0f0f0 1px solid; + border-top: #f0f0f0 1px solid; + margin: 0; + padding: 0; + width: 100%; + border-collapse: collapse; +} + +.commentBox .commentinfo { + background-color: #f0f0f0; + vertical-align: top; + padding: 12px; +} + +.commentBox .commentinfo .smalltext { + line-height: 11pt; +} + +.commentBox .commentphoto { + background-color: #f0f0f0; + text-align: right; + vertical-align:top; + padding: 12px; +} + +.commentBox .commentphoto img { + border: none; +} + +.commentBox .commentname a:hover { + text-decoration: underline; +} + +.commentdate { + margin-top: 3px; +} + +.commentBox .commentdate, .commentdate a { + color: #000; + text-decoration: none; + font-size: 9pt; +} + +.commentdate a:hover { + text-decoration: underline +} + +.commentBox .smalltext { + line-height: 10pt; +} + +.commentBox .smalltext a { + text-decoration: none; +} + +.commentBox .smalltext a:hover { + text-decoration: underline; +} + +.commentBox td.commentdetails { + vertical-align: top; + padding: 0 10px; +} + +.commentBox td.commentActions { + padding: 0 10px 10px 10px; + vertical-align: bottom; +} + +.commentThread { + clear: both; /* clear both in case there are floats or aligned images in the content that sits above the comment thread */ +} + +#replying .commentdetails { + padding: 15px 0 15px 25px +} + +#replying .commentinfo { + background-color: #a0a0a0; + color: #f0f0f0; +} + +#replying .commentdate, #replying .commentdate a { + color: #f0f0f0; +} + +#replying .commentname a { + color: #f0f0f0; +} + +#replying .commentphoto { + background-color: #a0a0a0; +} + +#replying table.comment { + border-bottom-color: #a0a0a0; + border-top-color: #a0a0a0; +} + +#addition .commentdetails { + padding: 15px 30px 10px 30px; +} + +#addition .commentinfo { + background-color: #a0a0a0; + color: #f0f0f0; +} + +#addition .commentname a { + color: #f0f0f0; +} + +#addition .commentdate, #addition .commentdate a { + color: #f0f0f0; +} + +#addition .commentphoto { + background-color: #a0a0a0; +} + +#addition table.comment { + border-bottom-color: #a0a0a0; + border-top-color: #a0a0a0; +} + +#focusedComment .commentBox td.commentdetails, #focusedComment td.commentActions { + background: #ffffd7; +} + +.anonymousAlert, .lockAlert { + background-color: #f0f0f0; + border: 1px dashed red; + font-size: 11px; + padding: 10px 5px; + margin: 4px; + line-height: 13px; +} + +.lockAlert { + width: 50%; +} + +.navmenu { + border: 1px solid #f0f0f0; + margin: 0; +} + +.menuheading { + font-weight: bold; + padding: 5px 4px 5px 10px; + color: #222; + background-color: #f0f0f0; +} + +.navmenu.collapsible-menu .menuheading { + background: #f0f0f0 url(../../../images/icons/grey_arrow_down.gif) no-repeat 98% 50%; +} +.navmenu.collapsible-menu .menuheading.closed { + background-image: url(../../../images/icons/grey_arrow_right.gif); +} + +.menuitems { + padding: 4px 4px 20px 4px; +} + +ul.navmenu { + padding-left: 0; + margin-top: 0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +ul.navmenu li.menu-section { + list-style: none; +} + +.menu-section-list { + margin: 0; + padding: 5px 0 10px 0; +} + +.menu-section-list li { + list-style: none; + margin: 0; + line-height: 1.3; +} + +.menu-section-list li a:hover { + background-color: #f0f0f0; +} + +.menu-section-list li.active a, +.menu-section-list li.active a:hover { + color: #fff; + font-weight: bold; + background-color: #444; /* set to neutral colour */ +} + +.menu-section-list li a { + text-decoration: none; + color: #666; + display: block; + padding: 0.2em 10px; + cursor: pointer; +} + +.menu-section-list li a img { + padding-right: 2px; +} + +.rightpanel { + background: #f0f0f0; + -moz-border-radius: 3px; /* Firefox */ + -webkit-border-radius: 3px; /* Safari */ + border-radius: 3px; /* CSS3 (Opera?) */ + padding: .9em; +} + +h3.underlined, +#helpheading, +.sidebar-heading { + padding: 0; + margin: 10px 0; + text-align: left; + color: #333; + border-bottom: 1px solid #ccc; +} + +#helpheading, +#helpcontent h3.underlined, +.sidebar-heading { + font-size: 13px; + margin: -.1em; + padding: .1em .1em .2em .1em; +} + +#helpcontent h3.helpheading-spacing{ + margin-top: 20px; +} + +#helpcontent { + margin-top: .9em; +} + +#helpcontent p { + margin-bottom: 0; + margin-top: .9em; +} + +#helpcontent ul { + padding-left: 1.3em; +} + +#helpcontent dl { + margin-top: 0; +} + +#helpcontent dl dd { + margin: 0; + color: #333; + font-size: 90%; + margin-bottom: .2em; +} + +#helpcontent dl dd code, +#helpcontent dl dd pre { + color: #666; + margin: 0; + padding: 0; +} + +#helpcontent dl dd.text-formatting code { + display: inline-block; + width: 6em; +} + +#helpcontent dl dt { + margin-top: 1em; +} +#helpcontent dl dt.first { + margin-top: 0; +} + +.helptab-unselected { + font-weight: bold; + padding: 5px; + background-color: #f5f7f1; +} +.helptab-selected { + font-weight: bold; + background-color: #d0d9bd; + padding: 5px; +} +.helptabs { + margin: 0; + background-color: #f5f7f1; + padding: 5px; +} + +#profileSummary h3 { + font-weight: bold; + font-size: 10pt; + margin: 12px 0 4px; + padding: 0; +} +#profileSummary ul { + list-style-type: none; + margin: 0; + padding: 0; +} + +.pageheader { + padding: 5px 5px 5px 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.pagetitle { + font-size: 18pt; + line-height: normal; + font-weight: bold; +} + +.newpagetitle { + color: #ccc !important; +} + +.steptitle { + font-size: 18px; + font-weight: bold; + margin-bottom: 7px; +} + +.substeptitle { + font-size: 12px; + font-weight: bold; + margin: 2px 4px 4px 4px; + padding: 2px 4px 1px 4px; +} + +.has-blog-sidebar #title-text a { + word-wrap: break-word; + display: inline-block; + max-width: 75%; +} + +.stepdesc { + font-size: 10pt; + line-height: 13pt; + font-weight: normal; + color: #666; + margin-top: 7px; + margin-bottom: 7px; +} + +.steplabel { + font-weight: bold; + margin-right: 4px; + color: black; + float: left; + width: 15%; + text-align: right; +} + +.stepfield { + background: #f0f0f0; + padding: 5px; +} + +.submitButtons{ + margin-top:5px; + text-align:right; +} + +.formtitle { + font-size: 12px; + font-weight: bold; +} + +.sectionbottom { + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.topRow { + border-top-width: 2px; + border-top-style: solid; +} + +/* CONF-20585: + * non-dashboard headings will keep their current style + * text styling is duplicated in the div because not all divs contain headings + */ +.tabletitle { + font-size: 10pt; + font-weight: bold; + padding: 3px 0 2px 0; + margin: 8px 4px 2px 0; + border-bottom-width: 2px; + border-bottom-style: solid; +} +.tabletitle h2, +.wiki-content .tabletitle h2 { + font-size: 10pt; + font-weight: bold; + padding: 0; + margin: 0; +} +form[name=inlinecommentform] .tabletitle { + border: 0; +} + +/* CONF-20585: + * .tabletitle on the dashboard is purely a container + * dashboard headings are styled like .welcome-message-heading + */ +.dashboard .tabletitle { + margin: 0; + padding: 0; + border: none; +} +.dashboard .tabletitle h2 { + font-size: 14pt; + color: #3C78B5; + font-weight: normal; + font: Arial FreeSans Helvetica sans-serif; + padding: 3px 0 2px 0; + margin: 1em 0 0 0; + border-bottom: 1px solid #ccc +} + +.tabletitleops { + float: right; +} +.tabletitleops, .tabletitleops a, .tabletitleops img { + vertical-align: middle; +} +.tabletitleops img { + border: none; +} + +.fullWidth { + width: 100%; +} + +.pagesubheading { + color: #666; + font-size: 10px; + padding: 0 0 5px 0; +} + +hr { + color: #ccc; + height: 1px; +} + +h1 a:link, h1 a:visited, h1 a:active { + text-decoration: none; +} + +.logocell { + padding: 10px; +} + +input { + font-family: Helvetica, Arial, sans-serif; + font-size: 10pt; + color: #000; +} +input[type='password'] { + -webkit-appearance: caps-lock-indicator; +} + +textarea, textarea.editor { + font-family: Arial, Helvetica, sans-serif; + font-size: 10pt; + color: #333; +} + +.spacenametitle-printable { + font: 20px Impact, Arial, Helvetica; + font-weight: 100; + line-height: 25px; + margin: 0; +} + +.spacenametitle-printable a, +.spacenametitle-printable a:visited { + text-decoration: none; +} + +.blogDate { + font-weight: bold; + text-decoration: none; + color: black; +} + +.blogSurtitle { + background: #f0f0f0; + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.blog-post-listing { + margin-bottom: 66px; +} + +.blog-post-listing .logo-heading-block { + padding-left: 61px; +} + +.blog-post-listing a.blogHeading{ + margin: 0.05em 0; + padding: 0; +} + +.blog-post-listing .blogHeading{ + display: inline-block; + word-wrap: break-word; + margin: 0.1em 0; +} +.blog-post-listing .logoBlock{ + display: inline-block; + float: left; + margin-left: -61px; + vertical-align: top; +} + +.blog-post-listing .page-metadata{ + margin: 0.1em 0 0.1em 0.1em; +} + +.blog-post-listing .page-metadata.not-personal{ + font-size: 1em; +} + +.blog-post-listing .wiki-content { + clear: both; +} + +a.blogHeading { + font-size: 20pt; + line-height: normal; + font-weight: bold; + text-decoration: none; + word-wrap: break-word; +} + +.blogHeading a:hover { + text-decoration: underline; +} + +.blog-pagination{ + padding-bottom: 1em; +} + +.endsection { + color: #666; + clear: both; + padding: 1em 0 0.5em; + font-size: 1em; +} +.endsectionleftnav { + text-align: right; + color: #666; + clear: both; + padding-top: 10px; +} + +.endsection img{ + border: 0; + vertical-align: middle; +} + +h1, h2, h3, h4, h5, h6 { + line-height: normal; + font-weight: bold; + padding: 2px; +} + +h1 { + font-size: 24px; + margin: 36px 0 4px 0; +} + +h2 { + font-size: 18px; + margin: 27px 0 4px 0; +} + +h3 { + font-size: 14px; + margin: 21px 0 4px 0; +} + +h4 { + font-size: 12px; + margin: 18px 0 4px 0; +} + +h5 { + font-size: 10px; + margin: 14px 0 4px 0; +} + +h6 { + font-size: 8px; + margin: 14px 0 4px 0; +} + +.smallfont { + font-size: 10px; +} +.descfont { + color: #666; + font-size: 10px; +} +.smallerfont { + font-size: 9px; +} +.smalltext { + color: #666; + font-size: 12px; +} +.smalltext a { + color: #666; +} +.greyText +{ + color: #666; +} +.smalltext-blue { + font-size: 8pt; + color: #69c; +} +.surtitle { + margin-left: 1px; + margin-bottom: 5px; + font-size: 14px; + color: #666; +} + +/* css hack found here: http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */ +.navItemOver { + font-size: 10px; + font-weight: bold; + voice-family: "\'}\'"; + voice-family: inherit; + cursor: pointer; +} + +.navItem { + font-size: 10px; + font-weight: bold; + color: #fff; +} + +.navItemOver a, +.navItemOver a:visited, +.navItemOver a:hover, +.navItem a, +.navItem a:hover, +.navItem a:visited { + text-decoration: none; +} + +div.padded { + padding: 4px; +} + +div.thickPadded { + padding: 10px; +} + +h3.macrolibrariestitle { + margin: 0; +} + +div.centered { + text-align: center; + margin: 10px; +} + +div.centered table { + margin: 0 auto; + text-align: left; +} + +.tableview table { + margin: 0; +} + +.tableview tr.alternateRow { + background: #f0f0f0; +} + +.tableview th { + text-align: left; + font-size: 12px; + padding: 5px 15px 2px 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} +.tableview td { + text-align: left; + border-color: #eee; + border-width: 0 0 1px 0; + border-style: solid; + margin: 0; + padding: 5px 15px 3px 0; +} + +.grid { + margin: 2px 0 5px 0; + border-collapse: collapse; +} +.grid th { + border: 1px solid #ccc; + padding: 2px 4px 2px 4px; + background: #f0f0f0; + text-align: center; +} +.grid td { + border: 1px solid #ccc; + padding: 3px 4px 3px 4px; +} +.gridHover { + background-color: #f9f9f9; +} + +td.infocell { + background-color: #f0f0f0; +} +.error { + background-color: #fcc; +} + +.errorBox { + background-color: #fcc; + border: 1px solid #c00; + padding: 5px; + margin: 5px; +} + +.errorMessage, .errorMessage p { + color: #c00; +} + +.success { + background-color: #dfd; +} + +.successBox { + background-color: #dfd; + border: 1px solid #090; + padding: 5px; + margin-top:5px; + margin-bottom:5px; +} + +blockquote { + font-style: italic; + font-size: 10pt; + border-left-width: 1px; + border-left-style: solid; + padding: 0 20px; + margin: 10px 20px; +} + +blockquote p { + font-size: 10pt; +} + +blockquote em { + font-style: normal; +} + +div.small { + font-size: 9px; +} + +h1.pagename { + margin-top: 0; +} + +/* The text how the "This is a preview" comment should be shown. */ +.previewnote { + text-align: center; + font-size: 11px; + color: red; +} + +/* How the preview content should be shown */ +.previewcontent { + background: #e0e0e0; +} + +/* How the system messages should be shown (DisplayMessage.jsp) */ +.messagecontent { + background: #e0e0e0; +} + +.createlink, +a.createlink, +a.createlink:link, +a.createlink:visited, +a.createlink:active, +a.createlink:hover { + color: maroon; +} +.templateparameter { + font-size: 9px; + color: #00008b; +} + +#page-diffs, #conflict-diffs{ + min-height: 54px; +} + +#page-diffs { + margin-bottom: 2em; +} +#page-diffs .diff { + margin-top: 0; +} +#page-diffs .diff div { + word-wrap: break-word; +} + +.key-diffs { + border: 1px solid #CCCCCC; + float: right; + padding: 0.5em; +} +.key-diffs .diff { + margin: 0; + padding: 0; +} + +.diff { + font: 12px Monaco, Consolas, "Courier New", monospace; + padding: 0 0 0 1.5em; + margin-top: 1em; +} +.diff td { + font-size: 0.9em; + padding-bottom: 0.3em; +} +.diff-added-lines, .diff-added-words, .diff-added-chars { + background: #dfd; +} +.diff-deleted-lines, .diff-deleted-words, .diff-deleted-chars { + color: #999; + background: #fdd; + text-decoration: line-through; +} +.differror { + background: #A52A2A; +} + +div.diff-snip-link img.twixie, +div.diff-snip-text img.twixie { + margin: 0 4px -6px -20px; /* Twixie is 16 pixels wide, sum of left and right margins should be -16px */ +} + +div.diff-snip-link, +div.diff-snip-text { + margin: 0.85em 0; +} + +.greybackground { + background: #f0f0f0 +} + +.greybox { + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.borderedGreyBox { + background-color: #F0F0F0; + padding: 0.9em; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + margin-bottom: 17px; + +} + +.space-labels div.borderedGreyBox{ + float: right; + width: 189px; +} + + + +.borderedLabelHeading{ + border-bottom: 1px solid #CCCCCC; + color: #333333; + font-size: 13px; + font-weight: bold; + margin-bottom: 0.7em; +} + +.greyboxfilled { + border: 1px solid #ddd; + background: #f0f0f0; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.lightGreyBox { + background: #fafafa; +} + +.navBackgroundBox { + padding: 5px; + font-size: 22px; + font-weight: bold; + color: white; + text-decoration: none; +} + +.previewBoxTop { + background-color: #f0f0f0; + border-width: 1px 1px 0px 1px; + border-style: solid; + padding: 5px; + margin: 5px 0px 0px 0px; + text-align: center; +} +.previewContent { + background-color: #fff; + border-width: 0px 1px 0px 1px; + border-style: solid; + padding: 10px; + margin: 0px; +} +.previewBoxBottom { + background-color: #f0f0f0; + border-width: 0px 1px 1px 1px; + border-style: solid; + padding: 5px; + margin: 0px 0px 5px 0px; + text-align: center; +} + +.functionbox { + background-color: #f0f0f0; + border: 1px solid; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.functionbox-greyborder { + background-color: #f0f0f0; + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.rowNormal { + background-color: #fff; + } + +.rowAlternate { + background-color: #f7f7f7; +} + +/* used in the list attachments table */ +.rowAlternateNoBottomColor { + background-color: #f7f7f7; +} + +.rowAlternateNoBottomColor td, +.rowAlternateNoBottomNoColor td { + border-bottom: 0; +} + +.rowHighlight { + background-color: #f0f0f0; +} + +td.greenBar, +td.greenbar, +td.graybar, +td.redbar, +td.darkredbar { + font-size: 1em; + border: 1px solid #9c9c9c; + padding: 0; +} + +td.greenBar, +td.greenbar { + background: #00df00; +} +td.graybar { + background: #808080; +} +td.redbar { + background: #df0000; +} +td.darkredbar { + background: #af0000; +} + +tr.testpassed { + font-size: 2px; + background: #dfd; + padding: 0; +} +tr.testfailed { + font-size: 2px; + background: #fdd; + padding: 0; +} + +.toolbar { + margin: 0; + border-collapse: collapse; +} + +.toolbar td { + border: 1px solid #ccc; + padding: 2px; + color: #ccc; +} + +td.noformatting { + border-width: 0; + border-style: none; + text-align: center; + padding: 0; +} + +/* + * Divs displaying the license information, if necessary. + */ +.license { + border-top: 1px solid #bbb; + text-align: center; + font-size: 10pt; + background-color: #ffffe0; +} + +.license-eval, .license-none { + background-color: #fcc; +} + +.license-eval b, .license-none b { + color: #900; +} + +/* + * The shadow at the bottom of the page between the main content and the + * "powered by" section. + */ +.bottomshadow { + height: 12px; + background-image: url("../../../images/border/border_bottom.gif"); + background-repeat: repeat-x; +} + +/* + * Styling of the operations box + */ +.navmenu .operations li, .navmenu .operations ul { + list-style: none; + margin-left: 0; + padding-left: 0; +} + +.navmenu .operations ul { + margin-bottom: 9px; +} + +.navmenu .label { + font-weight: inherit; +} + +/* + * Styling of ops as a toolbar + */ +.toolbar div { + display: none; +} + +.toolbar .label { + display: none; +} + +.toolbar .operations { + display: block; +} + +.toolbar .operations ul { + display: inline; + list-style: none; + margin-left: 10px; + padding-left: 0; +} + +.toolbar .operations li { + list-style: none; + display: inline; +} + +.bold { + font-weight: bold; +} + + +/* space action links */ +.tabnav .spaceActionLinks { + float: right; + margin: 0; + display: block; +} + +.tabnav .spaceActionLinks a span { + text-decoration: underline; +} +.tabnav .spaceActionLinks a.current { + color: black; +} +.tabnav .spaceActionLinks a.current span { + text-decoration: none; +} + +.tabnav .spaceActionLinks a.current:link { + color: black; +} + +.tabnav .spaceActionLinks a.current:visited { + color: black; +} + +/* non tabs */ +.tabnav .nontabs { + padding: 0; + margin: 5px 0 0 3px; + display: block; + float: left; +} + +/* editor tab customizations of the tabnav */ +#markupTab, #wysiwygTab, #previewTab { + font-size: 9pt; + padding: 3px 5px 2px; /* tab padding */ + margin: 8px 0 0 3px; /* margin-top is used to 'push' the tab down to fill in any gaps */ + font-weight: normal; +} + +/* alphabet list */ +#squaretab { + margin-left: 0; + padding-left: 0; + white-space: nowrap; + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 8pt; + line-height: 11pt +} + +#squaretab li { + display: inline; + list-style-type: none; +} + +#squaretab a { + padding: 5px 7px 3px 7px; + border-width: 1px; + border-style: solid; +} + +#squaretab a:link, +#squaretab a:visited { + color: #fff; + text-decoration: none; +} + +#squaretab a:hover { + text-decoration: none; +} + +#current { + background: #fff; + color: #000; +} + +.blogcalendar th, +.blogcalendar td { + font-size: x-small; + font-weight: normal; + line-height: 140%; + padding: 2px; +} + +table.blogcalendar { + border-width: 1px; + border-style: solid; +} + +.blogcalendar th.calendarhead, +a.calendarhead { + font-size: x-small; + font-weight: bold; + padding: 2px; + letter-spacing: 0.3em; + text-transform: uppercase; +} + +.blogcalendar th.calendarhead, +.calendarhead, +.calendarhead:link, +.calendarhead:visited, +.calendarhead:active, +.calendarhead:hover { + color: #fff; +} + +.blogcalendar th { + font-size: x-small; + font-weight: bold; + padding: 2px; + background-color: #f0f0f0; +} + +.blogcalendar td { + font-size: x-small; + font-weight: normal; +} + +.sidebar-section #bloglist{ + margin-top: 5px; + display: inline; +} + + +#bloglist{ + background-color: #f0f0f0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + width: 22em; + padding-top: 0.1em; +} + +.blogmonthnavigation{ + border:1px solid #CCCCCC; + position:relative; + text-decoration:none; + display: inline-block; + width: 10em; + font-size: 0.85em; + text-align:center; + margin: 0 0.3em 1em 1.1em; + padding: 0.2em 0.4em; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +div.pagination .blogmonthnavigation{ + margin: 0 0.5em 0 0; + width: 5em; + font-size: 1em; +} + +#blog-sidebar .bloglistmultiple{ + position: absolute; +} + +.bloglistitems li .icon-container { + display:block; + float:none; + padding-left:1.75em; +} + +.bloglistmultiple .bloglistheading h2{ + padding-top: 0; +} + +.bloglistitems{ + list-style-type: none; + padding-left: 1em; + padding-right: 1em; + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.bloglistitems li{ + padding-bottom: 7px; + word-wrap: break-word; +} + +.bloglistitems li img{ + padding-right: 0.5em; + vertical-align: middle; +} + + +.bloglistheading h2{ + text-align: left; + margin: 1em; + color: #333333; +} + +.bloglistheading h2 a{ + text-decoration: none; + color: #333333; +} + +.has-personal-sidebar .bloglistheading h2 a, +.has-personal-sidebar .bloglistheading h2 +{ + margin-left: -0.1em; + margin-right: -0.1em; + padding: 0.1em 0.1em 0.2em; +} + +.has-personal-sidebar .bloglistitems +{ + margin-left: -0.9em; +} + +.has-personal-sidebar .blogmonthnavigation +{ + margin-left: 0; + margin-right: 1em; + +} + +#bloglist .control { + position: absolute; + top: 8px; +} +#bloglist .control.prev { + left: 13px; +} + +#bloglist .control.next { + right: 13px; +} + +.searchGroup { + padding: 0 0 10px 0; + background: #f0f0f0; +} + +.searchGroupHeading { + font-size: 10px; + font-weight: bold; + color: #fff; + padding: 2px 4px 1px 4px; +} + +.searchItem { + padding: 1px 4px; +} + +.searchItemSelected { + padding: 1px 4px; + font-weight: bold; + background: #ddd; +} + +/* permissions page styles */ +.permissionHeading { + border-bottom: #bbb; + border-width: 0 0 1px 0; + border-style: solid; + font-size: 16px; + text-align: left; +} + +.permissionTab, +.permissionSuperTab, +.permissionCell { + border-width: 0 0 0 1px; + border-style: solid; +} + +.permissionTab { + font-size: 10px; +} + +.permissionCell { + border-left: #bbb; + white-space: nowrap; +} + +/* side menu highlighting (e.g. space content screen) */ +.optionPadded { + padding: 2px; +} + +.optionSelected, .optionPadded.selected { + background-color: #ffc; + padding: 2px; + border: 1px solid #ddd; + margin: -1px; +} + +.optionSelected a, .optionPadded.selected a { + font-weight: bold; + text-decoration: none; + color: black; +} + +/* styles for extended operations */ +.greyLinks a:link, +.greyLinks a:visited, +.greyLinks a:active, +.greyLinks a:hover { + color: #666; + text-decoration: underline; +} + +.greyLinks { + color: #666; + padding: 10px; +} + +.operation-links { + color: #666; + margin-bottom: 10px; +} +.operation-links a:link, +.operation-links a:visited, +.operation-links a:active, +.operation-links a:hover { + color: #666; + text-decoration: underline; +} + +.separatorLinks a:link, +.separatorLinks a:visited, +.separatorLinks a:active { + color: white; +} + +.greynavbar { + background-color: #f0f0f0; + border-top-width: 1px; + border-top-style: solid; +} + +div.headerField { + float: left; + width: auto; + height: 100%; +} + +.headerFloat { + margin-left: auto; + width: 50%; +} + +.headerFloatLeft { + float: left; + margin-right: 20px; + margin-bottom: 10px; +} + +#headerRow { + padding: 10px; +} + +.greyFormBox { + border: 1px solid #ccc; + padding: 5px; +} + +.openPageHighlight { + background-color: #ffc; + padding: 2px; + border: 1px solid #ddd; +} + +.editPageInsertLinks, .editPageInsertLinks a { + color: #666; + font-weight: bold; + font-size: 10px; +} + +/* Style for label heatmap. */ +.top10 a { + font-weight: bold; + font-size: 2em; + color: #036; +} +.top25 a { + font-weight: bold; + font-size: 1.6em; + color: #036; +} +.top50 a { + font-size: 1.4em; + color: #036; +} +.top100 a { + font-size: 1.2em; + color: #036; +} + +.heatmap { + list-style: none; + width: 95%; + margin: 0 auto; +} + +.heatmap a { + text-decoration: none; +} + +.heatmap a:hover { + text-decoration: underline; +} + +.heatmap li { + display: inline; +} + +.minitab { + padding: 5px; + margin: 1px 0 0 0; + border-bottom-width: 1px; + border-bottom-style: solid; + text-decoration: none; + float: none; +} + +.minitab a { + padding: 5px 5px; + margin-left: 3px; + margin-top: 1px; + border-top: 1px solid; + border-right: 1px solid; + border-left: 1px solid; +} + +#makeRichTextDefault, #makeMarkupDefault { + border: 0; + font-weight: normal; + text-decoration: none; + display: block; + height: 2.5em; +} + +.minitab .selected { + background: white; + border-bottom: 1px solid white; + color: #000; + text-decoration: none; +} +.minitab .unselected { + border-bottom-width: 1px; + border-bottom-style: solid; + color: #fff; + text-decoration: none; +} + +.minitab a.unselected:link, +.minitab a.unselected:visited { + color: white; +} +.minitab a.selected:link, +.minitab a.selected:visited { + color: black; +} + +.minitabFont { + font-size: 9pt; + line-height: 9pt; +} + +.linkerror { + background-color: #fcc; +} + +a.labelOperationLink:link, +a.labelOperationLink:active, +a.labelOperationLink:visited, +a.labelOperationLink:hover { + text-decoration: underline; +} + +a.newLabel:link, +a.newLabel:active, +a.newLabel:visited, +a.newLabel:hover { + background-color: #dfd; +} + +ul.square { + list-style-type: square; +} + +/* Label auto complete styles needed until we use requireResource properly in labels-include.vm */ +div.auto_complete { + width: 350px; + background: #fff; +} +div.auto_complete ul { + border: 1px solid #888; + margin: 0; + padding: 0; + width: 100%; + list-style-type: none; +} +div.auto_complete ul li { + margin: 0; + padding: 3px; +} +div.auto_complete ul li.selected { + background-color: #ffb; +} +div.auto_complete ul strong.highlight { + color: #800; + margin: 0; + padding: 0; +} + +/******* Edit Page Styles *******/ +.toggleFormDiv{ + border: 1px solid #a7a6aa; + background-color: white; + margin-top: 5px; +} + +.toogleInfoDiv{ + border: 1px solid #a7a6aa; + background-color: white; + display: none; + padding: 5px; + margin-top: 10px; +} + +.inputSection{ + margin-bottom: 20px; +} + +#anonymous-warning { + padding: 15px 10px; +} + +#editBox{ + border: 1px solid #d3d3d3; + background-color: #f0f0f0; +} + +.tab-navigation .current a { + color: #000; + background-color: #fff; + border-bottom-color: #fff; +} + +.replaced { + background-color: #3c6; +} + +.topPadding { + margin-top: 20px; +} + +/* new form style */ +.form-block { + padding: 6px; +} +.form-error-block { + background: #fcc; + border-top: #f0f0f0 1px solid; + border-bottom: #f0f0f0 1px solid; + margin-bottom: 6px; + padding: 0 12px; +} +.form-element-large { + font-size: 16px; + font-weight: bold; +} + +.form-element-small { + font-size: 12px; + font-weight: bold; +} + +.form-header { + background: #ffffe0; + border-top: #f0f0f0 1px solid; + border-bottom: #f0f0f0 1px solid; + margin-bottom: 6px; + padding: 12px; +} +.form-header p, .form-block p, .form-error-block p { + line-height: normal; + margin: 12px 0; +} +.form-example { + color: #888; + font-size: 11px; +} +.form-divider { + border-bottom: #ccc 1px solid; + margin-bottom: 6px; +} +.confluence-button, +a.confluence-button, +a.confluence-button:link, +a.confluence-button:hover, +a.confluence-button:visited { + text-decoration: none; + border: 1px solid #aaa; + color: #000; + padding: 5px 10px; + cursor: default; + background: #fff url(../../../images/decoration/buttons-bg-white.png) repeat-x 0 100%; + -moz-border-radius: 5px; /* Firefox */ + -webkit-border-radius: 5px; /* Safari */ +} + +.confluence-button:active, +a.confluence-button:active { + border-color: #69c; + background-color: #eee; + background-image: url(../../../images/decoration/buttons-bg.png); +} + +.form-block .error { + padding: 6px; + margin-bottom: 6px; +} + +form.edit-trust-app fieldset { + border: none; +} +form.edit-trust-app fieldset div { + border: none; + border-left: solid 11em #f0f0f0; + padding: 0; + float: left; +} +form.edit-trust-app fieldset label { + float: left; + width: 10em; + padding: 0; + margin: 5px 1em 0 -10.5em; + text-align: right; + clear: left; +} +form.edit-trust-app fieldset input, +form.edit-trust-app fieldset textarea { + margin: 5px 0 0 0; + float: left; +} +form.edit-trust-app fieldset div.buttons { + border: none; + clear: left; + text-align: center; + float: none; +} +form.edit-trust-app fieldset div.buttons input { + float: none; +} + +.status-red { + color: #800; + font-weight: bold; +} +.status-green { + color: #080; + font-weight: bold; +} + +.person { + background-color: white; + width: 200px; + float: left; +} +.person td { + white-space: nowrap; +} + +#blogcalendar span.fwdArrow { + float: right; + display: block; + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-image: url(/images/icons/forwd_16.gif); +} +#blogcalendar span.fwdArrow span { + display: none; +} +#blogcalendar span.backArrow { + float: left; + display: block; + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-image: url(/images/icons/back_16.gif); +} +#blogcalendar span.backArrow span { + display: none; +} +.pageInfoTable { + padding: 0; + margin: 0; + border: 0; + width: 100%; + border-collapse: collapse; +} +.pageInfoTable td { + padding: 3px; +} +.pageInfoTable tr.alternateRow { + background: #f0f0f0; +} +.pageInfoLayoutTable { + width: 100%; + border-collapse: collapse; +} + +.pageInfoLayoutTable td { + padding: 5px 16px 5px 0; +} + +.pageInfoLayoutTable .tableview td { + padding-left: 0; +} + +.pageInfoLayoutTable ul { + padding-left: 20px; + list-style-type: none; +} + +.memoryusagebar { + width: 100%; +} +.memoryusagebar td { + border: none !important; + vertical-align: middle !important; +} + +input.alignedCheckbox { + margin: 0; +} + +div.spacer { + clear: both; +} + +span.left { + float: left; + text-align: left; +} + +span.right { + float: right; + text-align: right; +} + +.nobr { + white-space: nowrap; +} + +label.normal { + font-weight: normal; + color: black +} + +div.leftFloatMargined { + float: left; + margin-right: 2px +} + +#entitySearchResults { + border-collapse: collapse; + background-color: #fafafa; + text-align: left; + width: 100%; +} + +#entitySearchResults td { + border-top: 1px solid #ccc; + padding: 3px; + background-color: white; + vertical-align: top; +} + +#entitySearchResults th { + color: #666; + padding: 3px; + white-space:nowrap; +} + +#entitySearchResults .firstColumn { + width: 2%; + text-align: right; +} + +#entitySearchResults .secondColumn { + width: 1px; + text-align: right; +} + +a.paddedGreyDisabled { + background-color: #f0f0f0; + padding: 4px; + text-decoration: none; + color: #666; +} + +a.grey { + color: #666; +} + +div.topBottomMargin { + margin: 10px 0 10px 0 +} + +div.bottomMargin { + margin-bottom: 10px +} + +table.spaceList { + border-collapse: collapse; +} + +tr.spaceList td { + padding: 5px 0 5px 5px; + border-bottom: 1px solid #eee; + vertical-align: top; +} + +.spaceList .spaceDescription { + margin-top: 3px; + color: #666; +} + +tr.spaceList .operations { + vertical-align: top; + padding-right: 5px; +} + +.fontSizeBigger { + font-size: 11pt; + line-height: 14pt; +} + +.fontSizeDefault { + line-height: 1.3em; +} + +.fontSizeSmaller { + font-size: 10pt; + line-height: 13pt; +} + +/* deprecated. TODO - check for use in themes and remove. */ +.fontSizeTiny { + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 8pt; + line-height: 11pt; +} + +table.dashboard td.left { + padding-right: 16px; +} + +/* dashboard action buttons */ +.dashboard .dashboard-action-button { + overflow: auto; + padding: 10px 0 20px 0; +} +.dashboard .dashboard-action-button span { + clear: both; + display: block; + margin: 0 0 10px 0; +} +.dashboard .dashboard-action-button span a, +.dashboard .dashboard-action-button span a:focus, +.dashboard .dashboard-action-button span a:hover { + color: #003366; + float: left; + padding: 0 10px 0 9px; + font-weight: bold; +} +/* pull the icons out so the link underline doesn't extend under them */ +.dashboard .dashboard-action-button span.icon { + float: left; + left: -5px; + position:relative; +} +/* end dashboard action buttons */ + +#view-attachments .dashboard-action-spacing{ + padding-top: 6px; + padding-bottom: 3px; +} + +#view-attachments a.dashboard-action{ + color: #000; +} + +.dashboard .dashboard-action:hover, #view-attachments .dashboard-action:hover { + color: #4F85BC; + background-position: 100% 0; +} + +.clearBoth { + clear: both; +} + +#labelInputSpan { + margin-top: 1px; +} + +form#quickSearch { + margin: 2px; + padding: 0; +} + +form#quickSearch input { + font-size: 10pt; + vertical-align: middle; +} + +table.fullWidthBorderless +{ + width: 100%; + border: 0; + border-collapse: collapse; +} + +/* Hacks for YUI menustuff */ + +#pageMenusMenuBar { + padding: 4px; +} + +#notificationFormat { + padding: 0; + margin: -9px 15px; +} + +#notificationFormat h4 { + font-weight: normal; +} + +#notificationFormat h2 { + font-weight: normal; +} + +#rssFormat { + padding: 0; + margin: 6px 15px; +} + +.notificationGreySide { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 0 0 5px 0; + padding: 3px 17px; +} + +.notificationDigest { + padding: 0 17px; +} + +.darkBlue { + color: #036; +} + +.grey { + color: #666; +} + +table.attachments { + width: 100%; + border-collapse: collapse; +} + +table.attachments th { + white-space: nowrap; + width: 1%; +} + +table.attachments td { + white-space: nowrap; + vertical-align: top; + width: 1%; +} + +table.attachments td.comment, table.attachments th.comment, table.attachments td.attachedto, table.attachments th.attachedto { + white-space: normal; + width: auto; +} + +#contentOptions { + list-style: none; + margin: 0; + padding: 0; +} + +#exportContentTree { + list-style-type: none; + margin: 5px 0; +} + +#contentOptionAllNote { + color: #666; + font-weight: normal; +} + +/* hidden: use when we want the content totally unavailable. */ +.hidden, +li.hidden { + display: none !important; + visibility: hidden; +} + +/* assistive: use when the hidden content should remain available to screen readers */ +.assistive, legend.assistive span { + position: absolute; + left: -20000px; + width: 4000px; + overflow: hidden; + top: 0; + height: 0; +} + +/* Needed for IE to stop the menu being expanded to 4000px */ +.ajs-menu-bar .ajs-menu-item .assistive { + position: absolute; + left: -20000px; + width: 4000px; + display: block; + visibility: visible; +} + +.ajs-menu-bar .ajs-menu-item .most-right-menu-item.assistive { + left: auto; + right: 20000px; +} + +#main { + text-align: left; + background-color: #fff; +} +#header { + min-height: 1.8em; + line-height: 1.8; + margin: 0; + padding: 0; + position: relative; + z-index: 1; +} +.quick-search { + margin: 0; + padding: 0; +} +#quick-search fieldset { + float: right; +} +.quick-search fieldset { + border: none; + margin: 0; + padding: 0; +} +.quick-search legend { + display: none; +} +input.blank-search, +input.placeholded, +.quick-search .placeholded { + color: #666; +} +#quick-search-query { + width: 13em; +} +/* default user navigation styles for themes using the old markup */ +#user-control-panel, #page-view-panel, #page-prefs-list { + list-style: none; + margin: 0; + padding: 0; +} +#user-control-panel li, +#page-view-panel li, +#page-prefs-list li, +.userNavBar li { /* deprecated styles provided for themes written prior to 2.8 */ + list-style: none; + display: inline; + color: #666; + font-size: 0.95em; + padding: 0 0 0 0.3em; +} +#user-control-panel a { + color: #666; +} +#user-control-panel li.first { + border:medium none; +} +#user-control-panel li { + border-left: 1px solid #666; + padding-left: 0.5em; +} +#page-view-panel li { + float: right; +} + +#breadcrumbs { + list-style: none; + padding: 0; + margin: 0; + overflow: auto; +} + +#breadcrumbs li { + white-space: nowrap; + display: inline; + float: left; + margin: 0 .2em 0 0; + padding-left: 15px; + background: url(../../../images/decoration/white_breadcrumbs_indicator.png); + background-repeat: no-repeat; + background-position: 3px center; +} + +#breadcrumbs li.first { + padding-left: 0; + background-image: none; +} + +#breadcrumbs li a { + text-decoration: none; +} + +#breadcrumbs li a:hover { + text-decoration: underline; +} + +#breadcrumbs li span { + display: block; +} + +#ellipsis strong { + cursor: pointer; + font-weight: normal; +} + +#breadcrumbs li.hidden-crumb { + display: none; +} + +a.twisty-open, a.twisty-closed { + background: no-repeat 50% 50%; + float: left; + margin-right: 0.5em; +} +a.twisty-open { + background-image: url(../../../images/icons/arrow_down.gif); +} +a.twisty-closed { + background-image: url(../../../images/icons/arrow_right.gif); +} + +a.print { + background: url(../../../images/icons/print_16.gif) no-repeat 50% 50%; +} +a.feed { + background: url(../../../images/icons/feed-icon-16x16.png) no-repeat 50% 50%; +} +a.pdf { + background: url(../../../images/icons/attachments/pdf.gif) no-repeat 50% 50%; +} +a.help { + background: url(../../../images/icons/help_16.gif) no-repeat 50% 50%; +} +a.add-user { + background: url(../../../images/icons/classic/16/125.png) no-repeat 50% 50%; +} + +a.remove-user { + background: url(../../../images/icons/classic/16/123.png) no-repeat 50% 50%; +} + +a.groups { + background: url(../../../images/icons/classic/16/127.png) no-repeat 50% 50%; +} + +a.cancel { + background: url(../../../images/icons/emoticons/error.gif) no-repeat 50% 50%; +} + +a.search-icon { + background: url(../../../images/icons/srch_16.gif) no-repeat 50% 50%; +} + +a img { + border: none; +} + +a.texticon { + min-height: 16px; + text-align: left; + padding:0 10px 0 20px; + background-position: 0 50%; + outline:0 none; +} + + +/* // Links **/ +#com-atlassian-confluence h1 { + line-height: 2; + margin: 0 0 10px 0; + padding: 0; + width: 100%; +} +#com-atlassian-confluence h1 img { + float: left; + margin: 0 .3em 0 0; +} +br.clear { + clear: both; + height: 1px; + overflow: hidden; +} +#footer, #footer-warning { + background: #f0f0f0; + text-align: center; +} +#footer p.license, #footer p.license a { + background: #036; + color: #fff; + margin: 0; +} +#poweredby { + border-top: 1px solid #bbb; + color: #666; + margin: 0; + padding: .5em; + list-style: none; +} +#poweredby a, #footer-warning { + color: #666; + text-decoration: none; +} +#poweredby li { + display: inline; +} +#poweredby li.print-only { + display: none; +} + +#poweredby a:hover.hover-footer-link{ + text-decoration: underline; +} + +#footer p.warning { + margin: 0 40px 10px 40px; + text-align: center; +} + +#menu-bar, #navigation .space-browse-links { + float: right; +} +#navigation .space-browse-links ul { + list-style: none; + margin: 0; + padding: 0; +} +#menu-bar { + margin: 0 .5em; +} +table { + clear: left; +} +.space-browse-links a:link, +.space-browse-links a:active, +.space-browse-links a:visited { + border: 1px solid #69c; + color: #000; + display: block; + font-weight: bold; + line-height: 2; + margin: 0.35em 0 -1px 0.5em; + padding: 0 0.5em 0 24px; + position: relative; + text-decoration: none; +} +.space-browse-links a:hover { + background-color: #036; + border: 1px solid #036; + color: #fff; +} +.space-browse-links a img { + float: left; + left: 4px; + margin: -8px 0 0; + position: absolute; + top: 50%; +} +#tree-div { + min-height:300px; +} +.mailLabel { + color: #666; + font-weight: bold; +} + +.unparented { + list-style: none; + margin: 0; + padding: 0; +} + +.parented { + list-style-image: url(../../../images/icons/link_out_bot.gif); +} + +.mailthread ul { + list-style-image: url(../../../images/icons/link_out_bot.gif); +} +.selectedMail { + background-color: #ffc; + padding: 2px; + border: 1px solid #ddd; +} + +.excerpt { + margin-top: 0; + margin-bottom: 0; +} + +.captcha { + padding: 10px; +} + +.captcha-image { + width: 200px; + height: 100px; +} + +#version-info { + margin-bottom: 10px; + padding:15px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +.version-info span.page-history-view{ + display: block; + padding-bottom: 5px; + padding-top: 5px; + margin-left: 24px; +} + +.version-info span.page-history-view, .version-info span.page-history-view a { + color: #666666; + font-size: 9pt; + +} + +.version-info a.version-navigation{ + border:1px solid #EEEEEE; + padding:0.2em 0.4em; + position:relative; + text-decoration:none; + top:1px; + display: inline-block; + min-width: 75px; + text-align:center; +} + +.version-info span.current-version-margin{ + margin: 15px; +} + +.version-info div.navigation-spacing{ + margin-left: 24px; + padding-top: 2px; + font-size: 8pt; + +} + +.version-info strong.version-info-description{ + margin-left: 4px; +} + +.has-sidebar #version-info{ + margin-right: 17em; +} + +.has-blog-sidebar #version-info{ + margin-right: 24em; +} + +/* Fix menu focus when selecting with mouse in Firefox */ +li:active, a:active { + outline: none; +} + +/* Confluence global/space message styles */ +#messageContainer { + background: #fff; + list-style: none; + margin: 0; + padding: 0; +} + +#messageContainer li { + padding: 5px; + display: none; +} + +.message-close-button { + height: 16px; + width: 16px; + border: none; + float: right; + cursor: pointer; +} + +.page-metadata ul { + overflow: hidden; + margin: 0; + padding: 0; +} + +.page-metadata ul li { + list-style: none; + float: left; + padding: 0 5px 0 0; + margin: 0; +} + +.page-metadata ul a.page-metadata-icon { + text-decoration: none; +} + +.page-metadata ul a.page-restrictions span, +.page-metadata ul a.page-tinyurl span, +.page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + float: left; + height: 16px; + width: 16px; + text-indent: -9999em; +} + +.page-metadata ul a.page-restrictions span { + background: url(../../../images/icons/lock_16_grey.png) no-repeat; +} + +.page-metadata ul a.page-tinyurl span { + background: url(../../../images/icons/permalink_light_16.png) no-repeat; +} + +.page-metadata ul a.page-tinyurl:hover span { + background: url(../../../images/icons/permalink_dark_16.png) no-repeat; +} + +.page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + background: url(../../../images/icons/attach_16.png) no-repeat; +} + +.on-label, .yes-label { + color: #090; + font-weight: 800; +} + +.off-label, .no-label { + color: #900; + font-weight: 800; +} + +.progress-fill-color { + background: #00df00; +} + +.progress-background-color { + background: #fff; +} + +.vertical-center-aligning-container { + display: table; + height: 400px; + /* position : relative; */ + overflow: hidden; +} + +.vertical-center-div-outer { + display: table-cell; + vertical-align: middle; +} + +.vertical-center-div-inner { + text-align: center; +} + +.in-progress { + background-color: #ccc; +} + +h2.subheading, +#profile-main h2.subheading { + border-bottom: 1px solid #ddd; + color: #333; + font-weight: normal; + font-size: 1.1em; + margin: 0; +} + +.subheading { + color: #222; +} + +/*Columns*/ +div.section.one { + float: left; + width: 40%; +} +div.section.two { + float: left; + width: 60%; +} +div.section.two .section { + margin-left: 10px; +} + +.subheading .rss-icon { + background: url(../../../images/icons/feed-icon-16x16.png); + float: right; + height: 16px; + text-decoration: none; + width: 16px; + line-height: 0; +} + +.subheading .email-notification-icon { + background: url(../../../images/icons/watch_on_16.png); + float: right; + height: 16px; + text-decoration: none; + width: 16px; + line-height: 0; + margin-right: 5px; +} +/* End Confluence master stylesheet */ + +/** Font Colours */ +em.bad, +strong.bad { + font-style: normal; + color: #900; +} +em.good, +strong.good { + font-style: normal; + color: #090; +} +em.disabled, +strong.disabled { + font-style: normal; + color: #999; +} +/* **/ + +.blogpost .wiki-content { + _height: 1%; +} + +#version-comment.noteMacro { + padding: 5px; + +} + +#space-admin-body { + padding: 0 10px; +} + +#ajax-error { + background-color: #fcc; + border: 1px solid #741311; +} + +#ajax-error span.error{ + display: block; + text-align: center; + color: #741311; + line-height: 2; +} + +#ajax-error span.error a.close{ + margin-left: 10px; + text-decoration: underline; +} + +#poweredby { + background-image: url(../../../images/decoration/footer-shadow.gif); + background-repeat: repeat-x; +} + +#footer-warning { + display: block; + background-color: #ffffce; + border-top: 1px solid #f0c000; + border-bottom: 1px solid #f0c000; + color: #000; + padding: 2px 5px; +} + +.welcome-message-heading{ + font-size: 14pt; + color: #3C78B5; + font-weight: normal; + font: Arial FreeSans Helvetica sans-serif; + padding: 3px 0 2px 0; + margin: 1em 4px 0 0; + border-bottom: 1px solid #ccc; +} +.wiki-content, +.wiki-content p, +.wiki-content table, +.wiki-content tr, +.wiki-content td, +.wiki-content th, +.wiki-content ol, +.wiki-content ul, +.wiki-content li { + font-size: 10pt; + line-height: 13pt; +} + +.wiki-content p { + margin: 10px 0; + padding: 0; +} + +.wiki-content li, +.wiki-content ul p, +.wiki-content ol p { + margin: 0; + padding: 0; +} + +.wiki-content ul { + list-style-type: disc; +} + +.wiki-content ol, +.wiki-content ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol ol { + list-style-type: decimal; +} + +.wiki-content ol ol, +.wiki-content ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol ol ol { + list-style-type: lower-alpha; +} + +.wiki-content ol ol ol, +.wiki-content ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol ol ol ol { + list-style-type: lower-roman; +} + +/*Needs the id selector because of the +'#com-atlassian-confluence h1' entry in master.css*/ +#com-atlassian-confluence .wiki-content h1, +.wiki-content h1, +.wiki-content h2, +.wiki-content h3, +.wiki-content h4, +.wiki-content h5, +.wiki-content h6 { + font-weight: bold; + line-height: normal; + padding: 0; +} + + +#com-atlassian-confluence .wiki-content h1, +.wiki-content h1 +{ + font-size: 21pt; + margin-top: 38px; +} + +.wiki-content h2 { + font-size: 18pt; + margin-top: 32px; +} + +.wiki-content h3 { + font-size: 15pt; + margin-top: 28px; +} + +.wiki-content h4 { + font-size: 13pt; + margin-top: 25px; +} + +.wiki-content h5 { + font-size: 11pt; + margin-top: 22px; +} + +.wiki-content h6 { + font-size: 10pt; + margin-top: 22px; +} + +.wiki-content .confluenceTable, .grid { +/* + margin-left: 0; + margin-right: 0; + margin-top: 10px; + margin-bottom: 10px; +*/ + padding: 0; + margin: 5px 0; +} + +.wiki-content td.confluenceTd, +.wiki-content th.confluenceTh { + padding: 5px 7px; +} +.wiki-content-preview { + padding: 5px; + border-left: 1px solid; + border-right: 1px solid; +} + +.wiki-content .preformattedContent, +.wiki-content .codeContent{ + padding: 12px 10px; +} + +.wiki-content .preformattedContent pre, +.wiki-content .codeContent pre{ + margin:0; + /** matches renderer-macros.css: .preformatted pre */ + font-family:"Courier New",Courier,monospace; + line-height:1.3; +} + +/* Styles for TinyMCE editor content */ + +.mceContentBody { + border: none; + padding: 10px; + text-align: left; + background: #fff; +} + +/* IE makes paragraphs in tables, so remove the default margin */ +.mceContentBody .confluenceTable p { + margin: 0; +} + +/* Firefox puts resizing controls on tables. They don't line up with tables unless they have margin 1px. +(0 breaks the border) */ +body.mceContentBody table.confluenceTable { + margin: 1px; +} + +.mceContentBody .wysiwyg-macro-body-preformat { + border: #ccc solid 1px; /* stick to neutral colour, or move to colors-css.vm if required */ + /* horizontal margin matches .panel */ + margin: 5px 20px; +} + +/* Styles for macros */ +.mceContentBody .wysiwyg-macro-inline { + display: inline; +} +.mceContentBody .user-new-line, +.mceContentBody .wysiwyg-macro-body-newline { + display: none; + line-height: 0; +} + +/* Styles for the RTE Autocomplete component */ +#autocomplete { + background-color: #eee; + border: solid 1px #ddd; +} +#autocomplete-trigger{ + background-color: #ddd; + padding: 0 2px; +} +#autocomplete-search-text { + padding: 0 4px 0 2px; +} +#tab-navigation { + border-bottom: 1px solid; + margin: 0 -10px; + margin-bottom: 10px; + padding: 0 10px; +} + +.tab-navigation { + list-style: none; + display: block; + margin: 0 0 -1px; + padding: 0; + overflow: hidden; +} +.tab-navigation .tab { + float: left; + display: inline; + font-weight: bold; + margin: 0 5px -1px 0; +} +.tab-navigation .tab a { + padding: .3em .4em; + text-decoration: none; + display: block; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; +} +.tab-navigation .notab { + margin: 1px 1px 0 1px; + padding: .3em; + float: left; +} + +/* Make the following more specific, so they aren't overriden by themes. */ +ul.tab-navigation .current a { + color: #000; + background-color: #fff; + border-bottom-color: #fff; /* IE */ +} +ul.tab-navigation .current a:hover { + color: #000; + background-color: #fff; + border-bottom-color: #fff; /* IE */ +} + +/* + * Drop down menu stylesheet + */ + +/* Menu bar layout */ +.ajs-menu-bar { + float: right; + line-height: 1.5; + position: relative; +} +.ajs-menu-bar, +.ajs-menu-bar .ajs-button, +.ajs-menu-bar .ajs-button a, +.ajs-menu-bar .ajs-button span, +.ajs-menu-bar .ajs-menu-item .ajs-menu-title, +.ajs-menu-bar .ajs-menu-item .ajs-menu-title span, +.ajs-menu-bar .ajs-menu-item .ajs-menu-title span span, +.ajs-menu-bar .ajs-drop-down a, +.ajs-menu-bar .ajs-drop-down a span, +.ajs-menu-bar .ajs-drop-down a span span { + /* all containers are block-level with no margin or padding by default */ + display: block; + margin: 0; + padding: 0; +} +.ajs-menu-bar .ajs-button span, +.ajs-menu-bar .ajs-menu-item .trigger span span { + padding-right: 1em; /* gap after menu label, must be wider than indicator image */ +} +.ajs-menu-bar .ajs-menu-item, +.ajs-menu-bar .ajs-button { + float: left; + list-style: none; + position: relative; +} +.ajs-menu-bar .ajs-menu-item a, +.ajs-menu-bar .ajs-button a { + line-height: 1.5; + text-decoration: none; + white-space: nowrap; +} +.ajs-menu-bar .ajs-button { + float: left; + line-height: 2; + list-style: none; + position: static; +} + +/* Drop-down indicator icon and on-hover colour changing */ +.ajs-menu-bar .ajs-menu-item .trigger span { + background-image: url(../../../images/decoration/menu_indicator.gif); + position: relative; +} +.ajs-menu-bar .ajs-menu-item.opened .trigger span { + background-image: url(../../../images/decoration/white_menu_indicator.gif); +} + +.ajs-menu-bar .ajs-menu-item.opened .trigger span span, +.ajs-menu-bar .ajs-menu-item .trigger span span { + background-image: none; +} +.ajs-menu-bar .ajs-button a:hover, +.ajs-menu-bar .ajs-menu-item.opened .trigger span { + color: #fff; /* system colour - not derived from colour scheme */ +} + +/* Menu bar icons */ +.ajs-menu-bar .ajs-menu-item .trigger span { + background-position: 100% 50%; + background-repeat: no-repeat; +} +.ajs-menu-bar .ajs-button span, +.ajs-menu-bar .ajs-menu-item .trigger span span { + background-position: 0 50%; + background-repeat: no-repeat; +} + +/* Drop-down menu layout */ +.ajs-menu-bar .ajs-menu-item .ajs-drop-down a { + background: #fff no-repeat 4px 50%; + border: none; + display: block; + line-height: 1.6; + margin: 0; + padding: 0 0.5em 0 24px; + text-decoration: none; +} +.ajs-menu-bar .ajs-drop-down { + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + background: #fff; /* system colour - not derived from colour scheme */ + border: solid 1px #c1c1c1; + font-weight: normal; + min-width: 12em; + padding: 0; + position: absolute; + left: 0; + white-space: nowrap; + z-index: 1000; +} + +/* CONFDEV-820 - Temporary fix */ +#header-menu-bar .ajs-drop-down { + min-width: 15em; +} + +.ajs-menu-bar .ajs-drop-down.above { + -moz-border-radius: 0; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -webkit-border-radius: 0; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + bottom: 2em; + margin-top: -2px; +} +.ajs-menu-bar .ajs-drop-down ul, +.ajs-menu-bar ul.ajs-drop-down { + border-top: solid 1px #e1e1e1; + margin: 0; + padding: 5px 0; + position: relative; + list-style: none; +} +.ajs-menu-bar .ajs-drop-down ul.first, +.ajs-menu-bar ul.ajs-drop-down.first { + border-top: none; +} +.ajs-menu-bar .ajs-drop-down li { + margin: 0; + padding: 0; +} +.ajs-menu-bar .ajs-menu-item div.ajs-drop-down a { + background-position: .5em 50%; + background-repeat: no-repeat; + border: none; + display: block; + line-height: 2; + margin: 0; + padding: 0 1em 0 28px; + position: relative; + text-decoration: none; + white-space: nowrap; +} +.ajs-menu-bar .ajs-drop-down a img { + float: left; + height: 16px; + margin: .3em 0 0 -20px; + width: 16px; +} + +/* Drop-down menu icons */ +.ajs-menu-bar .ajs-drop-down a.add-comment { + background-image: url(../../../images/icons/comment_16.png); +} +.ajs-menu-bar .ajs-drop-down a.add-attachment { + background-image: url(../../../images/icons/attach_16.png); +} +.ajs-menu-bar .ajs-drop-down a.add-page { + background-image: url(../../../images/icons/docs_16.gif); +} +.ajs-menu-bar .ajs-drop-down a.add-news { + background-image: url(../../../images/icons/blogentry_16.gif); +} +.ajs-menu-bar .ajs-drop-down a.action-view-history { + background-image: url(../../../images/icons/clock_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-permissions { + background-image: url(../../../images/icons/lock_16_grey.png); +} +.ajs-menu-bar .ajs-drop-down a.action-view-attachments { + background-image: url(../../../images/icons/attach_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-favourite { + background-image: url(../../../images/icons/fav_off_16.png); +} +.ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected { /* using IE style here to make IE7 not duplicate bg */ + background-image: url(../../../images/icons/fav_on_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-watching-space { + background-image: url(../../../images/icons/watching_space_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-manage-watchers { + background-image: url(../../../images/icons/watch_manage_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-watching { + background-image: url(../../../images/icons/watch_off_16.png); +} +.ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected { /* using IE style here to make IE7 not duplicate bg */ + background-image: url(../../../images/icons/watch_on_16.png); +} +.ajs-menu-bar .ajs-drop-down a.waiting { + background-image: url(../../../images/icons/wait.gif); +} + +.ajs-menu-bar .ajs-menu-item .section-secondary li a, +.ajs-menu-bar .ajs-menu-item .section-modify li a { + padding-left: 8px; + font-size: .9em; +} + +.ajs-menu-bar .ajs-menu-item .ajs-drop-down li.hidden { + display: none; +} + +/* Customisations for header menu bar */ +#header-menu-bar { + margin-top: 0; + margin-right: 5px; +} +#header .ajs-menu-item a { + float: left; + line-height: 1.5; + margin: 0; + text-decoration: underline; +} +#header-menu-bar li.ajs-menu-item a { + line-height: 2; +} +#header-menu-bar li.ajs-menu-item .ajs-drop-down a { + line-height: 1.5; +} +#header .ajs-menu-bar li.ajs-menu-item, +#header .ajs-menu-bar li.ajs-button { + margin: 0; + padding: 0; +} +#header .ajs-menu-bar li.ajs-menu-item a { + padding-left: 0.5em; +} +#header .ajs-menu-item .trigger span { + background-image: url(../../../images/decoration/white_menu_indicator.gif); /* header menus always use a white indicator */ +} +#header .ajs-menu-item .trigger span span { + background: none; +} +#header .ajs-menu-bar li.ajs-menu-item a.trigger:focus { + outline: none; +} +#header .ajs-menu-bar li.ajs-menu-item a.trigger { + float: left; + padding: 0 0.5em; + text-decoration: none; +} +#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down li, +#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down a { + background-color: #fff; /* system colour - not derived from colour scheme */ + background-image: none; +} +.ajs-menu-bar .ajs-menu-item.opened, +.ajs-menu-bar .ajs-button a { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} +.ajs-menu-bar .ajs-menu-item.opened { + -moz-border-radius-bottomleft: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 0; +} + +/* Customisations for header menus */ +#header .ajs-menu-bar .ajs-drop-down { + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-top: none; + margin-top: 0; + margin-left: -1px; + top: 2em; + z-index: 9; +} +#header .ajs-menu-bar .ajs-drop-down a { + float: none; + padding: 2px 2em; + text-decoration: none; +} +#header .ajs-menu-bar .ajs-menu-item .ajs-drop-down ul, +#header .ajs-menu-bar .ajs-menu-item ul.ajs-drop-down { + border-top: 1px solid #cce; +} +#header .ajs-menu-bar .ajs-drop-down ul.first, +#header .ajs-menu-bar ul.ajs-drop-down.first { + border: none; +} + +/* Customisations for navigation menu bar */ +#navigation .ajs-menu-bar { + margin: 10px 0 0 1em; +} +#navigation .ajs-menu-bar .ajs-button span, +#navigation .ajs-menu-bar .ajs-menu-item .ajs-menu-title span span { + padding-left: 25px; /* width of icon + gap before menu label */ +} +/*#navigation .ajs-menu-bar li.ajs-menu-item, +#navigation .ajs-menu-bar li.ajs-button { + margin-top: -10px; +} +*/ +#navigation .ajs-menu-bar li.ajs-menu-item .ajs-menu-title, +#navigation .ajs-menu-bar li.ajs-button a { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + color: #535353; /* system colour - not derived from colour scheme */ + font-size: 1.1em; + line-height: 20px; + padding: .35em .5em; +} +#navigation .ajs-menu-bar li.ajs-menu-item .ajs-menu-title { + -moz-border-radius-bottomleft: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 0; +} +#navigation .ajs-menu-bar .ajs-button a.edit span { + background-image: url(../../../images/icons/edit_20.png); +} +#navigation .ajs-menu-bar .ajs-button a.view span { + background-image: url(../../../images/icons/view_20.png); +} +#navigation .ajs-menu-bar li.ajs-menu-item a.add span span { + background-image: url(../../../images/icons/add_20.png); +} +#navigation .ajs-menu-bar li.ajs-menu-item a.action span span { + background-image: url(../../../images/icons/tools_20.png); +} +.ajs-menu-bar .ajs-menu-item .most-right-menu-item { + left: auto; + margin: 0; + right: 0; +} +#header .ajs-menu-item a.ajs-menu-title span { /* Not sure why these styles need to be duplicated for IE, but it works. */ + background-image: url(../../../images/decoration/white_menu_indicator.gif); /* header menus always use a white indicator */ + background-repeat: no-repeat; + background-position: 100% 60%; /* 60% lines up with middle of lowercase letters in IE */ +} +.ajs-drop-down { + clear: both; + z-index: 500; + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down li { + border-bottom: solid 1px #fff; +} +.ajs-menu-bar .ajs-drop-down li { + display: block; + margin: 0; + padding: 0; + position: relative; +} + +#navigation .ajs-menu-bar .ajs-drop-down a { + display: block; + padding: 0.33em 0.67em; + cursor: pointer; +} +#navigation .ajs-menu-bar div.ajs-drop-down a span { + padding: 0 0 0 21px; + height: 16px; + line-height: 16px; +} +.ajs-menu-bar div.ajs-drop-down a span { + cursor: pointer; + height: 16px; + line-height: 16px; + zoom: 1; +} +#navigation .ajs-menu-bar .section-secondary li a, +#navigation .ajs-menu-bar .section-modify li a { + line-height: 2; + padding-left: 0; +} +#navigation .ajs-menu-bar .section-secondary li a span, +#navigation .ajs-menu-bar .section-modify li a span { + padding-left: 8px; +} +.ajs-menu-bar .ajs-drop-down a img { + clear: left; + float: none; + margin: .3em 0 .3em -20px; + vertical-align: middle; +} + +#navigation .ajs-menu-bar .ajs-button a, +#navigation .ajs-menu-bar .ajs-button a span { + display: inline-block; /* makes the edit button have layout, but doesn't give it enormous width*/ +} + +.ajs-menu-bar .ajs-drop-down a.add-page, +.ajs-menu-bar .ajs-drop-down a.add-news { + background: none; +} +.ajs-menu-bar .ajs-drop-down a.add-page span { + background: url(../../../images/icons/docs_16.gif) no-repeat 0 50%; +} +.ajs-menu-bar .ajs-drop-down a.add-news span { + background: url(../../../images/icons/blogentry_16.gif) no-repeat 0 50%; +} + +* html .ajs-menu-bar .ajs-drop-down a.add-comment { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.add-comment span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/comment_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.add-attachment, +* html .ajs-menu-bar .ajs-drop-down a.action-view-attachments, +* html .page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.add-attachment span, +* html .ajs-menu-bar .ajs-drop-down a.action-view-attachments span, +* html .page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/attach_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .page-metadata ul a.action-view-attachments span.page-metadata-attachments-count { + display: inline-block; /* IE6 */ + text-indent: 9999em; +} +* html .page-metadata ul a.page-restrictions span, +* html .ajs-menu-bar .ajs-drop-down a.action-view-history, +* html .ajs-menu-bar .ajs-drop-down a.action-page-permissions, +* html .ajs-menu-bar .ajs-drop-down a.action-page-favourite, +* html .ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected, +* html .ajs-menu-bar .ajs-drop-down a.action-manage-watchers, +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching-space, +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching, +* html .ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.action-view-history span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/clock_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .page-metadata ul a.page-restrictions span, +* html .ajs-menu-bar .ajs-drop-down a.action-page-permissions span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/lock_16_grey.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-page-favourite span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/fav_off_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/fav_on_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching-space span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watching_space_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-manage-watchers span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watch_manage_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watch_off_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watch_on_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.waiting { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.waiting span { + background-image: url(../../../images/icons/wait.gif); + background-repeat: no-repeat; + filter: inherit; +} +* html #navigation .ajs-menu-bar .ajs-button a.edit span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/edit_20.png', sizingMethod='crop')"); + width: 1%; +} + +* html #navigation .ajs-menu-bar li.ajs-menu-item a.add span span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/add_20.png', sizingMethod='crop')"); + width: 1%; +} + +* html #navigation .ajs-menu-bar li.ajs-menu-item a.action span span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/tools_20.png', sizingMethod='crop')"); + width: 1%; +} + +* html #navigation .ajs-menu-bar .ajs-button a.view span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/view_20.png', sizingMethod='crop')"); + width: 1%; +} + +table.confluenceTable { + margin: 5px; + border-collapse: collapse; +} + +td.confluenceTd, table.confluenceTable td.confluenceTd { + border-width: 1px; + border-style: solid; + border-color: #ddd; + padding: 5px; + vertical-align: top; + min-width: 0.6em; +} + +th.confluenceTh, table.confluenceTable th.confluenceTh { + border-width: 1px; + border-style: solid; + border-color: #ddd; + padding: 5px; + background-color: #f0f0f0; + text-align: left; + vertical-align: top; + min-width: 0.6em; +} +.panel { + color: black; + padding: 0; + margin: 10px 20px; + background: #f0f0f0; + border-width: 1px; + border-style: solid; + overflow: hidden; +} + +.alertPanel { + border-color: #c00; +} + +.infoPanel { + border-color: #69c; +} + +.alertPanel, .infoPanel { + border-style: solid; + border-width: 1px; + padding: 8px; + margin: 10px; +} + +.infopanel-heading { + font-weight: bold; + padding: 4px 0 2px 0; +} + +/* basic panel (basicpanel.vmd) style */ +.basicPanelContainer { + border-width: 1px; + border-style: solid; + margin-top: 2px; + margin-bottom: 8px; + width: 100%; +} + +.basicPanelTitle { + padding: 5px; + margin: 0; + background-color: #f0f0f0; + color: black; + font-weight: bold; +} + +.basicPanelBody { + padding: 5px; + margin: 0; +} + +.panelHeader { + padding: 0 12px; + line-height: 2; /* vertical alignment for title */ + text-align: center; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.codeHeader, .panelHeader, .panelContent { + background: #f0f0f0; +} + +.preformattedHeader, .codeContent, .preformattedContent { + background: #fff; +} + +.panelContent { + color: #000; + margin: 0; + padding: 0 12px; + text-align: left; + font-size: .95em; +} + +.panelContent, +.panelContent p, .panelContent th, +.panelContent td, .panelContent li { + text-align: left; +} + + +html body { /* HACK: Temporary fix for CONF-15412 */ + overflow: visible; +} + +/* IE7 fix for CONFDEV-1056 */ +body.dashboard { + *min-width: 1000px; +} +img { + -ms-interpolation-mode: bicubic; +} +#header { + height: 1%; +} +#breadcrumbs { + height: 1%; /* IE6 wrapping */ + overflow: auto; + *overflow: visible; /* IE7 and below */ +} +#breadcrumbs li { + white-space: nowrap; +} +* html #breadcrumbs li { + background-image: url(../../../images/decoration/white_breadcrumbs_indicator.gif); /* IE6 */ +} +* html .page-metadata { + height: 1.2em; /* IE6 */ +} +#breadcrumbs li { + background-position: 3px 10px; +} +form { + margin: 0; + padding: 0; +} +.tab-navigation .tab { + float: left; + display: inline; + font-weight: bold; + margin: 0 5px 0 0; + position: relative; +} +.tab-navigation .tab a { + display: inline-block; /* anchors were making tabs very wide in Clickr theme in IE */ +} +a.icon { + height: 16px; +} +#tree-div { + min-height: 300px; + height: auto !important; + height: 300px; +} +h1 #content-title { + margin: 0; + display: block; + width: 90%; /* 93% and upwards breaks at least one of the IEs */ +} + +h1 span.title-text { + height: 1%; +} +#com-atlassian-confluence h1 { + width: auto; +} + +#com-atlassian-confluence h1 img.logo { + *margin-bottom: 0; +} + +* html #com-atlassian-confluence h1 img.custom { + /* sets max-height for IE - roughly equivalent to what real browsers do with 2.5em max-height */ + height: expression( this.scrollHeight > 59 ? "60px" : "auto" ); +} + +#tab-navigation, +.tab-navigation { + zoom: 1; +} +.has-sidebar #content .code { + _clear: both; + _overflow: auto; +} +.menu-section-list li a:visited, +.menu-section-list li a:hover { + color: #666; +} +.menu-section-list li.active a:visited { + color: #fff; +} + +/* Don't remove or dropdowns may break in IE6. CONF-17932 */ +* html #header-menu-bar .hidden { + width: 12em; +} + +* .bloglistitems{ + list-style-type: none; + padding-left: 1em; + padding-right: 1em; + margin-top: 0.5em; + margin-bottom: 0.5em; + margin-left: 0; +} + +* .blogmonthnavigation{ + border:1px solid #CCCCCC; + position:relative; + text-decoration:none; + display: inline-block; + width: 10em; + font-size: 0.85em; + text-align:center; + margin: 0 -0.5em 1em 1em; + padding: 0.2em 0.4em; +} + +#conflict-diffs, #page-diffs{ + min-height: 55px; +} + +#page-diffs .diff { + *margin-right: 1em; +} + +/* TODO: remove temp fix after AUI upgrade + CONFDEV-918 temp fix, prevents IE7 crash. Don't remove until https://studio.atlassian.com/browse/AJS-509 + is resolved and the fix version is implemented in Confluence. */ +#com-atlassian-confluence form.dashboard-actions { + *min-height: 0; +} +/* end CONFDEV-918 temp fix */ + +/* + Styles for macros bundled in Renderer. +*/ + +.panelMacro { + margin: 10px 20px; + overflow: hidden; /* fix width next to floated content */ +} + +.panelMacro table { + text-align: left; + padding: 0 20px; + width: 100%; +} + +.panelMacro td, .panelMacro p { + font-size: 1em; + padding: 14px 0; +} + +.searchMacro { + font-size: 10pt; + margin: 10px 0; +} + +.searchMacro .result { + margin-top: 3px; + padding: 0 5px 5px 5px; + border-bottom: 1px solid #ddd; +} + +.searchMacro .resultSummary { + margin-bottom: 7px; +} + +.rssMacro { + font-size: 10pt; +} + +.rssMacro table { + margin: 10px 0; + width: 100%; + border-collapse: collapse; +} + +.rssMacro table th, +.rssMacro table td { + border: 1px solid #ccc; + padding: 4px; +} + +.rssMacro table th { + background: #f0f0f0; +} + +/* Code styles */ +.code { + border-width: 1px; + border-style: dashed; + overflow: auto; +} + +.code, .preformatted { + background-color: #fff; +} + +.code pre, .preformatted pre { /* needs 'pre' to override TinyMCE style */ + font-family:"Courier New", Courier, monospace; + line-height: 1.3; +} + +.code-keyword { + color: #000091; + background-color: inherit; +} + +.code-object { + color: #910091; + background-color: inherit; +} + +.code-quote { + color: #009100; + background-color: inherit; +} + +.code-comment { + color: #808080; + background-color: inherit; +} + +.code-xml .code-keyword { + color: inherit; + font-weight: bold; +} + +.code-tag { + color: #000091; + background-color: inherit; +} + +/* Recently Updated Styles */ +.recentlyUpdatedItem { + border-bottom: #f0f0f0 1px solid; + border-top: #f0f0f0 1px solid; + margin: 10px 0 0 0; + padding: 0; + border-spacing: 0; + width: 100%; + text-decoration: none; + border-collapse: collapse; +} + +.recentlyUpdatedItem td { + padding: 10px; + border-bottom: #f0f0f0 1px solid; + vertical-align: top; +} + +.recentlyUpdatedItem .authorAndDate { + background-color: #f0f0f0; + width: 25%; +} + +.recentlyUpdatedItem .date { + margin-top: 4px; + font-size: 90%; + color: #666; +} + +.recentlyUpdatedItem .profilePic { + float: right; + background-color: #f0f0f0; + margin: 0 2px; +} + +.recentlyUpdatedItem .twixie { + padding: 10px 0 0 4px; +} + +.recentlyUpdatedItem td.icon { + padding: 8px 0 0 1px; +} + +.recentlyUpdatedItem .details { + padding-left: 7px; +} + +.recentlyUpdatedItem .summary, .recentlyUpdatedItem .thumbnail { + margin-top: 3px; + color: #666; +} + +.moreRecentlyUpdatedItems { + text-align: right; + margin-top: 10px; + font-size: 10pt; +} + +a.content-type-page span, div.content-type-page, span.content-type-page { + background-image: url(../../../images/icons/docs_16.gif); + background-repeat: no-repeat; +} + +a.content-type-blogpost span, div.content-type-blogpost, span.content-type-blogpost { + background-image: url(../../../images/icons/blogentry_16.gif); + background-repeat: no-repeat; +} + +a.content-type-comment span, div.content-type-comment, span.content-type-comment { + background-image: url(../../../images/icons/comment_16.gif); + background-repeat: no-repeat; +} + +a.content-type-space span, div.content-type-space, span.content-type-space, +a.content-type-spacedesc span, div.content-type-spacedesc, span.content-type-spacedesc { + background-image: url(../../../images/icons/web_16.gif); + background-repeat: no-repeat; +} + +a.content-type-personalspacedesc span, div.content-type-personalspacedesc, span.content-type-personalspacedesc { + background-image: url(../../../images/icons/personal_space_16.gif); + background-repeat: no-repeat; +} + +a.content-type-mail span, div.content-type-mail, span.content-type-mail { + background-image: url(../../../images/icons/mail_content_16.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment span, div.content-type-attachment, span.content-type-attachment { + background-image: url(../../../images/icons/attachments/file.gif); + background-repeat: no-repeat; +} + +a.content-type-file span, div.content-type-file, span.content-type-file { + background-image: url(../../../images/icons/attachments/file.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-pdf span, div.content-type-attachment-application-pdf, span.content-type-attachment-application-pdf { + background-image: url(../../../images/icons/attachments/pdf.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-image span, div.content-type-attachment-image, span.content-type-attachment-image { + background-image: url(../../../images/icons/attachments/image.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-text-xml span, div.content-type-attachment-text-xml, span.content-type-attachment-text-xml { + background-image: url(../../../images/icons/attachments/xml.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-text-html span, div.content-type-attachment-text-html, span.content-type-attachment-text-html { + background-image: url(../../../images/icons/attachments/html.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-text span, div.content-type-attachment-text, span.content-type-attachment-text { + background-image: url(../../../images/icons/attachments/text.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-zip span, div.content-type-attachment-application-zip, span.content-type-attachment-application-zip { + background-image: url(../../../images/icons/attachments/zip.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-excel span, div.content-type-attachment-application-excel, span.content-type-attachment-application-excel { + background-image: url(../../../images/icons/attachments/excel.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-powerpoint span, div.content-type-attachment-application-powerpoint, span.content-type-attachment-application-powerpoint { + background-image: url(../../../images/icons/attachments/powerpoint.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-word span, div.content-type-attachment-application-word, span.content-type-attachment-application-word { + background-image: url(../../../images/icons/attachments/word.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-java span, div.content-type-attachment-java, span.content-type-attachment-java { + background-image: url(../../../images/icons/attachments/java.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-file span, div.content-type-attachment-file, span.content-type-attachment-file { + background-image: url(../../../images/icons/attachments/file.gif); + background-repeat: no-repeat; +} + +a.content-type-status span, div.content-type-status, span.content-type-status { + background-image: url(../../../images/icons/quotes.png); + background-repeat: no-repeat; +} + +div.content-type-userinfo, span.content-type-userinfo { + background-image: url(../../../images/icons/user_16.gif); + background-repeat: no-repeat; +} + +a.content-type-follow span, div.content-type-follow, span.content-type-follow { + background-image: url(../../../images/icons/fav_on_16.png); + background-repeat: no-repeat; +} + +a.content-type-favourite span, div.content-type-favourite, span.content-type-favourite { + background-image: url(../../../images/icons/fav_on_16.png); + background-repeat: no-repeat; +} + +body.login, +body.login #main, +body.login #full-height-container { + background: #fafafa; +} + +* html body.login, +* html body.login #full-height-container { + background: #f0f0f0; +} + +#com-atlassian-confluence.login h1 { + width: 560px; + margin: 0 auto; +} + +#login-container { + margin: 0 auto; + width: 500px; + padding: 20px 30px; + background: #fff; +} + +body.login #header, body.login #websudo { + display: none; +} + +/* Gets rid of the break above the footer */ +body.login .clear { + display: none; +} + +body.login #main { + overflow: hidden; + padding: 10% 0 12%; +} + +#login-container .form-error-block{ + background: none; + border: none; + margin: 0; + padding: 0; +} + +#login-container, +#login-container form.aui { + color: #333; +} + +#login-container, +#login-container .captcha-image { + border: 1px solid #eee; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +#login-container div.login-form-container { + margin-bottom: 10px; + padding: 0 0 5px 20px; +} + +#login-container .login-form-container fieldset { + padding-top: 15px; +} + +#login-container .checkbox label { + left: 0; + margin-right: 0; + float: none; + display: inline; +} + +/* Overide default label styling */ +#com-atlassian-confluence.login #login-container label { + color: #333; +} + +#com-atlassian-confluence.login #login-container .error p { + background: #fff; + color: #c00; +} + +#login-container .login-form-container .text, +#login-container .login-form-container .password { + width: 95%; +} + +#login-container .message { + padding: 0; + width: auto; +} + +#login-container p { + margin: 0 0 1em; + color: #333; +} + +#login-container p.last { + margin: 0; +} + +#login-container p.success-message { + color: green; +} + +body.signup #main{ + padding: 5% 0 7%; +} + +#login-container .captcha-image { + margin: 10px 0; + width: 200px; + height: 100px; + float: left; +} + +#captcha-error span.errorMessage { + font-weight: normal; +} + +#captcha-container .reload { + width: 16px; + height: 16px; + float: left; + position: relative; + top: 16px; + left: 10px; +} + +#captcha-container label#captcha-reponse-label { + float: none; + left: 0; + margin: 0; + width: auto; +} + +#captcha-container input { + width: 192px; +} + +#coherence-copyright { + margin: 0; + text-align: center; + font-size: 0.8em; + padding-bottom: 3px; +} + +#coherence-copyright a { + color: #666; +} + +#login-container .userLogoLink { + float: left; + padding-right: 5px; +} + +#login-container a#login-notyou { + padding-left: 5px; +} + +#login-container div.warningPanel { + margin: 0 0 10px 0; +} +span.icon, a.icon { + display: inline-block; + width: 16px; + height: 16px; + text-align: left; + text-indent: -9999em; +} + +/* used in pagelist.vm */ +.tabletitleops .icon { + width: 12px; + height: 12px; +} + +.icon-wait { + background: transparent url(../../images/icons/wait.gif) no-repeat scroll 0 0; +} +.icon-space { + background: transparent url(../../images/icons/web_16.gif) no-repeat scroll 0 0; +} +.icon-browse-space { + background: transparent url(../../images/icons/browse_space.gif) no-repeat scroll 0 0; +} +.icon-add-page { + background: transparent url(../../images/icons/add_page_16.gif) no-repeat scroll 0 0; +} +.icon-add-page-disabled { + background: transparent url(../../images/icons/add_page_faded_16.gif) no-repeat scroll 0 0; +} +.icon-add-fav { + background: transparent url(../../images/icons/star_grey.gif) no-repeat scroll 0 0; +} +.icon-remove-fav { + background: transparent url(../../images/icons/star_yellow.gif) no-repeat scroll 0 0; +} +.icon-home-page { + background: transparent url(../../images/icons/home_16.gif) no-repeat scroll 0 0; +} +.icon-recently-updated-page { + background: transparent url(../../images/icons/new_16.gif) no-repeat scroll 0 0; +} +.icon-page { + background: transparent url(../../images/icons/docs_16.gif) no-repeat scroll 0 0; +} +.icon-comment { + background: transparent url(../../images/icons/comment_16.gif) no-repeat scroll 0 0; +} +.icon-space { + background: transparent url(../../images/icons/web_16.gif) no-repeat scroll 0 0; +} +.icon-personal-space { + background: transparent url(../../images/icons/personal_space_16.gif) no-repeat scroll 0 0; +} +.icon-user { + background: transparent url(../../images/icons/user_16.gif) no-repeat scroll 0 0; +} +.icon-blog { + background: transparent url(../../images/icons/blogentry_16.gif) no-repeat scroll 0 0; +} +.icon-trackback { + background: transparent url(../../images/icons/document_exchange.gif) no-repeat scroll 0 0; +} +.icon-mail { + background: transparent url(../../images/icons/mail_content_16.gif) no-repeat scroll 0 0; +} +.icon-status { + background: transparent url(../../images/icons/quotes.png) no-repeat scroll 0 0; +} +.icon-show-more { + background: transparent url(../../images/icons/add_12.gif) no-repeat scroll 0 0; +} +.icon-show-less { + background: transparent url(../../images/icons/subtract_12.gif) no-repeat scroll 0 0; +} +.icon-file-pdf { + background: transparent url(../../images/icons/attachments/pdf.gif) no-repeat scroll 0 0; +} +.icon-file-image { + background: transparent url(../../images/icons/attachments/image.gif) no-repeat scroll 0 0; +} +.icon-file-xml { + background: transparent url(../../images/icons/attachments/xml.gif) no-repeat scroll 0 0; +} +.icon-file-html { + background: transparent url(../../images/icons/attachments/html.gif) no-repeat scroll 0 0; +} +.icon-file-java { + background: transparent url(../../images/icons/attachments/java.gif) no-repeat scroll 0 0; +} +.icon-file-text { + background: transparent url(../../images/icons/attachments/text.gif) no-repeat scroll 0 0; +} +.icon-file-zip { + background: transparent url(../../images/icons/attachments/zip.gif) no-repeat scroll 0 0; +} +.icon-file-excel97-template { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint97-template { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-word97-template { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-excel97 { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint97 { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-word97 { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-excel-macro { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-excel { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-excel-template { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint-macro { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint-slideshow { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint-template { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-word { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-word-template { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-unknown { + background: transparent url(../../images/icons/attachments/file.gif) no-repeat scroll 0 0; +} + +/* + * TODO: BN added in 3.3 + * https://studio.atlassian.com/browse/PLUG-580: Until this issue is + * resolved we can't follow the sprite guideline. + */ +.icon-people-directory span.icon { + background: transparent url(../../images/icons/people_directory_16.png) no-repeat scroll 0 0; +} + +.icon-rss-feed-small span.icon { + background: transparent url(../../images/icons/feed-icon-16x16-small.png) no-repeat scroll 0 0; +} + +.icon-create-space span.icon { + background: transparent url(../../images/icons/add_space_16.gif) no-repeat scroll 0 0; +} +/* Information plugin styles */ + +.noteMessage, .warningMessage, .infoMessage, .tipMessage { + border-style: solid; + border-width: 1px; + text-align: center; + padding: 5px; + overflow: hidden; /* fix width next to floated content */ +} + +.noteMessage { + border-color: #f0c000; + background: #ffffce; +} + +.warningMessage { + border-color: #c00; + background: #fcc; +} + +.infoMessage { + border-color: #69c; + background: #d8e4f1; +} + +.tipMessage { + border-color: #090; + background-color: #dfd; +} + +table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td { + border: none; +} + +.informationMacroPadding { + padding: 5px 0 0 5px; +} + +.noteMacro, .warningPanel { + background-color: #ffffce; +} +#addition .noteMacro { + border-style: solid; + border-width: 1px; + border-color: #f0c000; + background-color: #ffffce; + text-align:left; + padding: 10px; + width: 100%; + margin: 5px 20px; +} + +#addition .noteMacro td { + font-size: 10pt; + padding: 2px; + padding-right: 15px; +} + +#addition .noteMacro p { + font-size: 10pt; +} + +#addition .noteMacro b { + font-size: 10pt; +} + +#addition table.noteMacro td { + border: none; +} + +#replying .noteMacro { + border-style: solid; + border-width: 1px; + border-color: #f0c000; + background-color: #ffffce; + text-align:left; + padding: 10px; + width: 100%; + margin: 5px 20px; +} + +#replying .noteMacro td { + font-size: 10pt; + padding: 2px; + padding-right: 15px; +} + +#replying .noteMacro p { + font-size: 10pt; +} + +#replying .noteMacro b { + font-size: 10pt; +} + +#replying table.noteMacro td { + border: none; +} + +.tipMacro { + background-color: #dfd; +} + +.warningMacro { + background-color: #fcc; +} + +.infoMacro { + background-color: #d8e4f1; +} + +.warningPanel { + border-style: solid; + border-width: 1px; + padding: 8px; + margin: 10px; +} + +.warningPanel { + border-color: #f0c000; +} + + + + +/* Layout plugin styles */ + +.sectionMacro, +.sectionMacro p, +.sectionMacro ul, +.sectionMacro ol { + font-size: 10pt; +} + +table.sectionMacro td { + border: none; +} + +table.sectionMacroWithBorder td.columnMacro { + border-style: dashed; + border-width: 1px; + border-color: #ccc; +} + + +/* + Colors for Confluence (included for all themes by default). +*/ +h1, h2, h3, h4, h5, h6, +.wiki-content h1, +.wiki-content h2, +.wiki-content h3, +.wiki-content h4, +.wiki-content h5, +.wiki-content h6, +.pagetitle, +.steptitle, +.substeptitle, +.formtitle, +a.blogHeading, +.more-comments a, +th.confluenceTh, +table.confluenceTable th.confluenceTh, +table.admin th, +.form-element-large, +.form-element-small, +#com-atlassian-confluence .mce_h1 span.mceText, +#com-atlassian-confluence .mce_h2 span.mceText, +#com-atlassian-confluence .mce_h3 span.mceText, +#com-atlassian-confluence .mce_h4 span.mceText, +#com-atlassian-confluence .mce_h5 span.mceText, +#com-atlassian-confluence .mce_h6 span.mceText { + color: #003366; +} + +.wiki-content h1, +.wiki-content h2 { + border-bottom-color: #6699cc; +} + +.wiki-content-preview { + border-left-color: #6699cc; + border-right-color: #6699cc; +} + +.pageSectionHeader { + border-bottom-color: #6699cc; +} + +.panel { + border-color: #6699cc; +} + +.panelHeader, +.menuheading, +.pageheader, +.sectionbottom { + border-bottom-color: #6699cc; +} + +.topRow { + border-top-color: #6699cc; +} + +.tabletitle, .pageSectionHeader, .section-header h2 { + color: #003366; +} +.tabletitle, .pageSectionHeader { + border-bottom-color: #6699cc; +} + +a:link, +a:visited, +a:active, +a:hover, +#default-labels-header a.add { + color: #003366; +} + +h1 a:hover { + border-bottom-color: #003366; +} + +.spacenametitle-printable, +.spacenametitle-printable a, +.spacenametitle-printable a:visited { + color: #999999; +} + +.navItemOver, +.navItemOver a, +.navItemOver a:visited, +.navItemOver a:hover { + color: #ffffff; + background-color: #003366; +} + +.navItem { + background-color: #6699cc; +} + +.navItem a, +.navItem a:hover, +.navItem a:visited { + color: #ffffff; +} + +.tableview th { + color: #003366; + border-bottom-color: #6699cc; +} + +blockquote { + border-left-color: #6699cc; +} + +.navBackgroundBox { + background: #6699cc; +} + +.previewBoxTop, +.previewContent, +.previewBoxBottom, +.functionbox { + border-color: #6699cc; +} + +.smalltext-blue { + color: #6699cc; +} + +.tabnav, +.comment .tabnav, +ul.tabnav { + border-bottom-color: #6699cc; +} + +.tabnav .tabs a { + border-color: #6699cc; + background: #6699cc; +} + +.tabnav .tabs a:link, .tabnav .tabs a:visited { + color: #ffffff; +} +.tabnav .tabs a:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +.tabnav .spaceActionLinks a:link, +.tabnav .spaceActionLinks a:visited { + color: #003366; +} + +.foldertab-box { + border-left-color: #6699cc; + border-right-color: #6699cc; + border-bottom-color: #6699cc; +} + +#squaretab a { + border-color: #6699cc; +} + +#squaretab a:link, #squaretab a:visited { + background-color: #6699cc; +} + +#squaretab a:hover { + color: #ffffff; + background-color: #003366; + border-color: #003366; +} + +table.blogcalendar { + border-color: #6699cc; +} + +.blogcalendar th.calendarhead, +a.calendarhead, +a.calendarhead:link, +a.calendarhead:visited, +a.calendarhead:hover { + background-color: #6699cc; + color: #ffffff; +} + +.searchGroupHeading { + background-color: #6699cc; + color: #ffffff; +} + +.permissionTab { + background: #6699cc; + color: #ffffff; +} + +.permissionSuperTab { + background: #003366; + color: #ffffff; +} + +/* styles for links in the top bar */ +.topBarDiv a:link, +.topBarDiv a:visited, +.topBarDiv a:active, +.topBarDiv a:hover, +.topBarDiv { + color: #ffffff; +} + +.topBar { + background-color: #003366; +} + +.basicPanelContainer { + border-color: #6699cc; +} + +.greynavbar { + border-top-color: #6699cc +} + +div.license-personal { + background-color: #003366; + color: #ffffff; +} + +div.license-personal a { + color: #ffffff; +} + +.minitab { + border-bottom-color: #6699cc; +} + +.minitab a { + border-top-color: #6699cc; + border-right-color: #6699cc; + border-left-color: #6699cc; +} + +.minitab .unselected { + border-bottom-color: #6699cc; + background: #6699cc; +} + +#header { + background-color: #003366; +} +#header a, +#breadcrumbs, +#header .ajs-menu-bar li.ajs-menu-item a.trigger { + color: #ffffff; +} +.breadcrumbs { + border-color: #6699cc; +} + +#navigation, #tab-navigation { + border-bottom-color: #6699cc; +} + +#com-atlassian-confluence .aui-dd-parent .aui-dropdown .dropdown-item a, +.ajs-menu-bar li.ajs-menu-item .ajs-drop-down a { + color: #535353; +} +#header .ajs-menu-bar li.ajs-menu-item .ajs-drop-down a { + color: #003366; +} + +#com-atlassian-confluence .aui-dd-parent a.perms-dropdown-trigger:hover, +#com-atlassian-confluence .aui-dd-parent a.perms-dropdown-trigger:focus, +#com-atlassian-confluence .aui-dd-parent .aui-dropdown .dropdown-item.active a, +.menu-section-list li.active a, +.menu-section-list li.active a:hover, +#navigation .ajs-menu-bar .ajs-button a:hover, +/* .ajs-menu-bar .ajs-menu-item.opened, */ +.ajs-menu-bar .ajs-menu-item li.active a, +.aui-dd-parent .aui-dropdown li.active, +.aui-dd-parent .aui-dropdown li:hover span, +.aui-dd-parent .aui-dropdown a:focus span, +.ajs-menu-bar .ajs-menu-item.opened .ajs-drop-down li.active a, +#navigation .ajs-menu-bar li.ajs-button a.active, +#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down li.active a, +.ajs-content-hover .popup-follow a:hover { + color: #ffffff; + background-color: #6699cc; +} +#header .ajs-menu-bar li.ajs-menu-item.opened, +#header .ajs-menu-bar li.ajs-menu-item.opened a.trigger { + background-color: #336699; + border-color: #336699; +} +.ajs-menu-bar .ajs-menu-item.opened a.trigger { + background-color: #6699cc; +} + +#header .ajs-menu-bar .ajs-drop-down { + border-color: #003366; +} +#header .ajs-menu-bar .ajs-drop-down li.separator { + border-top-color: #003366; +} + +.tab-navigation .tab a { + background-color: #6699cc; + border: 1px solid #6699cc; + color: #ffffff; +} +.tab-navigation .tab a:hover { + color: #ffffff; + background-color: #003366; + border-bottom-color: #003366; +} + + + +/***** Pre 2.8 markup styles for backwards compatability ******/ +#foldertab { + border-bottom-color: #6699cc; +} + +#foldertab li a { + border-color: #6699cc; + background: #6699cc; +} + +#foldertab li a:link, +#foldertab li a:visited { + color: #ffffff; +} +#foldertab li a:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +.logoSpaceLink, +.logoSpaceLink a:link, +.logoSpaceLink a:visited, +.logoSpaceLink a:active { + color: #999999; +} + +.logoSpaceLink a:hover { + color: #003366; +} + +.selectedminitab { + border-color: #6699cc +} + +.unselectedminitab { + border-color: #6699cc; + background: #6699cc; +} + +.tabletitle, .heading-text-color { + color: #003366; +} + +a.unselectedminitab:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +ol.autocompleter li.focused { + background: #6699cc; + color: #ffffff; +} + +/* End colour styles for Confluence */ + +/* + This stylesheet defines styles that only apply to the Default theme. Styles common to all themes should go in + master.css +*/ +html, body { + height: 100%; +} + +body { + margin: 0; + font-family: Helvetica, Arial, sans-serif; + background-color:#fff; +} + +#full-height-container { + min-height: 100%; + position: relative; + background-color: #fff; +} + +#header { + margin: 0; + padding: 0 10px; + min-height: 2em; + line-height: 2; +} + +#websudo { + margin: 0; + padding: 0 10px; + min-height: 2em; + line-height: 2; +} + +.email{ + /* offset the negative margin set by the header for emails only */ + margin: 10px; +} + +#page-view-panel { + float: right; +} + +#com-atlassian-confluence h1 img { + max-height: 2.5em; /* scale logo image with font size */ + margin-bottom: 0.3em; +} +#com-atlassian-confluence h1 img.custom { + height: auto; +} + +h1 span.title-text { + display: table; /* page title wrapping drops straight down */ +} +h1 a:hover { + color: inherit; /* inherit the colour instead of hard-coding blue */ +} +.editable-title { + margin: 0 10px 0 58px; +} + +#main { + padding: 10px 10px 6em 10px; +} +.content-preview #main { + padding-bottom: 10px; +} + +#content { + clear: left; +} +#content.space { + margin-top: 2.6em; +} + +.quick-search-submit { + display: none; +} + +#page-view-panel li, #page-prefs-list li { + color: #666; + float: left; + font-size: .9em; + margin: 0 0 0 .3em; + padding: 0 0 0 .3em; +} + +#navigation { + display: inline; +} + +.page-actions { + float: right; + border: solid 1px #ccc; + padding: 5px; + margin-left: 10px; +} + +.remove-control { + display: none; +} + +.page-metadata { + color: #666; + font-size: 0.9em; + margin: 10px 0; +} +.page-metadata a:link, +.page-metadata a:active, +.page-metadata a:hover, +.page-metadata a:visited { + color: #666; + font-style: normal; +} + +.section-header { + margin-bottom: 5px; + padding: 2px 0; +} + +/* All links are set to action.linkColor but section header links are grey */ +.section-header a:link, +.section-header a:active, +.section-header a:hover, +.section-header a:visited { + color: #666; +} + +h2.section-title { + font-size: 12pt; + font-weight: bold; + color: black; + margin-top: 20px; + padding: 0; + display: inline; +} + +.section-title a:link, +.section-title a:active, +.section-title a:hover, +.section-title a:visited { + color: black; +} + +#sidebar, +.sidebar { + clear: right; + float: right; + width: 16em; + margin-left: 10px; +} + +#space-blog-search-query{ + width: 21.5em; +} + +#blog-sidebar{ + width: 22em; + margin-top: 2em; +} + +.has-sidebar #content.space, +.has-sidebar #content.edit form.markup, +.has-sidebar .wiki-content, +.has-sidebar.active-wikimarkup .errorBox{ + margin-right: 17em; +} + +.has-blog-sidebar #content.space, +.has-blog-sidebar #content.edit form.markup, +.has-blog-sidebar .wiki-content +{ + margin-right: 24em; +} + +.blog-post-listing .wiki-content, +.has-blog-sidebar .blogpost-view .wiki-content .wiki-content{ + margin-right: 0; +} + +.has-sidebar .wiki-content .wiki-content, +.has-blog-sidebar .wiki-content .wiki-content, +.has-blog-sidebar .comment-content.wiki-content { + margin-right: 0; +} + +.active-richtext #content.create-page, +.active-preview #content.create-page { + margin-right: 0 !important; +} + +.sidebar-content { + margin: 10px 0 0 1em; +} +.blogcalendar { + width: 16em; +} +.blogcalendar th a.calendarhead, +.blogcalendar th.calendarhead { + font-size: 1em; +} +.blogcalendar td, +.blogcalendar th { + font-size: .85em; +} + +/* folder tab link styles */ +.tabnav .tabs a { + padding: 5px 5px 4px; + margin: 5px 3px 0 0; + border-width: 1px; + border-style: solid; + border-bottom: none; + text-decoration: none; + display: block; + float: left; +} + +.tabnav .tabs a.current { + background: white; + border-bottom: 1px solid white; + color: black; +} +.tabnav .tabs a.current:link, .tabnav .tabs a.current:visited { + color: black; +} +.tabnav .tabs a.current:hover { + background: white; + border-bottom: 1px solid white; + color: black; +} + +/* list page navigational tabs */ +.tabnav, .comment .tabnav { + padding: 0; + margin: 0; + border-bottom-width: 1px; + border-bottom-style: solid; + float: left; + display: inline; + list-style-position: outside; + width: 100%; + font-weight: bold; + font-size: 10pt; +} + +.after-tabnav { + clear: both; +} + +.tabnav li.tabs { + list-style: none; + margin: 0 0 -1px 10px; + float: left; + display: block; +} + + +/* dashboard customization */ +#spacesLabel { + padding: 4px 6px; + float: left; + margin-top: 5px; +} + +#footer { + position:absolute; + bottom:0; + width:100%; +} + +#poweredby, +#poweredby a { + font-size: 11px; +} + +/* We can't have a separate IE css file because the default theme + hard codes the location of the theme stylesheet */ + +/* IE6: treated as min-height*/ +* html #full-height-container { + height: 100%; + background-color:#F0F0F0; +} + +* html #main { + padding-bottom: 1em; + height: 88%; /* fake ie6 min height - not perfect but better than alternatives */ +} + +* html #footer { + position: relative; +} + +/* no footer in popups. */ +body.popup-window #footer { + display: none; +} + +* html .popup-window #full-height-container { + background-color:#fff; +} + + + + + + diff --git a/site/trunk/site-publish/resultsetdrivendataobjecttypes.html b/site/trunk/site-publish/resultsetdrivendataobjecttypes.html new file mode 100644 index 0000000000..66395ad70e --- /dev/null +++ b/site/trunk/site-publish/resultsetdrivendataobjecttypes.html @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + Apache Tuscany : ResultSetDrivenDataObjectTypes + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > ResultSetDrivenDataObjectTypes + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

ResultSetDrivenDataObjectTypes 

+ +

When the RDB DAS is operating in pure dynamic mode (no user provided static DataObjects), it uses uses JDBC ResultSetMetadatato create the set of SDO Types used to construct the data graph returned as a result of a query. JDBC returns the data resulting from a query as a set of rows of column values. The associated ResultSetMetadata provides information about these values. Table name, column name, column type, etc. are all provided for each returned value.

+ +

For example, consider a database with the following table:

+
+
TABLE CUSTOMER
+      ID         INTEGER
+      LASTNAME   VARCHAR(20)
+      ADDRESS    VARCHAR(30)
+
+
+

The user might query the database like this:

+
+

DAS das = DAS.FACTORY.createDAS(getConnection());
+ Command readCustomers = das.createCommand("select * from CUSTOMER where LASTNAME = 'Williams'");
+ DataObject root = readCustomers.executeQuery();

+
+

The DAS returns a graph of DataObjects each of Type CUSTOMER and each instance will have three properties: (ID, LASTNAME, ADDRESS). Since this example does not pass the DAS a set of SDO Types to use, the DAS creates the Types dynamically based on the ResultSetMetadata.

+ +

The RDB DAS also allows clients to receive the results of queries as Static DataObjects (see WorkingWithStaticDataObjects).

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/running-the-samples.data/BigBank.Apache.Tuscany.ppt b/site/trunk/site-publish/running-the-samples.data/BigBank.Apache.Tuscany.ppt new file mode 100644 index 0000000000..f2a133deb2 Binary files /dev/null and b/site/trunk/site-publish/running-the-samples.data/BigBank.Apache.Tuscany.ppt differ diff --git a/site/trunk/site-publish/running-the-samples.data/DELETE.txt b/site/trunk/site-publish/running-the-samples.data/DELETE.txt new file mode 100644 index 0000000000..fa892050ad Binary files /dev/null and b/site/trunk/site-publish/running-the-samples.data/DELETE.txt differ diff --git a/site/trunk/site-publish/running-the-samples.data/DELETEME.txt b/site/trunk/site-publish/running-the-samples.data/DELETEME.txt new file mode 100644 index 0000000000..04c3096255 Binary files /dev/null and b/site/trunk/site-publish/running-the-samples.data/DELETEME.txt differ diff --git a/site/trunk/site-publish/running-the-samples.data/DELETEMETOO.txt b/site/trunk/site-publish/running-the-samples.data/DELETEMETOO.txt new file mode 100644 index 0000000000..4e422a21f2 Binary files /dev/null and b/site/trunk/site-publish/running-the-samples.data/DELETEMETOO.txt differ diff --git a/site/trunk/site-publish/running-the-samples.data/ModifiedCalculatorExample.pdf b/site/trunk/site-publish/running-the-samples.data/ModifiedCalculatorExample.pdf new file mode 100644 index 0000000000..c95bb62a6a Binary files /dev/null and b/site/trunk/site-publish/running-the-samples.data/ModifiedCalculatorExample.pdf differ diff --git a/site/trunk/site-publish/running-the-samples.data/ModifiedCalculatorExample.ppt b/site/trunk/site-publish/running-the-samples.data/ModifiedCalculatorExample.ppt new file mode 100644 index 0000000000..c608a74be1 Binary files /dev/null and b/site/trunk/site-publish/running-the-samples.data/ModifiedCalculatorExample.ppt differ diff --git a/site/trunk/site-publish/running-the-samples.html b/site/trunk/site-publish/running-the-samples.html new file mode 100644 index 0000000000..689d58cf91 --- /dev/null +++ b/site/trunk/site-publish/running-the-samples.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + Apache Tuscany : Running the samples + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Running the samples + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Documentation about the BigBank Example

+ +

I wrote a document which explains in some detail the BigBank example. I think it is quite convenient to get to understand in more detail the way the sample works. It is a PPT file which can be downloaded from http://cwiki.apache.org/confluence/download/attachments/44883/BigBank.Apache.Tuscany.ppt.

+ +

Regards,
+Mario

+ +

Modified Calculator Combo Example: Changing among different service implementations

+ +

I made some modifications to the Calculator Combo example and I made a presentation about it focusing on the ability to change among different service implementations/bindings.

+ +

You can get the PPT presentation from: +http://cwiki.apache.org/confluence/download/attachments/44883/ModifiedCalculatorExample.ppt
+Or the PDF version at: +http://cwiki.apache.org/confluence/download/attachments/44883/ModifiedCalculatorExample.pdf

+ +

Best Regards,
+Cristian Fiorentino.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/EclipseAppConfig.png b/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/EclipseAppConfig.png new file mode 100644 index 0000000000..1205f49abb Binary files /dev/null and b/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/EclipseAppConfig.png differ diff --git a/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/EclipseAppConfig.png.jpeg b/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/EclipseAppConfig.png.jpeg new file mode 100644 index 0000000000..ab77111fcf Binary files /dev/null and b/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/EclipseAppConfig.png.jpeg differ diff --git a/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/tuscany.policy b/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/tuscany.policy new file mode 100644 index 0000000000..1d4b1f0718 --- /dev/null +++ b/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.data/tuscany.policy @@ -0,0 +1,20 @@ +// If the URL substitution property fails, use a hard coded Tuscany home +// For example, replace "${{tuscany.home}}" with "/e:/tuscany/java/sca" . +grant codeBase "file:/e:/t/java/sca/-" { + permission java.security.AllPermission; +}; + +// If the URL substitution property fails, use a hard coded Maven repos home +// For example, replace "${{m2_repo.home}}" with "/e:/g/m2" . +grant codeBase "file:/e:/g/m2/-" { + permission java.security.AllPermission; +}; + +grant codeBase "file:/e:/temp/eclipse/eclipse/-" { + // permission java.security.AllPermission; + permission java.net.SocketPermission "127.0.0.1:*", "connect,resolve"; + permission java.io.FilePermission "<>", "read"; + permission java.lang.RuntimePermission "accessDeclaredMembers"; + permission java.lang.RuntimePermission "getClassLoader"; + permission java.lang.RuntimePermission "createClassLoader"; +}; \ No newline at end of file diff --git a/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.html b/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.html new file mode 100644 index 0000000000..01e32c98bf --- /dev/null +++ b/site/trunk/site-publish/running-tuscany-with-java-2-security-enabled.html @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + Apache Tuscany : Running Tuscany with Java 2 Security Enabled + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Running Tuscany with Java 2 Security Enabled + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Running Tuscany with Java 2 Security Enabled

+


+Java Security is available in Video, use tuscany passcode

+ +

Overview of Java 2 Security

+ +

Apache Tuscany promotes the Java 2 security model by allowing one to run Service Component Architecture (SCA) applications in a secured environment. By default, with Java 2 security disabled, Java application code and the Tuscany runtime code base run in an unsecure environment with no security manager. This gives the Java application and Tuscany runtime access to all system resources. The application may read and write all system properties, open and read any system files, and do all sorts of unprotected actions. All Tuscany code will run unhindered in this environment. And all malicious Tuscany users will also run unhindered in this environment.

+ +

With Java 2 security enabled, the user contribution to the SCA domain has very tight security restrictions. This ensures that the user SCA application does not introduce mischevious code (for instance with a user-provided custom classloader) or perform unprotected investigations (such as when a user-provided application starts snooping around the file system looking for interesting files.) The Tuscany runtime is also forced to abide by these tight security resitrictions, but the runtime has been fitted and tested with privileged code to check for proper access permissions before performing any sensitive operations. Because of this privileged code which obeys the Java 2 security architecture, the Tuscany runtime acts as a proxy and performs sensitive operations on behalf of the user application.

+ +

The purpose of this article is to show how one can run Apache Tuscany and SCA applications in various environments while enabling Java 2 security and ensuring the application is running in a secured environment. Tuscany users and deployers and administrators should read this article. More in-depth runtime developers should also proceed onto the associated article Security Aware Programming in Tuscany.

+ +

Enabling Java 2 Security from a Command Line

+ +

The most basic way to run Tuscany applications is from a command line window or shell. You may enable security in this environment by running your Tuscany application with the java.exe -Djava.security.manager option on the command line. This enables the default Java security manager which delegates access control decisions to java.security.AccessController. The AccessController determines access authority for your Java code by consulting the permissions in a java.security.Policy class usually specified in the default security.policy file.

+ +

There is only one Policy object installed into a Java runtime at any given time. The default behavior for Java is to load the authorization data from one or more security policy files, but Tuscany users may add to or replace the policy by running with additional policy information on the command line. For instance "-Djava.security.manager -Djava.security.policy=tuscany.policy" will add the permissions in the tuscany.policy file to the default Java permissions. If you specify "-Djava.security.policy==tuscany.policy" you replace the default policy with those specified in the Tuscany policy file. The format of the java.security.policy is a URL, which can contain any of the legal URL protocols such as file: or http: protocol.

+ +

Each policy file will contain a list of grant statements. A grant tells the runtime where the code came from (a URL specifying the code base), who signed the code (a list of signer certificates), and what permissions are given. The permissions can be read write permissions to the file system, access to system properties, or class loading privileges.
+An example of a granting all permission to an unsigned Tuscany code base is given here:

+
security.policy example
+
+grant codeBase "file:$/{{user.home}}/tuscany/java/sca/-" {
+  permission java.security.AllPermission;
+};
+
+
+

This example grant statement is quite a broad bludgeon. Namely it says that all Tuscany code has been granted all permissions. This seems like this is not very secure as it provides all permissions to Tuscany, however, it is still a step up from running with no security policy. In this case Tuscany is provided with privileged access, while user application are not. In practice, a user policy might want much finer-grained permissions towards the Tuscany code and allow only specific pieces of the code to have privileged access. An example tuscany.policy is attached to this article.

+ +

Notice that the URL in this example supports the substitution of system properties. You can also provide other property names such as tuscany.home or whatever property you provide to the command line. Additionally you may end the URL with '*' which includes all JARs and class files in the current location or '-' which includes all JAR and class file recursively below this location. Additional information on Java application security architecture and features is given at Java Security.

+ +

Enabling Java 2 Security Using Maven

+ +

JIRA TUSCANY-2339 allows Maven to run all Tuscany itests and vtests with Java 2 security enabled. To run this Maven profile, you must provide a tuscany.policy file in your java.home /lib/security directory (default location) or provide a tuscany.policy.file property to provide a local file URL, or copy the contents of tuscany.policy to another policy file. As the tuscany.policy file is written, you must have system properties tuscany.home and maven.repos defined, or you must hard code the location of these code bases.

+ +

Run the Tuscany test profile with Maven by naming the security profile name explicitly or my providing a tuscany.policy.file property:

+
+
+mvn test -P security
+
+
+ +

or

+ +
+
+mvn "-Dtuscany.policy.file=file:///e:/tuscany.policy"
+
+
+ +

Here is the addition to the pom.xml file to run with security. You may uncomment or add other modules to perform tests.

+
+
+        <profile>
+            <id>security</id>
+            <modules>
+                <!-- <module>demos</module> -->
+                <module>itest</module>
+                <module>vtest</module>
+            </modules>
+            <activation>
+                <property>
+                    <name>tuscany.policy.file</name>
+                </property>
+            </activation>
+            <properties>
+                <tuscany.policy.file><Your tuscany.policy file location></tuscany.policy.file>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <version>2.3.1</version>
+                        <configuration>
+                            <includes>
+                                <include>**/*TestCase.java</include>
+                            </includes>
+                            <reportFormat>brief</reportFormat>
+                            <useFile>false</useFile>
+                            <forkMode>once</forkMode>
+                            <!-- Place tuscany.policy in your Java home security directory. Alternatively, hardcode the file location here. -->
+                            <argLine>-Djava.security.manager -Djava.security.policy=${tuscany.policy.file}
+                               -Dpolicy.allowSystemProperty=true -Djava.security.debug=policy</argLine>
+                        </configuration>
+                    </plugin>
+                </plugins>         
+            </build>
+        </profile>
+
+
+ +

One gotcha in this environment is that the security profile adds a bit more memory requirements for the test run. You may need to increase the Java heap max size -Xmx1024m or increase the Maven MAVEN_OPTS=-XX:MaxPermSize=512m if you see memory related errors when you run in this environment.

+ +

Enabling Java 2 Security in Eclipse

+ +

Many users import Tuscany projects into Eclipse or other Integrated Development Environment and run or develop applications in this type of environment. Whether you are running your own SCA application, or one of the many Tuscany samples or demos, the process for running with Java 2 security enabled is the same. Your application or sample has build and runtime dependencies on the Tuscany code, and the application is run with a security profile.

+ +

Eclipse provides a run dialog that determines how a project is run. For instance, many Tuscany samples are run as Java applications. The Tuscany samples also provide many test cases that may be run in a JUnit test suite. In either case, you specify Java 2 security options in a similar way. You create a 'run' configuration for your type of code (Java application, Java applet, JUnit test case, etc.). The run dialog has a 'Arguments' tab where you can provide Java Virtual Machine options. You provide the Java 2 security options in the 'Program Arguments' text box.

+ +

An example of this configuration is shown here:
+

+ +

There are two small gotchas to be aware of in this environment. Once again the location of the policy file is a URL. If you specify the policy with no file or http prefix, the default location will be location of the project in the workspace. So in this example, a simple -Djava.security.policy=tuscany.policy requires a tuscany policy file in the sample-calculator project in your Eclipse workspace. Since this is URL, you can put the policy file anywhere in your file system. Secondly, some of the Tuscany demos and samples use privileged code (such as load classes dynamically, read system properties, read the file system, or connect to various server sockets). These example do this to demonstrate various SCA features. However, these applications may throw a security exception because they are given proper access. In this case you may want to add access for Eclipse or application code. An example is given here:

+
+
+grant codeBase "file:${eclipse.home}/-" {
+  permission java.net.SocketPermission "127.0.0.1:*", "connect,accept,resolve";
+  permission java.io.FilePermission "<<ALL FILES>>", "read";
+  permission java.util.PropertyPermission "*", "read";  
+};
+
+
+

Grant this access when you are developing in Eclipse. When you are ready to deploy and run these application in the real world, read the next section as to how to run on popular application servers.

+ +

Security Tips for Popular Application Servers

+ +

When Tuscany is run by an application server (whether it be WebSphere, Geronimo, or other), the policy of the application server will form the starting point for Tuscany's security policy. This section gives an overview to the Java 2 security policies of several popular application servers.

+ +

WebSphere Application Server

+ +

There are several different ways to run Tuscany applications on IBM WebSphere Application Server. In either case you may run your Tuscany application as a Java application or a Java Extended Edition applicaiton, depending on which container features you need. Obviously if you use web application features you should run in a web server container. If you are using servlet or persistence features you should run in an applicaiton server container. You may run your Tuscany application and include any Tuscany runtime prerequisite JARs in the package. Another way is to run your Tuscany application without internal runtime prereqs and use IBM's Service Oriented Architecture Feature Pack (SOA FeP) to provide an SCA runtime. In any case running your application with security enabled will be the same.

+ +

WAS provides security policy information in a number of places. First there are three locations that provide static security plicy info that may be changed by a system administrator when installing or configuring a server:

+
    +
  • app_server_root/java/jre/lib/security/java.policy
  • +
  • app_server_root/properties/server.policy
  • +
  • profile_root/config/cells/cell_name/nodes/node_name/app.policy
  • +
+ + +

The first of these files will permanently change security policy by all users of the system JVM. The second of these files will change the security policy for all servers in this installation. The third file app.policy includes policy that applies to all enterprise applications on the node to which the app.policy file belongs. All of these policy files are static and used for general system-wide infrastructure. It is suggested that you use these files with care.

+ +

For instance, let's say wish to allow certain JARs to read system properties on WAS. This would be the entry to add to app.policy.

+
+
+grant codeBase "file:${application}" {
+ permission java.utilPropertyPermission "${was.install.root}${/}profiles${/}AppSrv01${/}installedAssets${/}vtestService.jar${/}1.0${/}vtestService.jar", "read";
+};
+
+
+ +

A final location to provide Java 2 Security is in the was.policy file of the JAR, WAR, or EAR file that you are deploying. This location provides the fine-grained application-level security control, but the permission needs to be granted in each was.policy file for each application deployed on WAS. Additional details on WebSphere security are provided at the
+WAS Info Center.

+ +

Apache Geronimo

+ +

Running on Apache Geronimo has similar considerations to running on other application servers. A user may choose to run the SCA application as a standalone SCA application with no container requirements, a web application with dependencies on a web server container, or a full blown JEE application with a need for servlets, JSPs, and other application server requirements.

+ +

There is a Geronimo plugin that will help with deploying and running a Tuscany application. Additional details are provided in a
+Tuscany Geronimo Integration article.

+ +

Conclusion

+ +

This article provides a number of tips when running Java 2 Security with Tuscany in different environments. Feel free to contact the author or add your own environment tips to this articles. Comments and corrections are appreciated.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sandbox-for-website.html b/site/trunk/site-publish/sandbox-for-website.html new file mode 100644 index 0000000000..65b50d727c --- /dev/null +++ b/site/trunk/site-publish/sandbox-for-website.html @@ -0,0 +1,127 @@ + + + + + + + Sandbox for website : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Sandbox for website + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + + + + + +

Welcome to the open source Apache Tuscany project! The Tuscany community is working together to create a robust infrastructure that aims to simplify the development of service oriented (SOA) systems.

+ +

Tuscany is based on open standards defined by the Open SOA Collaboration and is comprised of independent technologies designed to work well together based on:

+ +

Apache Tuscany is based on independent technologies that together provide following:

+
    +
  • Service Component Architecture (SCA) enables composition of service networks through assembly of existing and new services. As an example, a service can be implemented as JAX-WS service, Spring Bean or EJB and exposed as a web service. Tuscany SCA allows services to be implemented in variety of languages such as Java, JavaScript and C++. The Tuscany SCA runtime is implemented in Java and C++ and can easily be extended to support any communication transport, qualities of service or programming model and can be used in conjunction with other technologies such as Spring, Axis and Celtix.
  • +
  • Service Data Object (SDO) provides a uniform interface for handling different forms of data, including XML documents, that can exist in a network of services and provides the mechanism for tracking changes. Apache Tuscany provides Java and C++ implementations for SDO.
  • +
  • Data Access Service (DAS) provides a simple SDO interface to relational databases. Apache Tuscany provides a Java implementation for DAS.
  • +
+ + + +

Please join us to develop this innovative infrastructure and/or provide feedback based on your experiences. With your help Apache Tuscany will become a first class solution for simplifying the development of SOA-based systems.

+
+

Copyright © 2006, The Apache Software Foundation Apache Tuscany is undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Web Services PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sandbox-implementation-of-sca-event-processing.html b/site/trunk/site-publish/sandbox-implementation-of-sca-event-processing.html new file mode 100644 index 0000000000..9b88962b1a --- /dev/null +++ b/site/trunk/site-publish/sandbox-implementation-of-sca-event-processing.html @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + Apache Tuscany : Sandbox Implementation of SCA Event Processing + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Event Processing > Sandbox Implementation of SCA Event Processing + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

This page describes the implementation of the SCA Event Processing Model which is contained in the sandbox/event directory of Tuscany.

+ +

The principle followed in the implementation is to reuse as much as possible of the existing Tuscany SCA Java infrastructure to produce a working prototype at minimal effort. It is unlikely that this implementation would be used for a full-blown implementation of Event Processing.

+ +

Implementing Producers, Consumers and their Links in the Assembly Layer

+ + +

Implementing Producers, Consumers in the Java POJO implementation type

+ + +

Work Items

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description
Responsible Status
Create Consumer annotation
Rajini Sivaram
Done - 21/10/2008
Create Producer annotation
Rajini Sivaram
Done - 21/10/2008
Create EventType annotation Rajini Sivaram
Done - 21/10/2008
   
Create EventTypes annotation
Mike Edwards
Done - 28/10/2008
Create @eventType attribute for <consumer/> & <producer/>
+ elements in the sca-core.xsd
Mike Edwards
New - 27/10/2008
   
   
   
   
   
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sandbox-sca-java.data/TuscanyJAVASCA.pdf b/site/trunk/site-publish/sandbox-sca-java.data/TuscanyJAVASCA.pdf new file mode 100644 index 0000000000..aa2f5ffe41 Binary files /dev/null and b/site/trunk/site-publish/sandbox-sca-java.data/TuscanyJAVASCA.pdf differ diff --git a/site/trunk/site-publish/sandbox-sca-java.data/TuscanyJAVASCA.ppt b/site/trunk/site-publish/sandbox-sca-java.data/TuscanyJAVASCA.ppt new file mode 100644 index 0000000000..22ec4831cb Binary files /dev/null and b/site/trunk/site-publish/sandbox-sca-java.data/TuscanyJAVASCA.ppt differ diff --git a/site/trunk/site-publish/sandbox-sca-java.data/highleveloverview.PNG b/site/trunk/site-publish/sandbox-sca-java.data/highleveloverview.PNG new file mode 100644 index 0000000000..31ac89a4c1 Binary files /dev/null and b/site/trunk/site-publish/sandbox-sca-java.data/highleveloverview.PNG differ diff --git a/site/trunk/site-publish/sandbox-sca-java.data/highleveloverview.PNG.jpeg b/site/trunk/site-publish/sandbox-sca-java.data/highleveloverview.PNG.jpeg new file mode 100644 index 0000000000..df0eb4aacd Binary files /dev/null and b/site/trunk/site-publish/sandbox-sca-java.data/highleveloverview.PNG.jpeg differ diff --git a/site/trunk/site-publish/sandbox-sca-java.html b/site/trunk/site-publish/sandbox-sca-java.html new file mode 100644 index 0000000000..4e25f24cb6 --- /dev/null +++ b/site/trunk/site-publish/sandbox-sca-java.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : Sandbox SCA Java + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > old-Sandbox > SCA Overview - sandbox > Sandbox SCA Java + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

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.

+ + + +

< we can list all the component implementations, data bindings, etc. here.>

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sandbox-sdo-java.html b/site/trunk/site-publish/sandbox-sdo-java.html new file mode 100644 index 0000000000..2275849c91 --- /dev/null +++ b/site/trunk/site-publish/sandbox-sdo-java.html @@ -0,0 +1,483 @@ + + + + + + + + + + + + + + + Apache Tuscany : Sandbox - SDO Java + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Trash > old-Sandbox > Sandbox - SDO Java + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ +

Tuscany SDO Java

+ +

Overview
+Downloads
+FAQs

+ +

SDO CTS

+ +

Overview
+Getting the SDO CTS
+Contributing

+

The Tuscany SDO Java Project

+ +

The SDO Java project is a subproject of the Apache Tuscany incubator project and is intended to provide a Java implementation of the SDO 2.1 specification.

+ +

Documents

+ +

SDO Specification 2.1 for Java describes the data programming interface for Java language.

+ +

SDO White Paper A white paper that explains the SDO programming model

+ +

A quick view of What is SDO can be found in this article.

+ +

SDO Java Getting Started

+ +

To get started with Java SDO, download 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.

+ +

Overview

+ +

The SDO Java project is a subproject of the Apache Tuscany incubator project is intended to provide a Java implementation of the SDO 2.1 specification.

+ +

The project's code base includes the following:

+
    +
  • Dynamic data object support
  • +
  • Basic static code generation (generator patterns still subject to change)
  • +
  • Most Helper classes either partially or fully implemented (XMLHelper, XSDHelper, DataFactory, CopyHelper, EqualityHelper)
  • +
  • Minimal ChangeSummary support (only in DataGraph context)
  • +
  • Limited example programs
  • +
+ + +

The Tuscany wiki contains an area for raw thoughts and clarifications on SDO that will eventually make it into well crafted documentation.

+ +

How to Build

+ +

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.

+ +

md <local tuscany dir>
+cd <local tuscany dir>
+svn co -N https://svn.apache.org/repos/asf/incubator/tuscany/java
+cd java
+svn up sdo
+svn up -N spec
+cd spec
+svn up sdo-api

+ +

Run "mvn" under <local tuscany dir>/java directory to install POM files from the root project to the local repository

+ + +

cd <local tuscany dir>/java
+mvn -N
+cd spec
+mvn -N
+cd ../sdo
+mvn -N (alternatively, run without the -N option - see Note below)

+ +

You can now build SDO project as a whole or build the individual SDO subprojects.

+ +

Build SDO project

+ +

This step builds all subprojects in the source tree at once

+ +

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.

+ +

Build sub projects of SDO individually

+ +

Build sdo.spec project

+ + +

cd <local tuscany dir>/java/spec/sdo-api
+mvn
+mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using Eclipse for development.)

+ +

Build sdo.impl project

+ +

cd <local tuscany dir>/java/sdo/impl
+mvn
+mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using Eclipse for development.)

+ +

Build sdo.tools project

+ +

cd <local tuscany dir>/java/sdo/tools
+mvn
+mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using Eclipse for development.)

+ +

Build sdo.samples project

+ +

cd <local tuscany dir>/java/sdo/sample
+mvn
+mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using Eclipse for development.)

+ +

SDO Project Code 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.

+ +

sdo.spec

+ +

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.

+ +

sdo.impl

+ +

The sdo.impl subproject contains a test package under src/test/java (see the section below entitled Static Code Generator for details) and the following implementation packages under src/main/java:

+ +

package org.apache.tuscany.sdo

+ +

Contains a few interfaces used by some of the implementation classes in org.apache.tuscany.sdo.impl. (Note: this package is subject to further cleanup.)

+ +

package org.apache.tuscany.sdo.helper

+ +

This package contains implementations of the "helper" interfaces defined in the commonj.sdo.helper package (in the sdo.spec project). Each helper interface in commonj.sdo.helper has a corresponding implementation class in this package. The name of each helper class is the same as the corresponding interface, only with the suffix "Impl" appended. For example class org.apache.tuscany.sdo.helper.TypeHelperImpl implements the interface commonj.sdo.TypeHelper.

+ +

The implementation class org.apache.tuscany.sdo.helper.HelperProviderImpl is used to bootstrap an implementation of the default INSTANCEs of the SDO helper (see class commonj.sdo.impl.HelperProvider in sdo.spec). This implementation creates instances of the other helper implementation classes in this package and is registered using the services file src/main/resources/META-INF/services/commonj.sdo.impl.HelperProvider.

+ +

package org.apache.tuscany.sdo.impl

+ +

This package contains the majority of the SDO runtime implementation code. This includes implementations of all of the commonj.sdo interfaces (see sdo.spec), including several implementations of the DataObject interface. The design and implementation of the most important classes in this package are described below).

+ +

package org.apache.tuscany.sdo.util

+ +

Contains some utility classes used by the implementation. One class, SDOUtil, is particularly important. It provides some useful static utility functions which are not included in the SDO specification itself. Although these are not "standard" APIs, use of them is recommended, as opposed to resorting to low-level implementation-specific APIs. The intent of this class is to encapsulate, in a relatively clean way, common functions that are needed, and can potentially be proposed for addition to the specification in a future version of SDO.

+ +

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

+ +

Dependent 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-2.2.1-SNAPSHOT.jar - template-based codegen framework (JET - Java Emitter Templates)
+emf-codegen-ecore-2.2.1-SNAPSHOT.jar - the EMF code generator
+emf-common-2.2.1-SNAPSHOT.jar - some common framework utility and base classes
+emf-ecore-2.2.1-SNAPSHOT.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+emf-ecore-change-2.2.1-SNAPSHOT.jar - the EMF change recorder and framework
+emf-ecore-xmi-2.2.1-SNAPSHOT.jar - EMF's default XML (and XMI) serializer and loader
+xsd-2.2.1-SNAPSHOT.jar - the XML Schema model

+ +

These are simply Maven-friendly versions of corresponding jar files/plugins obtained from Eclipse. SNAPSHOT maps to an EMF weekly integration build (for example, I200602160000). Note that if you are building SDO for a released source code distribution then the dependency jars will not be snapshot jars, but will instead themselves be released versions of the dependencies.

+ +

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:

+ +

Unable to render embedded object: File (do_uml.png) not found.

+ +

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:

+ +

Unable to render embedded object: File (meta.png) not found.

+ +

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:

+ +

Unable to render embedded object: File (meta2.png) not found.

+ +

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:

+ +

Usage arguments:

+ +

[ -targetDirectory <target-root-directory> ]
+ [ -javaPackage <base-package-name> ]
+ [ -prefix <prefix-string> ]
+ [ -sparsePattern | -storePattern ]
+ [ -noInterfaces ] [ -noContainment ] [ -noNotification ] [ -arrayAccessors ] [ -noUnsettable ] -noEMF
+ <xsd-file> | <wsdl-file>
+For example:

+ +

java XSD2JavaGenerator somedir/somefile.xsd

+ +

Options:

+ +

-targetDirectory Generates the Java source code in the specified directory. By default, the code is generated in the same directory as the input xsd or wsdl file.

+ +

-javaPackage Overrides the Java package for the generated classes. If not specified, a default package or one specified with an sdoJava:package annotation on the <schema> element in the xsd file (see SDO specification for details) is used for the java package.

+ +

-prefix Specifies the prefix string to use for naming the generated factory. For example "-prefix Foo" will result in a factory interface with the name "FooFactory".

+ +

-sparsePattern For SDO metamodels that have classes with many properties of which only a few are typically set at runtime, this option can be used to produce a space-optimized implementation (at the expense of speed).

+ +

-storePattern This option can be used to generate static classes that work with a Store-based DataObject implementation. It changes the generator pattern to generate accessors which delegate to the reflective methods (as opposed to the other way around) and changes the DataObject base class to org.apache.tuscany.sdo.impl.StoreDataObjectImpl. Note that this option generates classes that require a Store implementation to be provided before they can be run.

+ +

-noInterfaces By default, each DataObject generates both a Java interface and a corresponding implementation class. If an SDO metamodel does not use multiple inheritance (which is always the case for XML Schema derived models), then this option can be used to eliminate the interface and to generate only an implementation class.

+ +

-noNotification This option eliminates all change notification overhead in the generated classes. Changes to DataObjects generated using this option cannot be recorded, and consequently the classes cannot be used with an SDO ChangeSummary or DataGraph.

+ +

-noContainment Turns off container management for containment properties. DataObject.getContainer() will always return null for data objects generated with this option, even if a containment reference is set. Setting a containment reference will also not automatically remove the target object from its previous container, if it had one, so it will need to be explicitly removed by the client. Use of this option is only recommended for scenarios where this kind of container movement/management is not necessary.

+ +

-arrayAccessors Generates Java array getters/setters for multiplicity-many properties. With this option, the set of "standard" JavaBean array accessor methods (e.g., Foo[] getFoo(), Foo getFoo(int), int getFooLength(), setFoo(Foo[]), and void setFoo(int, Foo)) are generated. The normal List-returning accessor is renamed with the suffix "List" (e.g., List getFooList()). The array returned by the generated method is not a copy, but instead a pointer to the underlying storage array, so directly modifying it can have undesirable consequences and should be avoided.

+ +

-noUnsettable By default, some XML constructs result in SDO property implementations that maintain additional state information to record when the property has been set to the "default value", as opposed to being truly unset (see DataObject.isSet() and DataObject.unset()). The SDO specification allows an implementation to choose to provide this behavior or not. With this option, all generated properties will not record their unset state. The generated isSet() methods simply returns whether the current value is equal to the property's "default value".

+ +

-noEMF By default, the generated java implementation source files directly import the Eclipse EMF classes which they depend upon. This can lead to a discrepancy in EMF library level dependencies between the generated classes and the environment into which they are deployed. The -noEmf option provides an early level of function to avoid this situation. Classes generated using this option access EMF function indirectly via inherited behaviour, thereby allowing packaging of these generated classes into jar files which do not directly depend on EMF.

+ +

This early implementation of this option is limited in the subset of XML Schema it is known to handle, and is subject to change. The generator is known to be able to deal with Complex content (including content models which map to SDO Sequence), and Mixed content for example .

+ +

<xsd:complexType mixed="true" name="Sequence">
+ <xsd:sequence>
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:element name="a" type="xsd:string" />
+ <xsd:element name="b" type="xsd:int" />
+ </xsd:choice>
+ <xsd:element name="split" type="xsd:string" />
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:element name="y" type="xsd:string" />
+ <xsd:element name="z" type="xsd:int" />
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+Generator Patterns

+ +

The DataObject interface generation pattern is as described in the SDO specification (see Java Interface Specification section). The SDO specification does not define a factory pattern for efficient construction of static SDOs, which is however provided by the Tuscany implementation. The generated SDO Factory interface conforms to the following pattern:

+ +
+
public interface <prefix>Factory {
+  <Type1> create<Type1>();
+  <Type2> create<Type2>();
+  ...
+  <prefix>Factory INSTANCE = <default_factory_impl>;
+}
+
+
+ +

A generated factory corresponds to an SDO Type namespace uri (see commonj.sdo.Type.getURI) with one create() method for each SDO Type in the namespace. The <prefix> of the factory name is derived from the uri. An instance of the factory is available using the INSTANCE field in the interface.

+ +

Using the static factory, a DataObject might be created as follows:

+ +

Quote aQuote = StockFactory.INSTANCE.createQuote();
+... // do something with aQuote
+The generated implementation of each create() method simply constructs an instance of the corresponding type like this:

+ + +
+
public Quote createQuote() {
+    QuoteImpl quote = new QuoteImpl();
+    return quote;
+  }
+
+
+

In addition to these generated type-specific create<Type>() methods, the generated factory implementation class also includes a generated reflective create() method that, given an SDO Type, efficiently dispatches to the correct type-specific create() method. The reflective create() method is called by the implementation of the SDO commonj.sdo.helper.DataFactory interface.

+ +

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.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-c-faq.html b/site/trunk/site-publish/sca-c-faq.html new file mode 100644 index 0000000000..e55302ccb6 --- /dev/null +++ b/site/trunk/site-publish/sca-c-faq.html @@ -0,0 +1,84 @@ + + + + + + + SCA C++ FAQ : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA CPP > SCA C++ FAQ + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

This page contains frequently asked questions for SCA native project.
+Please follow use the following template to enhance this page.

+ +

Question text

+

Answer text

+ + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-cpp-bindings-rest.html b/site/trunk/site-publish/sca-cpp-bindings-rest.html new file mode 100644 index 0000000000..216639907c --- /dev/null +++ b/site/trunk/site-publish/sca-cpp-bindings-rest.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA CPP Bindings REST + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Work-in-progress > SCA CPP Users > SCA CPP Bindings REST + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

REST Resource Patterns

+ +

If the service/reference uses an <interface.rest> interface, we map CRUD
+methods to HTTP verbs to access resource representations as follows:

+ +

resource = retrieve()
+-> GET <binding-uri>
+<- an XML element representing the REST resource

+ +

resource = retrieve(uri, parm-value-1, parm-value-n)
+-> GET uri/parm-value-1/parm-value-n
+or if uri ends with a '?'
+-> GET uri?parm-name-1=parm-value1&parm-name-n=parm-value-n
+<- an XML element representing the REST resource

+ +

uri = create(resource)
+-> POST <binding-uri> + an XML element representing the resource to create
+<- Location header containing the uri of the created resource

+ +

update(resource)
+-> PUT <binding-uri> + an XML element representing the updated resource

+ +

update(uri, parm-1, parm-n, resource)
+-> PUT uri/parm-value-1/parm-value-n + an XML element representing the updated resource
+or if uri ends with a '?'
+-> PUT uri?parm-name-1=parm-value1&parm-name-n=parm-value-n + an XML element representing the updated resource

+ +

delete()
+-> DELETE <binding-uri>

+ +

delete(uri, parm-1, parm-n)
+-> DELETE uri/parm-value-1/parm-value-n
+or if uri ends with a '?'
+-> DELETE uri?parm-name-1=parm-value1&parm-name-n=parm-value-n

+ +

In this mode, HTTP return codes are used almost as described in the Atom spec. Also GET returns etags with the retrieved resource representations to help caching by clients.

+ +

REST RPC Patterns

+

If the service/reference does not use an <interface.rest> interface, then this is not a real REST pattern, we simply flow method calls over XML / HTTP as follows:

+ +

result = method-abc(parm-1, parm-n)

+ +

if single input parameter of complex type
+-> POST <binding-uri>/method-abc + XML element representing the complex parameter or if multiple parameters including parameters of complex types
+-> POST <binding-uri>/method-abc + Mime multipart/form-data body containing one parameter per part or if multiple parameters all of simple types
+-> GET
+<binding-uri>/method-abc?parm-1-name=parm-1-value&parm-n-name=parm-n-value

+ +

<- an XML element representing the result

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-cpp-dependencies.html b/site/trunk/site-publish/sca-cpp-dependencies.html new file mode 100644 index 0000000000..58cc4e36d4 --- /dev/null +++ b/site/trunk/site-publish/sca-cpp-dependencies.html @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA CPP Dependencies + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Work-in-progress > SCA CPP Users > SCA CPP Dependencies + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PackageVersionWhere To Get ItWindows ConfigLinux ConfigDescription
ant1.6.1http://ant.apache.org/??Used by scagen
java5?JAVA_HOME?Used by scagen
axis2c0.96http://ws.apache.org/axis2/c/AXIS2C_HOMEAXIS2C_HOMEThe engine for web service bindings
libxml22.6.26http://xmlsoft.org/?LIBXML2_HOMELIBXML2_LIB
+LIBXML2_INCLUDE
XML parser support for SDO
iconv1.9.2http://www.gnu.org/software/libiconv/ICONV_HOME?Required by libxml2 to provide internation text coding conversions
zlib1.2.3http://www.zlib.net/ZLIB_HOME?Required by libxml2 to provide compression support
apache httpd2.0.55http://httpd.apache.org/HTTPD_HOME?An http server. The REST extension provides a plubing module for Apache
libcurl7.15.4?LIBCURL_HOME?Required by the rest binding. Beware that libcurl.lib sometimes comes named differently depending on version, e.g. I've seen libcurl_impl.lib
python2.5http://www.python.org/PYTHON_HOME?The Python script interpreter required when using the Python extension
ruby1.8.5-p21http://www.ruby-lang.org/en/??The Ruby script interpreter required when using the Ruby extension
php5.2.0http://www.php.net/downloads.phpPHP_HOMEPHP_LIB
+PHP_INCLUDE
The PHP script interpreted required when using the PHP extension
sca_sdo1.1.2http://pecl.php.net/package/sca_sdoPHP_SCA_SDO_HOMEPHP_SCA_SDO_INCLUDE
+PHP_SCA_SDO_LIB
The PHP SCA_SDO PECL pacakge reqiured when using the PHP extension
tuscany cpp sdolatesthttp://incubator.apache.org/tuscany/sdo_downloads.htmlTUSCANY_SDOCPPTUSCANY_SDOCPPService Data Objects support used for passing handling complex types
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-cpp-developers.html b/site/trunk/site-publish/sca-cpp-developers.html new file mode 100644 index 0000000000..6f964366e7 --- /dev/null +++ b/site/trunk/site-publish/sca-cpp-developers.html @@ -0,0 +1,78 @@ + + + + + + + SCA CPP Developers : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Native > SCA CPP Developers + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-cpp-environment-settings.html b/site/trunk/site-publish/sca-cpp-environment-settings.html new file mode 100644 index 0000000000..ae51688d7a --- /dev/null +++ b/site/trunk/site-publish/sca-cpp-environment-settings.html @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA CPP Environment Settings + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Work-in-progress > SCA CPP Users > SCA CPP Environment Settings + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

TODO

+ +

Windows

+ +

set LIBXML2_HOME=c:\libxml2-2.6.26.win32
+set ICONV_HOME=c:\iconv-1.9.2.win32
+set ZLIB_HOME=c:\zlib-1.2.3.win32
+set HTTPD_HOME=c:\apache2.0.55\Apache2
+set LIBCURL_HOME=c:\libcurl-7.15.4-nossl
+set PHP_HOME=c:\php-5.2.0
+set PHP_SCA_SDO_HOME=c:\pecl\sdo
+set PYTHON_HOME=c:\python25
+set PYTHONPATH=c:\sca\deploy\extensions\python\bin
+set TUSCANY_SCACPP=c:\sca\deploy
+set TUSCANY_SCACPP_LOGGING=9
+set TUSCANY_SDOCPP=c:\sdo\deploy
+set TUSCANY_SDOCPP_LOGGING=0

+ + +

Linux

+ +

export AXIS2C_HOME=/usr/local/axis2c-bin-0.96-linux
+export LIBXML2_LIB=/usr/lib
+export LIBXML2_INCLUDE=/usr/include/libxml2
+export PHP_LIB=/usr/local/lib
+export PHP_INCLUDE=/usr/local/include/php
+export PHP_SCA_SDO_INCLUDE=/home/slaws/phpbuild-5-2/pecl/SDO
+export PHP_SCA_SDO_LIB=$PHP_LIB/php/extensions/no-debug-zts-20060613/
+export TUSCANY_SDOCPP=/sdo/deploy
+export TUSCANY_SDOCPP_LOGGING=0
+export TUSCANY_SCACPP=/usr/local/tuscany/cpp/sca/deploy
+export TUSCANY_SCACPP_LOGGIN=9

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-cpp-users.html b/site/trunk/site-publish/sca-cpp-users.html new file mode 100644 index 0000000000..00fa699412 --- /dev/null +++ b/site/trunk/site-publish/sca-cpp-users.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA CPP Users + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Work-in-progress > SCA CPP Users + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Dependencies

+

Dependency List

+

Environment Setting

+

Environment Setting List

+

Bindings

+

REST

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-cpp.html b/site/trunk/site-publish/sca-cpp.html new file mode 100644 index 0000000000..c0185d421f --- /dev/null +++ b/site/trunk/site-publish/sca-cpp.html @@ -0,0 +1,133 @@ + + + + + + + SCA CPP : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA CPP + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+ + + + +
Documentation
+

User Guide
+Getting Started
+[Architecture Guide|]
+Developer Guide
+[Extension Developer Guide|]

+
+ +
Resources
+
+ + +

Tuscany SCA Native

+ +

Tuscany SCA native is an extesible SCA runtime implementation written in C++ that supports component implementations written in:

+ + + +

Bindings - used for services and references
+Apache SOAP/Axis2c
+REST

+ +

Data Bindings - for handling data
+SDO
+Axiom

+ + +

To try it out, we recommend using the latest SCA Native Milestone release available from our downloads page.

+ +
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-developer-guide.data/component.png b/site/trunk/site-publish/sca-developer-guide.data/component.png new file mode 100644 index 0000000000..72b9d1b4d2 Binary files /dev/null and b/site/trunk/site-publish/sca-developer-guide.data/component.png differ diff --git a/site/trunk/site-publish/sca-developer-guide.data/component.png.jpeg b/site/trunk/site-publish/sca-developer-guide.data/component.png.jpeg new file mode 100644 index 0000000000..6ab7db30aa Binary files /dev/null and b/site/trunk/site-publish/sca-developer-guide.data/component.png.jpeg differ diff --git a/site/trunk/site-publish/sca-developer-guide.data/component.svg b/site/trunk/site-publish/sca-developer-guide.data/component.svg new file mode 100644 index 0000000000..4de33edb54 --- /dev/null +++ b/site/trunk/site-publish/sca-developer-guide.data/component.svg @@ -0,0 +1,160 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + Properties + Services + References + Implementation + Intents + + diff --git a/site/trunk/site-publish/sca-developer-guide.html b/site/trunk/site-publish/sca-developer-guide.html new file mode 100644 index 0000000000..d8dab31142 --- /dev/null +++ b/site/trunk/site-publish/sca-developer-guide.html @@ -0,0 +1,161 @@ + + + + + + + SCA Developer Guide : Apache Tuscany + + + + + + + + + + + + + +
+ + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > SCA Java Documentation > SCA Developer Guide + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + + + + + +

There's nothing to it. Really. Seriously, one of the main goals of Tuscany and SCA is to avoid imposing rules and requirements on how people write applications. We want to let people write application code the way they want without being concerned about the environment in which it will be used. After all, writing code to handle plumbing just gets in the way of writing the interesting stuff. So basically, you write the code for interesting bits, and Tuscany provides the environment that lets it run.

+ +

As a result of that, this guide does not actually contain a lot of gory details on how to write an application for SCA. What it does contain is a description of the information that Tuscany uses to figure out how to run your code, the things that it can handle, and the things that it can't. As part of that it provides guidelines and best practices that you can use to make your code easier for others to use or that allow it to run in more places. This guide also describes the different environments that Tuscany supports (such as command line clients or web applications) and how to package up applications to run in them.

+ +

Components

+ +

The basic building block for SCA is a component. When you're writing code for SCA, you are typically writing code that will either be the implementation of a component or will be used by such an implementation.

+ +

An SCA component follows the Inversion of Control design pattern with Tuscany providing the controlling framework. A typical component can be illustrated as:
+


+where

+
    +
  • Services describe the function this type of component provides
  • +
  • References are dependencies this type of component has in order to function
  • +
  • Properties define configuration parameters for this type of component
  • +
  • Intents describe assumptions this type of component has on how it will be used
  • +
  • and Implementation is some code that actually does the work (i.e. what a developer writes)
  • +
+ + +

Although the Tuscany runtime is written in Java, the implementation of a component can be in other languages some of which may be more suitable to the form of implementation than Java code (for example, BPEL for business processes or XSL-T for transformations). How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type; Tuscany provides several including:

+ +
    +
  • Java for POJO style components
  • +
  • JUnit for integration testing of SCA components
  • +
  • Spring for integrating Spring components
  • +
  • JavaScript for components written in JavaScript
  • +
+ + +

Please see each sub-section for detailed information on implementing components in any of these languages.

+ +

Composites

+

Individual components like those above can be used on their own, or they can be grouped together to form composite components. A composite is a type of component whose implementation is not code but an aggregation of other components co-operating to provide Services as a whole. A composite provides Services, has References to other dependencies, and can be configured using Properties in just the same way as individual components can.

+ +

The typical implementation of a composite is described using XML defined by the SCA Assembly Specification (known as SCA Component Definition Language or SCDL). For information on how this is used in Tuscany, please see:

+ + + +

>> Comment: Is this a good place to talk about wires? We talk about wires in the next section for the first time and it is out of context

+ +

Domain Assemblies

+ +

The implementations of components above, either individual or composite, all form reusable units that can be run multiple times in different environments (in much the same way as you have multiple instances of a Java class). A component becomes instantiated when it is actually used in an SCA environment. This is done by using it as part of the assembly of an SCA Domain.

+ +

SCA Domains can vary in size from the very small to the very large:

+
    +
  • a very small domain could be one within a test environment inside an IDE
  • +
  • a medium sized domain could be a single server or small cluster supporting a single application
  • +
  • a large domain could describe all the services within a department or company
  • +
+ + +

A domain is self-defining - it is what it is. It is really just a coherent grouping of components that are working together, connected to each other using SCA wiring. In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services but during development the goal is to make that Someone Else's Problem as all that baggage really just gets in the way of writing code.

+ +

Making it Someone Else's Problem though does mean that at some point you need to hand them the implementations that you have been developing. This generally goes better if the code being handed over has been well tested and packaged up nicely (sometimes with a bow on it). Tuscany provides some build-time tools to help with this:

+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-downloads-remove-after-upgrade-to-new-format.html b/site/trunk/site-publish/sca-downloads-remove-after-upgrade-to-new-format.html new file mode 100644 index 0000000000..ab918a0971 --- /dev/null +++ b/site/trunk/site-publish/sca-downloads-remove-after-upgrade-to-new-format.html @@ -0,0 +1,491 @@ + + + + + + + SCA Downloads-remove after upgrade to new format : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Downloads-remove after upgrade to new format + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SCA Java + Releases
>Incubator-M2 (Nov 14th, 2006)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + DescriptionDownload linkMD5PGP
Linux +
+ + Binary
Tuscany M2 SCAtuscany-sca-1.0--incubator-M2-bin.tar.gz + PGP
Linux +
+ Source
Tuscany M2 SCAtuscany-sca-1.0--incubator-M2-src.tar.gz + PGP
Linux +
+ Source
Tuscany M2 SCA Samplestuscany-sca-1.0--incubator-M2-samples.tar.gz + PGP
Linux +
+ Source
Tuscany Commonj Specstuscany-spec-commonj-1.1-incubator-M2-src.tar.gz + PGP
Linux +
+ Source
Tuscany SCA Specs.r.0.95tuscany-spec-sca-r0.95-incubator-M2-src.tar.gz + PGP
Windows +
+ Binary
Tuscany M2 SCAtuscany-sca-1.0-incubator-M2-bin.zip + PGP
Windows +
+ Source
Tuscany M2 SCAtuscany-sca-1.0-incubator-M2-src.zip + PGP
Windows +
+ Source
Tuscany M2 SCA Samplestuscany-sca-1.0--incubator-M2-samples.zip + PGP
Windows +
+ Source
Tuscany Commonj Specstuscany-spec-commonj-1.1-incubator-M2-src.zip + PGP
Windows +
+ Source
Tuscany SCA Specs.r.0.95tuscany-spec-sca-r0.95-incubator-M2-src.zip + PGP
JavaDocs +
+ Archive
Tuscany M2 SCA Javadocstuscany-sca-1.0-incubator-M2-javadoc.zip + PGP
JavaDocs +
+ Archive
Tuscany Commonj Specstuscany-spec-commonj-1.1-incubator-M2-javadoc.zip + PGP
JavaDocs +
+ Archive
Tuscany SCA Specs.r.0.95tuscany-spec-sca-r0.95-incubator-M2-javadoc.zip + PGP
+
> SCA Java Incubating-M1 + (June 7th, 2006)--- This is a single package release containing SDO and DAS + besides SCA.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDownload linkMD5PGP
Linux +
+ Source
Tuscany M1 SCAtuscany-incubating-M1-src.tar.gzMD5PGP
Windows +
+ + Binary
Tuscany M1 SCAtuscany-incubating-M1.zipMD5PGP
Windows +
+ Source
Tuscany M1 SCAtuscany-incubating-M1-src.zipMD5PGP
+
SCA Native Releases
>SCA Native Incubator-M3 + (May, 2007)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDownload linkMD5PGP
Linux and
Mac OS X +
Source
Tuscany SCA Native M3 + Source Release for linux and Mac Os Xtuscany_sca_native-1.0-incubator-M3-src.tar.gzMD5PGP
Windows +
+ Binary
Tuscany SCA Native M3 + Binary Release for Windowstuscany_sca_native-1.0-incubator-M3-bin.zipMD5PGP
Windows +
+ Source
Tuscany SCA Native M3 + Source Release for Windowstuscany_sca_native-1.0-incubator-M3-src.zipMD5PGP
+
>Incubator-M2 (Nov 3rd, + 2006)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDownload linkMD5PGP
Linux +
+ Binary
Tuscany SCA C++ M2tuscany_sca_cpp-1.0-incubator-M2-bin.tar.gzMD5PGP
Linux +
+ Source
Tuscany SCA C++ M2tuscany_sca_cpp-1.0-incubator-M2-src.tar.gzMD5PGP
Windows +
+ Binary
Tuscany SCA C++ M2tuscany_sca_cpp-1.0-incubator-M2-bin.zipMD5PGP
Windows +
+ Source
Tuscany SCA C++ M2tuscany_sca_cpp-1.0-incubator-M2-src.zipMD5PGP
+
+ +
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-downloads.html b/site/trunk/site-publish/sca-downloads.html new file mode 100644 index 0000000000..6ac2a1c1df --- /dev/null +++ b/site/trunk/site-publish/sca-downloads.html @@ -0,0 +1,489 @@ + + + + + + + SCA Downloads : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Downloads + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SCA Java + Releases
>Incubator-M2 (Nov 14th, 2006)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + DescriptionDownload linkMD5PGP
Linux +
+ + Binary
Tuscany M2 SCAtuscany-sca-1.0--incubator-M2-bin.tar.gz + PGP
Linux +
+ Source
Tuscany M2 SCAtuscany-sca-1.0--incubator-M2-src.tar.gz + PGP
Linux +
+ Source
Tuscany M2 SCA Samplestuscany-sca-1.0--incubator-M2-samples.tar.gz + PGP
Linux +
+ Source
Tuscany Commonj Specstuscany-spec-commonj-1.1-incubator-M2-src.tar.gz + PGP
Linux +
+ Source
Tuscany SCA Specs.r.0.95tuscany-spec-sca-r0.95-incubator-M2-src.tar.gz + PGP
Windows +
+ Binary
Tuscany M2 SCAtuscany-sca-1.0-incubator-M2-bin.zip + PGP
Windows +
+ Source
Tuscany M2 SCAtuscany-sca-1.0-incubator-M2-src.zip + PGP
Windows +
+ Source
Tuscany M2 SCA Samplestuscany-sca-1.0--incubator-M2-samples.zip + PGP
Windows +
+ Source
Tuscany Commonj Specstuscany-spec-commonj-1.1-incubator-M2-src.zip + PGP
Windows +
+ Source
Tuscany SCA Specs.r.0.95tuscany-spec-sca-r0.95-incubator-M2-src.zip + PGP
JavaDocs +
+ Archive
Tuscany M2 SCA Javadocstuscany-sca-1.0-incubator-M2-javadoc.zip + PGP
JavaDocs +
+ Archive
Tuscany Commonj Specstuscany-spec-commonj-1.1-incubator-M2-javadoc.zip + PGP
JavaDocs +
+ Archive
Tuscany SCA Specs.r.0.95tuscany-spec-sca-r0.95-incubator-M2-javadoc.zip + PGP
+
> SCA Java Incubating-M1 + (June 7th, 2006)--- This is a single package release containing SDO and DAS + besides SCA.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDownload linkMD5PGP
Linux +
+ Source
Tuscany M1 SCAtuscany-incubating-M1-src.tar.gzMD5PGP
Windows +
+ + Binary
Tuscany M1 SCAtuscany-incubating-M1.zipMD5PGP
Windows +
+ Source
Tuscany M1 SCAtuscany-incubating-M1-src.zipMD5PGP
+
SCA Native Releases
>SCA Native Incubator-M3 + (May, 2007)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDownload linkMD5PGP
Linux and
Mac OS X +
Source
Tuscany SCA Native M3 + Source Release for linux and Mac Os Xtuscany_sca_native-1.0-incubator-M3-src.tar.gzMD5PGP
Windows +
+ Binary
Tuscany SCA Native M3 + Binary Release for Windowstuscany_sca_native-1.0-incubator-M3-bin.zipMD5PGP
Windows +
+ Source
Tuscany SCA Native M3 + Source Release for Windowstuscany_sca_native-1.0-incubator-M3-src.zipMD5PGP
+
>Incubator-M2 (Nov 3rd, + 2006)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDownload linkMD5PGP
Linux +
+ Binary
Tuscany SCA C++ M2tuscany_sca_cpp-1.0-incubator-M2-bin.tar.gzMD5PGP
Linux +
+ Source
Tuscany SCA C++ M2tuscany_sca_cpp-1.0-incubator-M2-src.tar.gzMD5PGP
Windows +
+ Binary
Tuscany SCA C++ M2tuscany_sca_cpp-1.0-incubator-M2-bin.zipMD5PGP
Windows +
+ Source
Tuscany SCA C++ M2tuscany_sca_cpp-1.0-incubator-M2-src.zipMD5PGP
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-general-menu.html b/site/trunk/site-publish/sca-general-menu.html new file mode 100644 index 0000000000..0212d86936 --- /dev/null +++ b/site/trunk/site-publish/sca-general-menu.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA General Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-get-involved.html b/site/trunk/site-publish/sca-get-involved.html new file mode 100644 index 0000000000..24b568035c --- /dev/null +++ b/site/trunk/site-publish/sca-get-involved.html @@ -0,0 +1,109 @@ + + + + + + + SCA Get Involved : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java Subproject > SCA Get Involved + + User List | Dev List | Issue Tracker   +
+ + + +
+
+ +
+
+ +
+ + +

Getting Involved

+ +

A successful project requires many people to play many roles, for example write code, documentation, test, provide suggestions or feedback. If you would like to become involved, join the mailing list.

+ +

Here are some suggestions for getting started and welcome to the project.

+ +

Read the overview pages for each subproject and decide where you'd like to get involved.

+ +
    +
  • Contribute new ideas for improving Tuscany subprojects.
  • +
  • Answer questions posted to the mailing list.
  • +
  • Contribute to the FAQ under each subproject or to the wiki website.
  • +
  • Contribute to the user or developer documentation for each subproject on the wiki.
  • +
  • Investigate bugs that have been reported and provide patches.
  • +
  • Help with development for the next release of Apache Tuscany subprojects.
  • +
+ + +

If in doubt about where to start, send a note to the mailing list and mention your area of interest.

+ +

Please note that a single mailing list is used for all the subprojects.

+ +

If you are not familiar with Apache, you can read more about how Apache works at this link.

+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-090-incubating.html b/site/trunk/site-publish/sca-java-090-incubating.html new file mode 100644 index 0000000000..1f3edcd177 --- /dev/null +++ b/site/trunk/site-publish/sca-java-090-incubating.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 0.90-incubating + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 0.90-incubating + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 0.90-incubating

+ +

SCA Java 0.90-incubating was released in June 2007.

+ +
Warning
This is release is now very old, the latest release can be found here
+ +

This release represents a significant milestone on the road to Apache Tuscany SCA 1.0 release. It is based on the final 1.0 versions of the SCA specifications and it includes a substantial redesign of parts of the runtime which has significantly improved usability compared with previous releases, as well as stable SPIs for extension development.

+ +

For full detail about the release see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-0.90-incubating.zip ASC MD5
Source apache-tuscany-sca-0.90-incubating-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-0.90-incubating.tar.gz ASC MD5
Source apache-tuscany-sca-0.90-incubating-src.tar.gz ASC MD5
+
+ + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-091-incubating-release-summary.html b/site/trunk/site-publish/sca-java-091-incubating-release-summary.html new file mode 100644 index 0000000000..636fe08e69 --- /dev/null +++ b/site/trunk/site-publish/sca-java-091-incubating-release-summary.html @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 0.91-incubating Release Summary + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 0.91-incubating > SCA Java 0.91-incubating Release Summary + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +

SCA Java 0.91-incubating (Released in July 2007)

+ + +
+

This release represents some interesting additions to the previous release in terms of extensions, samples and demos.  Here is a summary of the additions:

+
    +
  • Implementation Extenstions: Spring and WebResource
  • +
  • Binding Extensions: AJAX, EJB, RSS/ATOM Feeds
  • +
  • Demos that demonstrate the use of a mix of extensions: altert-aggregator, bigbank-account, bigbank-calculator and bigbank-stockquote
  • +
  • New Samples: Spring, Resource, AJAX
  • +
+ + +

For full detail about the release see the RELEASE_NOTES and CHANGES files.

+
Create Online Store in 10 minutes
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-091-incubating.html b/site/trunk/site-publish/sca-java-091-incubating.html new file mode 100644 index 0000000000..0b21bb82e4 --- /dev/null +++ b/site/trunk/site-publish/sca-java-091-incubating.html @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 0.91-incubating + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 0.91-incubating + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +

SCA Java 0.91-incubating (Released in July 2007)

+ + +
+

This release represents some interesting additions to the previous release in terms of extensions, samples and demos.  Here is a summary of the additions:

+
    +
  • Implementation Extenstions: Spring and WebResource
  • +
  • Binding Extensions: AJAX, EJB, RSS/ATOM Feeds
  • +
  • Demos that demonstrate the use of a mix of extensions: altert-aggregator, bigbank-account, bigbank-calculator and bigbank-stockquote
  • +
  • New Samples: Spring, Resource, AJAX
  • +
+ + +

For full detail about the release see the RELEASE_NOTES and CHANGES files.

+
Create Online Store in 10 minutes
+ +
Warning
This is release is now very old, the latest release can be found here
+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-0.91-incubating.zip ASC MD5
Source apache-tuscany-sca-0.91-incubating-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-0.91-incubating.tar.gz ASC MD5
Source apache-tuscany-sca-0.91-incubating-src.tar.gz ASC MD5
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_099_06.pdf b/site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_099_06.pdf new file mode 100644 index 0000000000..afab69100b Binary files /dev/null and b/site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_099_06.pdf differ diff --git a/site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_Rest-099_07pdf.pdf b/site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_Rest-099_07pdf.pdf new file mode 100644 index 0000000000..3a628e1d6e Binary files /dev/null and b/site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_Rest-099_07pdf.pdf differ diff --git a/site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_Rest_099_07.pdf b/site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_Rest_099_07.pdf new file mode 100644 index 0000000000..3a628e1d6e Binary files /dev/null and b/site/trunk/site-publish/sca-java-099-incubating-release-summary.data/getting_started_Rest_099_07.pdf differ diff --git a/site/trunk/site-publish/sca-java-099-incubating-release-summary.html b/site/trunk/site-publish/sca-java-099-incubating-release-summary.html new file mode 100644 index 0000000000..a9ff192145 --- /dev/null +++ b/site/trunk/site-publish/sca-java-099-incubating-release-summary.html @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 0.99-incubating Release Summary + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 0.99-incubating > SCA Java 0.99-incubating Release Summary + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +

SCA Java 0.99-incubating (Released in August 2007)

+
+

This release of Apache Tuscany SCA builds on the stability and modularity established with the previous releases and includes more complete implementation of SCA specifications, support for distributed SCA domains, SCA policy, OSGi implementation types, and pub/sub support with notification components. Start up time and memory footprint of the runtime has been reduced and there have been numerous bug fixes. This is expected to be the last point release before the 1.0 final release.

+ +

For full detail about the release see the RELEASE_NOTES and CHANGES files.

+
Create Online Store in 10 minutes
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-099-incubating.html b/site/trunk/site-publish/sca-java-099-incubating.html new file mode 100644 index 0000000000..f25d6c3d0a --- /dev/null +++ b/site/trunk/site-publish/sca-java-099-incubating.html @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 0.99-incubating + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 0.99-incubating + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +

SCA Java 0.99-incubating (Released in August 2007)

+
+

This release of Apache Tuscany SCA builds on the stability and modularity established with the previous releases and includes more complete implementation of SCA specifications, support for distributed SCA domains, SCA policy, OSGi implementation types, and pub/sub support with notification components. Start up time and memory footprint of the runtime has been reduced and there have been numerous bug fixes. This is expected to be the last point release before the 1.0 final release.

+ +

For full detail about the release see the RELEASE_NOTES and CHANGES files.

+
Create Online Store in 10 minutes
+ +
Warning
This is release has been superseded, the latest release can be found here
+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-0.99-incubating.zip ASC MD5
Source apache-tuscany-sca-0.99-incubating-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-0.99-incubating.tar.gz ASC MD5
Source apache-tuscany-sca-0.99-incubating-src.tar.gz ASC MD5
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-10-incubating-release-summary.data/getting-started-1.0.pdf b/site/trunk/site-publish/sca-java-10-incubating-release-summary.data/getting-started-1.0.pdf new file mode 100644 index 0000000000..950e4b12cd Binary files /dev/null and b/site/trunk/site-publish/sca-java-10-incubating-release-summary.data/getting-started-1.0.pdf differ diff --git a/site/trunk/site-publish/sca-java-10-incubating-release-summary.html b/site/trunk/site-publish/sca-java-10-incubating-release-summary.html new file mode 100644 index 0000000000..a6c6f637d4 --- /dev/null +++ b/site/trunk/site-publish/sca-java-10-incubating-release-summary.html @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.0-incubating Release Summary + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA JAVA 1.0-incubating > SCA Java 1.0-incubating Release Summary + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +

SCA Java 1.0-incubating (Released in September 2007)

+ +
+

The Apache Tuscany SCA 1.0 release represents a significant milestone being the first 1.0 implementation of the core SCA specifications. It includes SCA assembly and policy along with support for many binding and component type implementations and a lightweight modular runtime with several host deployment options.

+ +

For full detail about the release please see the RELEASE_NOTES
+ and CHANGES files.

+
Create Online Store in 10 minutes
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-10-incubating.html b/site/trunk/site-publish/sca-java-10-incubating.html new file mode 100644 index 0000000000..62f3642caf --- /dev/null +++ b/site/trunk/site-publish/sca-java-10-incubating.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA JAVA 1.0-incubating + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA JAVA 1.0-incubating + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +

SCA Java 1.0-incubating (Released in September 2007)

+ +
+

The Apache Tuscany SCA 1.0 release represents a significant milestone being the first 1.0 implementation of the core SCA specifications. It includes SCA assembly and policy along with support for many binding and component type implementations and a lightweight modular runtime with several host deployment options.

+ +

For full detail about the release please see the RELEASE_NOTES
+ and CHANGES files.

+
Create Online Store in 10 minutes
+ +
Warning
This is release been superseded, the latest release can be found here
+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.0-incubating.zip ASC MD5
Source apache-tuscany-sca-1.0-incubating-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.0-incubating.tar.gz ASC MD5
Source apache-tuscany-sca-1.0-incubating-src.tar.gz ASC MD5
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-101-incubating-release-summary.html b/site/trunk/site-publish/sca-java-101-incubating-release-summary.html new file mode 100644 index 0000000000..75d5acc11e --- /dev/null +++ b/site/trunk/site-publish/sca-java-101-incubating-release-summary.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.0.1-incubating Release Summary + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.0.1-incubating > SCA Java 1.0.1-incubating Release Summary + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +

SCA Java 1.0.1-incubating (Released in November 2007)

+ +

The Apache Tuscany SCA 1.0.1 release is a bug-fix release for Tuscany SCA Java 1.0.

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-101-incubating-release.html b/site/trunk/site-publish/sca-java-101-incubating-release.html new file mode 100644 index 0000000000..4c838e2c8a --- /dev/null +++ b/site/trunk/site-publish/sca-java-101-incubating-release.html @@ -0,0 +1,132 @@ + + + + + + + SCA Java 1.0.1-incubating Release : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.0.1-incubating Release + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +

SCA Java 1.0-incubating (Released in September 2007)

+ +
+

The Apache Tuscany SCA 1.0 release represents a significant milestone being the first 1.0 implementation of the core SCA specifications. It includes SCA assembly and policy along with support for many binding and component type implementations and a lightweight modular runtime with several host deployment options.

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+
Create Online Store in 10 minutes
+ +

Windows

+ + + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.0-incubating.zip ASC MD5
Source apache-tuscany-sca-1.0-incubating-src.zip ASC MD5
+ +

Linux / Mac OS X / Unix

+ + + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.0-incubating.tar.gz ASC MD5
Source apache-tuscany-sca-1.0-incubating-src.tar.gz ASC MD5
+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-101-incubating.html b/site/trunk/site-publish/sca-java-101-incubating.html new file mode 100644 index 0000000000..b2a96e08a3 --- /dev/null +++ b/site/trunk/site-publish/sca-java-101-incubating.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.0.1-incubating + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.0.1-incubating + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +

SCA Java 1.0.1-incubating (Released in November 2007)

+ +

The Apache Tuscany SCA 1.0.1 release is a bug-fix release for Tuscany SCA Java 1.0.

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +
Warning
This is release been superseded, the latest release can be found here
+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.0.1-incubating.zip ASC MD5
Source apache-tuscany-sca-1.0.1-incubating-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.0.1-incubating.tar.gz ASC MD5
Source apache-tuscany-sca-1.0.1-incubating-src.tar.gz ASC MD5
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-11-incubating.html b/site/trunk/site-publish/sca-java-11-incubating.html new file mode 100644 index 0000000000..26a670adb4 --- /dev/null +++ b/site/trunk/site-publish/sca-java-11-incubating.html @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.1-incubating + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.1-incubating + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.1-incubating (January 2008)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.1-incubating.zip ASC MD5
Source apache-tuscany-sca-1.1-incubating-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.1-incubating.tar.gz ASC MD5
Source apache-tuscany-sca-1.1-incubating-src.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. You must verify the integrity of the downloaded files using signatures downloaded from our main distribution directory.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.1-incubating.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.1-incubating.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.1-incubating.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.1-incubating.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.1-incubating.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-12-incubating.html b/site/trunk/site-publish/sca-java-12-incubating.html new file mode 100644 index 0000000000..bc3296c256 --- /dev/null +++ b/site/trunk/site-publish/sca-java-12-incubating.html @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.2-incubating + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.2-incubating + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.2-incubating (April 2008)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.2-incubating.zip ASC MD5
Source apache-tuscany-sca-1.2-incubating-src.zip ASC MD5
Eclipse Tools apache-tuscany-sca-1.2-incubating-updatesite.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.2-incubating.tar.gz ASC MD5
Source apache-tuscany-sca-1.2-incubating-src.tar.gz ASC MD5
Eclipse Tools apache-tuscany-sca-1.2-incubating-updatesite.tar.gz ASC MD5
+
+ + +

Tuscany Eclipse Tools Updatesite

+ +

Use the following Eclipse Tools Updatesite to install the Tuscany plugins in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. You must verify the integrity of the downloaded files using signatures downloaded from our main distribution directory.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.2-incubating.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.2-incubating.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.2-incubating.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.2-incubating.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.2-incubating.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-121-incubating.html b/site/trunk/site-publish/sca-java-121-incubating.html new file mode 100644 index 0000000000..f3ae98e746 --- /dev/null +++ b/site/trunk/site-publish/sca-java-121-incubating.html @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.2.1-incubating + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.2.1-incubating + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.2.1-incubating (June 2008)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.2.1-incubating.zip ASC MD5
Source apache-tuscany-sca-1.2.1-incubating-src.zip ASC MD5
Eclipse Tools apache-tuscany-sca-1.2.1-incubating-updatesite.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ + + + +

Tuscany Eclipse Tools Updatesite

+ +

Use the following Eclipse Tools Updatesite to install the Tuscany plugins in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. You must verify the integrity of the downloaded files using signatures downloaded from our main distribution directory.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.2.1-incubating.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.2.1-incubating.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.2.1-incubating.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.2.1-incubating.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.2.1-incubating.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-13.html b/site/trunk/site-publish/sca-java-13.html new file mode 100644 index 0000000000..96c2075fdd --- /dev/null +++ b/site/trunk/site-publish/sca-java-13.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.3 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.3 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.3 (August 2008)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.3.zip ASC MD5
Source apache-tuscany-sca-1.3-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.3.tar.gz ASC MD5
Source apache-tuscany-sca-1.3-src.tar.gz ASC MD5
+
+ + +

Tuscany Eclipse Tools Updatesite

+ +

Use the following Eclipse Tools Updatesite to install the Tuscany plugins in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.3.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.3.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.3.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.3.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.3.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-131.html b/site/trunk/site-publish/sca-java-131.html new file mode 100644 index 0000000000..fe91dbae42 --- /dev/null +++ b/site/trunk/site-publish/sca-java-131.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.3.1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.3.1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.3.1 (August 2008)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.3.1.zip ASC MD5
Source apache-tuscany-sca-1.3.1-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.3.1.tar.gz ASC MD5
Source apache-tuscany-sca-1.3.1-src.tar.gz ASC MD5
+
+ + +

Tuscany Eclipse Tools Updatesite

+ +

Use the following Eclipse Tools Updatesite to install the Tuscany plugins in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.3.1.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.3.1.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.3.1.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.3.1.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.3.1.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-132.html b/site/trunk/site-publish/sca-java-132.html new file mode 100644 index 0000000000..5f569e9afd --- /dev/null +++ b/site/trunk/site-publish/sca-java-132.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.3.2 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.3.2 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.3.2 (October 2008)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.3.2.zip ASC MD5
Source apache-tuscany-sca-1.3.2-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.3.2.tar.gz ASC MD5
Source apache-tuscany-sca-1.3.2-src.tar.gz ASC MD5
+
+ + +

Tuscany Eclipse Tools Updatesite

+ +

Use the following Eclipse Tools Updatesite to install the Tuscany plugins in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.3.2.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.3.2.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.3.2.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.3.2.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.3.2.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-14.html b/site/trunk/site-publish/sca-java-14.html new file mode 100644 index 0000000000..0543dd8b07 --- /dev/null +++ b/site/trunk/site-publish/sca-java-14.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.4 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.4 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.4 (January 2009)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.4.zip ASC MD5
Source apache-tuscany-sca-1.4-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.4.tar.gz ASC MD5
Source apache-tuscany-sca-1.4-src.tar.gz ASC MD5
+
+ + +

Tuscany Eclipse Tools Updatesite

+ +

Use the following Eclipse Tools Updatesite to install the Tuscany plugins in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.4.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.4.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.4.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.4.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.4.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-15.html b/site/trunk/site-publish/sca-java-15.html new file mode 100644 index 0000000000..97d787bf0c --- /dev/null +++ b/site/trunk/site-publish/sca-java-15.html @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.5 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.5 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.5 (May, 2009)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.5.zip ASC MD5
Source apache-tuscany-sca-1.5-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.5.tar.gz ASC MD5
Source apache-tuscany-sca-1.5-src.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.5.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.5.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.5.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.5.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.5.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-151.html b/site/trunk/site-publish/sca-java-151.html new file mode 100644 index 0000000000..9ab78bf36c --- /dev/null +++ b/site/trunk/site-publish/sca-java-151.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.5.1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.5.1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.5.1 (October, 2009)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.5.1.zip ASC MD5
Source apache-tuscany-sca-1.5.1-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.5.1.tar.gz ASC MD5
Source apache-tuscany-sca-1.5.1-src.tar.gz ASC MD5
+
+ + +

Tuscany Eclipse Tools Updatesite

+ +

Use the following Eclipse Tools Updatesite to install the Tuscany plugins in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.5.1.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.5.1.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.5.1.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.5.1.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.5.1.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-16.html b/site/trunk/site-publish/sca-java-16.html new file mode 100644 index 0000000000..b5bc0e52f8 --- /dev/null +++ b/site/trunk/site-publish/sca-java-16.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.6 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.6 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.6 (February, 2010)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.6.zip ASC MD5
Source apache-tuscany-sca-1.6-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.6.tar.gz ASC MD5
Source apache-tuscany-sca-1.6-src.tar.gz ASC MD5
+
+ + +

Tuscany Eclipse Tools Updatesite

+ +

Use the following Eclipse Tools Updatesite to install the Tuscany plugins in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.6.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.6.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.6.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.6.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.6.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-161.html b/site/trunk/site-publish/sca-java-161.html new file mode 100644 index 0000000000..1aa0e6dcf8 --- /dev/null +++ b/site/trunk/site-publish/sca-java-161.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.6.1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.6.1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.6.1 (November 2010)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.6.1.zip ASC MD5
Source apache-tuscany-sca-1.6.1-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.6.1.tar.gz ASC MD5
Source apache-tuscany-sca-1.6.1-src.tar.gz ASC MD5
+
+ + +

Tuscany Eclipse Tools Update Site

+ +

Use the following Eclipse Tools Update Site to install the Tuscany feature and plugin in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.6.1.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.6.1.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.6.1.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.6.1.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.6.1.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-162.html b/site/trunk/site-publish/sca-java-162.html new file mode 100644 index 0000000000..eb5289f0f1 --- /dev/null +++ b/site/trunk/site-publish/sca-java-162.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.6.2 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.6.2 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 1.6.2 (April 2011)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.6.2.zip ASC MD5
Source apache-tuscany-sca-1.6.2-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.6.2.tar.gz ASC MD5
Source apache-tuscany-sca-1.6.2-src.tar.gz ASC MD5
+
+ + +

Tuscany Eclipse Tools Update Site

+ +

Use the following Eclipse Tools Update Site to install the Tuscany feature and plugin in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.6.2.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.6.2.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.6.2.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.6.2.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.6.2.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-1x-releases.html b/site/trunk/site-publish/sca-java-1x-releases.html new file mode 100644 index 0000000000..6995993f7c --- /dev/null +++ b/site/trunk/site-publish/sca-java-1x-releases.html @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 1.x Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java 1.x Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + +

Latest Release

+ +

SCA Java 1.6.2 (April 2011)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.6.2.zip ASC MD5
Source apache-tuscany-sca-1.6.2-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-1.6.2.tar.gz ASC MD5
Source apache-tuscany-sca-1.6.2-src.tar.gz ASC MD5
+
+ + +

Tuscany Eclipse Tools Update Site

+ +

Use the following Eclipse Tools Update Site to install the Tuscany feature and plugin in your Eclipse IDE.

+ +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-1.6.2.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-1.6.2.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-1.6.2.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-1.6.2.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-1.6.2.tar.gz.asc
+
+
+ +

+ +

Previous Releases

+ +

Below is a complete list of all Apache Tuscany SCA Java downloads.

+ +

It is strongly recommended that you download the latest release instead of any of the previous releases since it is closer to the latest code in the trunk.

+ + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-20-beta1.html b/site/trunk/site-publish/sca-java-20-beta1.html new file mode 100644 index 0000000000..4247693b93 --- /dev/null +++ b/site/trunk/site-publish/sca-java-20-beta1.html @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.0-Beta1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.0-Beta1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 2.0-Beta1 (November, 2010)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-Beta1.zip ASC MD5
Source apache-tuscany-sca-all-2.0-Beta1-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-Beta1.tar.gz ASC MD5
Source apache-tuscany-sca-all-2.0-Beta1-src.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-all-2.0-Beta1.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-all-2.0-Beta1.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-all-2.0-Beta1.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-all-2.0-Beta1.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-all-2.0-Beta1.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-20-beta2.html b/site/trunk/site-publish/sca-java-20-beta2.html new file mode 100644 index 0000000000..e8d6ff9161 --- /dev/null +++ b/site/trunk/site-publish/sca-java-20-beta2.html @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.0-Beta2 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.0-Beta2 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 2.0-Beta2 (February, 2011)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-Beta2.zip ASC MD5
Source apache-tuscany-sca-all-2.0-Beta2-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-Beta2.tar.gz ASC MD5
Source apache-tuscany-sca-all-2.0-Beta2-src.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-all-2.0-Beta2.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-all-2.0-Beta2.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-all-2.0-Beta2.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-all-2.0-Beta2.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-all-2.0-Beta2.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-20-beta3.html b/site/trunk/site-publish/sca-java-20-beta3.html new file mode 100644 index 0000000000..588eb5b925 --- /dev/null +++ b/site/trunk/site-publish/sca-java-20-beta3.html @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.0-Beta3 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.0-Beta3 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 2.0-Beta3 (July, 2011)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-Beta3.zip ASC MD5
Source apache-tuscany-sca-all-2.0-Beta3-src.zip ASC MD5
Samples tuscany-samples-2.0-Beta3.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-Beta3.tar.gz ASC MD5
Source apache-tuscany-sca-all-2.0-Beta3-src.tar.gz ASC MD5
Samples tuscany-samples-2.0-Beta3.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-all-2.0-Beta3.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-all-2.0-Beta3.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-all-2.0-Beta3.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-all-2.0-Beta3.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-all-2.0-Beta3.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-20-m1.html b/site/trunk/site-publish/sca-java-20-m1.html new file mode 100644 index 0000000000..b3aeca5d85 --- /dev/null +++ b/site/trunk/site-publish/sca-java-20-m1.html @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.0-M1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.0-M1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 2.0-M1 (February 2009)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M1.zip ASC MD5
Source apache-tuscany-sca-all-2.0-M1-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M1.tar.gz ASC MD5
Source apache-tuscany-sca-all-2.0-M1-src.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-all-2.0-M1.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-all-2.0-M1.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-all-2.0-M1.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-all-2.0-M1.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-all-2.0-M1.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-20-m2.html b/site/trunk/site-publish/sca-java-20-m2.html new file mode 100644 index 0000000000..10a5eb96eb --- /dev/null +++ b/site/trunk/site-publish/sca-java-20-m2.html @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.0-M2 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.0-M2 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 2.0-M2 (April 2009)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M2.zip ASC MD5
Source apache-tuscany-sca-all-2.0-M2-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M2.tar.gz ASC MD5
Source apache-tuscany-sca-all-2.0-M2-src.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-all-2.0-M2.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-all-2.0-M2.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-all-2.0-M2.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-all-2.0-M2.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-all-2.0-M2.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-20-m3.html b/site/trunk/site-publish/sca-java-20-m3.html new file mode 100644 index 0000000000..b81be68024 --- /dev/null +++ b/site/trunk/site-publish/sca-java-20-m3.html @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.0-M3 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.0-M3 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 2.0-M3 (July 2009)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M3.zip ASC MD5
Source apache-tuscany-sca-all-2.0-M3-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M3.tar.gz ASC MD5
Source apache-tuscany-sca-all-2.0-M3-src.tar.gz ASC MD5
+
+ + +

Tomcat Runtime

+ +
+ + + + + + + + + +
File Signature
tuscany.war ASC MD5
+
+ + +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-all-2.0-M3.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-all-2.0-M3.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-all-2.0-M3.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-all-2.0-M3.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-all-2.0-M3.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-20-m4.html b/site/trunk/site-publish/sca-java-20-m4.html new file mode 100644 index 0000000000..e282781d7a --- /dev/null +++ b/site/trunk/site-publish/sca-java-20-m4.html @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.0-M4 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.0-M4 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 2.0-M4 (November, 2009)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M4.zip ASC MD5
Source apache-tuscany-sca-all-2.0-M4-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M4.tar.gz ASC MD5
Source apache-tuscany-sca-all-2.0-M4-src.tar.gz ASC MD5
+
+ + +

Tomcat Runtime

+ +
+ + + + + + + + + +
File Signature
tuscany.war ASC MD5
+
+ + +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-all-2.0-M4.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-all-2.0-M4.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-all-2.0-M4.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-all-2.0-M4.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-all-2.0-M4.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-20-m5.html b/site/trunk/site-publish/sca-java-20-m5.html new file mode 100644 index 0000000000..97f8316340 --- /dev/null +++ b/site/trunk/site-publish/sca-java-20-m5.html @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.0-M5 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.0-M5 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 2.0-M5 (June, 2010)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M5.zip ASC MD5
Source apache-tuscany-sca-all-2.0-M5-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M5.tar.gz ASC MD5
Source apache-tuscany-sca-all-2.0-M5-src.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
openssl md5 apache-tuscany-sca-all-2.0-M5.tar.gz
+
+
+

or

+
+
md5sum apache-tuscany-sca-all-2.0-M5.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
pgpk -a KEYS
+pgpv apache-tuscany-sca-all-2.0-M5.tar.gz.asc
+
+
+

or

+
+
pgp -ka KEYS
+pgp apache-tuscany-sca-all-2.0-M5.tar.gz.asc
+
+
+

or

+
+
gpg --import KEYS
+gpg --verify apache-tuscany-sca-all-2.0-M5.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-20-m51.html b/site/trunk/site-publish/sca-java-20-m51.html new file mode 100644 index 0000000000..c32d790be5 --- /dev/null +++ b/site/trunk/site-publish/sca-java-20-m51.html @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.0-M5.1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.0-M5.1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 2.0-M5.1 (October, 2010)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M5.1.zip ASC MD5
Source apache-tuscany-sca-all-2.0-M5.1-src.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + +
Type File Signature
Binary apache-tuscany-sca-all-2.0-M5.1.tar.gz ASC MD5
Source apache-tuscany-sca-all-2.0-M5.1-src.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-sca-all-2.0-M5.1.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-sca-all-2.0-M5.1.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-sca-all-2.0-M5.1.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-sca-all-2.0-M5.1.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-sca-all-2.0-M5.1.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-20.html b/site/trunk/site-publish/sca-java-20.html new file mode 100644 index 0000000000..c426a221ba --- /dev/null +++ b/site/trunk/site-publish/sca-java-20.html @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.0 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.0 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java 2.0 (July, 2012)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-distribution-all-2.0.zip ASC MD5
Source tuscany-distribution-all-2.0-src.zip ASC MD5
Samples tuscany-samples-2.0.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-distribution-all-2.0.tar.gz ASC MD5
Source tuscany-distribution-all-2.0-src.tar.gz ASC MD5
Samples tuscany-samples-2.0.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 tuscany-distribution-all-2.0.tar.gz
+
+
+

or

+
+
+md5sum tuscany-distribution-all-2.0.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv tuscany-distribution-all-2.0.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp tuscany-distribution-all-2.0.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify tuscany-distribution-all-2.0.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-2x-development-guide.html b/site/trunk/site-publish/sca-java-2x-development-guide.html new file mode 100644 index 0000000000..a206cf1268 --- /dev/null +++ b/site/trunk/site-publish/sca-java-2x-development-guide.html @@ -0,0 +1,533 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SCA Java 2.x Development Guide : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java 2.x Development Guide + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ + + +
+ + + + + + + + + + + +
Resources
+
+ + +

OSGi Overview and Approach

+ +

OSGI & Tuscany

+ +

General Guide

+ +

Welcome to the Tuscany SCA Java subproject project. We look forward to your participation and try to help you get on board. Feel free to ask your questions on the mailing list.

+ +

Here are some general guidelines we use in this project.

+
    +
  • Java SCA sub-project aims to provide enterprise-grade service infrastructure based on SCA.
  • +
  • Tuscany SCA is not just a reference implementation. We encourage innovation based on the tenets of SCA. A lot of work we do provides feedback to the specifications.
  • +
  • The Java SCA infrastructure should provide flexibility and choice. It should not dictate programming models but support many.
  • +
  • The Java SCA infrastructure is very modularized and is designed to be highly extensible so users can customize it to fit their needs.
  • +
+ + +

Prerequisites

+ +

Java SCA requires the following:

+ + + +

Checking out code from Subversion

+ +

Use the command as follows:

+
+
+svn checkout https://svn.apache.org/repos/asf/tuscany/java/sca
+
+
+ +

Setting up your Development Environment

+ +

top-down build (recommended approach)

+ +

Check out all of the java source code.

+
+
+svn checkout https://svn.apache.org/repos/asf/tuscany/java/sca
+
+
+

Building the SCA source code :

+
+
+mvn -Psetup clean install
+mvn -fae clean install
+cd  distribution
+mvn -fae clean install
+
+
+

It should work even if you start with an empty Maven local repository, and it should always work, however when you are building for Tuscany for the first time there are a lot of dependencies which must be downloaded so the first build can take a long time and it may fail with problems retrieving the dependencies.

+ +

There can be occasional problems downloading artifacts from remote Maven repositories so if mvn fails with network related sounding messages sometimes just trying again can fix the problem.

+ +

The trunk code sometimes has SNAPSHOT dependencies which can get out of date in your local repository so if you see odd build failures try updating the SNAPSHOT jars by using the "-U" parameter in the mvn command.

+ +

Once you have done a top-down build, and your local maven repository is populated, you can start using the maven off line option to speed up the build process by using the "-o" parameter in the mvn command.

+ +

The SCA build consumes a good amount of memory, in case you are seeing issues during the build, set a MAVEN_OPTS environment variable to allocate more memory for the build process.

+ +

Windows : SET MAVEN_OPTS=-Xmx512m
+ Unix : export MAVEN_OPTS=-Xmx512m

+ +

Importing SCA modules into your Development IDE

+ + +

Using Eclipse

+ + +

If this is the first time you are using your workspace with maven m2 local repository, you will need to tell your Eclipse workspace the location of the directory, and you can do this with the following command :

+
+
+mvn -Declipse.workspace=[path-to-eclipse-workspace] eclipse:add-maven-repo
+
+
+

In order to generate the necessary project files to import the SCA modules to Eclipse, you can use the maven eclipse plugin

+
+
+mvn -fae -Peclipse eclipse:eclipse
+
+
+ + +

Now, launch your Eclipse IDE, select File->Import->Existing projects into Workplace, and then import the project from SCA Modules into your Eclipse Workspace.

+ +

Now, launch your Eclipse IDE, select File->Import->Existing projects into Workplace, and then import the "PDE Target" project (from distribution/pdetarget) into your Eclipse Workspace.

+ +
    +
  • Import distribution/pdetarget
  • +
  • Inside eclipse, open tuscany-distribution-pdetarget project +
      +
    • open target/tuscany-distribution-pdetarget.target
    • +
    • click "Set as target platform" on the upper-right side of the overview window that opened
    • +
    +
  • +
+ + +

There are some Tuscany Eclipse code templates available:
+Eclipse Style Formatter
+Eclipse Templates

+ +

Coding Guidelines

+ +

There are a few simple guidelines when developing for JAVA SCA:

+
    +
  • The basic coding style used is the described at Sun Java coding standards but the main thing is to be consistent with the existing code you're updating, so for example, if you're updating a method that uses the braces on the same line style don't add code with the hanging braces style.
  • +
+ + +
    +
  • Always include the Apache License Headers on all files (both source code files and resource files such as xml documents)
  • +
+ + +
    +
  • Include a descriptive log message for checkins, for example "fixed such and such problem".
  • +
+ + +

While Tuscany does not yet have an official style or template, here are some templates that folks have been using and have been checked into the build which are stored at https://svn.apache.org/repos/asf/tuscany/java/etc/

+ +

Naming conventions to increase consistency

+ +

Folder Names: Please use all lowercases and dashes in folder names (like in the jar names)

+
    +
  • Maven artifact id = tuscany-<folder name>
  • +
+ + +

Package names: Package names within modules should include the module name so that source code can be located in the source tree easily. So, for example, java/sca/module/implementation-java would be in package structure org.apache.tuscany.implementation.java.*

+ +

Testing

+ +

Tuscany uses plain junit test cases to perform unit and integration testing, below is an example that can also be used as a template for writing new test cases; it demonstrates how to bootstrap the Tuscany SCA runtime in your test case, and because they are based on junit, you can run it from your IDE of choice or from Maven.

+ +

Note that we are using JUnit 4.2 code style in OSGI development stream

+ +
+
+/**
+ * Description of your test case and necessary details you find necessary
+ */
+@Scope("COMPOSITE") @EagerInit
+public class CalculatorTestCase {
+
+    private static CalculatorService calculatorService;
+    private static NodeLauncher launcher;
+    private static Node node;
+
+    @Reference
+    public void setCalculatorService(CalculatorService calculatorService) {
+        CalculatorTestCase.calculatorService = calculatorService;
+    }
+    
+    
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+        launcher = NodeLauncher.newInstance();
+        String location = ContributionLocationHelper.getContributionLocation(CalculatorClient.class);
+        node = launcher.createNode("Calculator.composite", new Contribution("test", location));
+        System.out.println("SCA Node API ClassLoader: " + node.getClass().getClassLoader());
+        node.start();
+    }
+
+    @AfterClass
+    public static void tearDownAfterClass() throws Exception {
+        if (node != null) {
+            node.stop();
+            node.destroy();
+        }
+        if (launcher != null) {
+            launcher.destroy();
+        }
+    }
+
+    @Test
+    public void testCalculator() throws Exception {
+        // Calculate
+        assertEquals(calculatorService.add(3, 2), 5.0);
+        assertEquals(calculatorService.subtract(3, 2), 1.0);
+        assertEquals(calculatorService.multiply(3, 2), 6.0);
+        assertEquals(calculatorService.divide(3, 2), 1.5);
+    }
+}
+
+
+

Note that we use surefire maven plugin to run the unit and integration tests, and in most cases, they are configured to match a **/*TestCase.java file name pattern. Because of this, if your test case has a different file name pattern, you might execute it from your IDE of choice, but the maven build won't execute the test.

+ +

Client Applications as SCA Components

+ +

Below is how you can build client applications as an SCA component.

+ +
+
+@Scope("COMPOSITE") @EagerInit
+public class CalculatorClient {
+    
+    private CalculatorService calculatorService;
+
+    @Reference
+    public void setCalculatorService(CalculatorService calculatorService) {
+        this.calculatorService = calculatorService;
+    }
+    
+    @Init
+    public void calculate() {
+
+        // Calculate
+        System.out.println("SCA API ClassLoader: " + print(Reference.class.getClassLoader()));
+        System.out.println("3 + 2=" + calculatorService.add(3, 2));
+        System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
+        System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
+        System.out.println("3 / 2=" + calculatorService.divide(3, 2));
+    }
+    
+    private static String print(ClassLoader cl) {
+        StringBuffer buf = new StringBuffer();
+        for (; cl != null;) {
+            buf.append(cl.toString());
+            buf.append(' ');
+            cl = cl.getParent();
+        }
+        return buf.toString();
+    }
+
+}
+
+
+ +

Maven Build Structure

+ +

We use the term Module to refer to the leaf of maven tree.

+
    +
  • sca/pom.xml's parent will be pom/parent/pom.xml
  • +
  • Other poms will use the pom from the parent folder as parent pom
  • +
  • Group id: org.apache.tuscany.sca
  • +
  • Version of our modules will be specified once in java/sca/pom.xml, child poms don't need specify a version as they get it from their parent
  • +
  • pom names begin Apache Tuscany SCA
  • +
  • Eclipse projects are generated for all built modules using mvn -Peclipse eclipse:eclipse
  • +
+ + +

Adding a new module and not ready to integrate?

+ +

'work-in-progress' modules can be worked on in the same source tree and yet not break the top-down build. You can do this by not listing your module(s) in java/sca/modules/pom.xml.

+ +

Development Hints

+ +

Generating Eclipse WTP Web Projects for Webapp samples

+ +

If you're using Eclipse WTP and want to get WTP Web Projects generated
+for our Webapp samples you can simply pass a -Dwtpversion=1.5 option to
+the usual mvn eclipse:eclipse command, like this:
+mvn -Dwtpversion=1.5 -Peclipse eclipse:eclipse

+ +

The magic -Dwtpversion=1.5 option will add the WTP Web project nature to
+all the Eclipse projects with <packaging>war</packaging> in their Maven
+pom.xml. You'll then be able to add these projects to a WTP Tomcat or
+Geronimo Server configuration, to publish and run them straight from
+your Eclipse workspace.

+ +

h3: Generating Dependencies for Ant in Samples

+ +

Figuring out the package dependency to include in Ant build.xml can be a pain. Here is a quick
+script which works in Linux environment for war files.

+
+
+jar tvf sample-feed-aggregator-webapp.war | grep .jar | awk '{ printf "%s\n", $8 }' | sed -e "s/WEB-INF\/lib\///" | awk '{ printf "<include name=\"%s\"/>\n", $1 }' | grep -v tuscany
+
+
+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + diff --git a/site/trunk/site-publish/sca-java-2x-previous-releases.html b/site/trunk/site-publish/sca-java-2x-previous-releases.html new file mode 100644 index 0000000000..da9b84a10f --- /dev/null +++ b/site/trunk/site-publish/sca-java-2x-previous-releases.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.x Previous Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases > SCA Java 2.x Previous Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-2x-releases.data/getting-started-1.0.pdf b/site/trunk/site-publish/sca-java-2x-releases.data/getting-started-1.0.pdf new file mode 100644 index 0000000000..950e4b12cd Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x-releases.data/getting-started-1.0.pdf differ diff --git a/site/trunk/site-publish/sca-java-2x-releases.data/getting_started_06.pdf b/site/trunk/site-publish/sca-java-2x-releases.data/getting_started_06.pdf new file mode 100644 index 0000000000..f1d93a0034 Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x-releases.data/getting_started_06.pdf differ diff --git a/site/trunk/site-publish/sca-java-2x-releases.data/onlineStore.pdf b/site/trunk/site-publish/sca-java-2x-releases.data/onlineStore.pdf new file mode 100644 index 0000000000..f1d93a0034 Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x-releases.data/onlineStore.pdf differ diff --git a/site/trunk/site-publish/sca-java-2x-releases.html b/site/trunk/site-publish/sca-java-2x-releases.html new file mode 100644 index 0000000000..6c80efe571 --- /dev/null +++ b/site/trunk/site-publish/sca-java-2x-releases.html @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.x Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > SCA Java 2.x Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + +

Latest Release

+ +

SCA Java 2.0 (July, 2012)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-distribution-all-2.0.zip ASC MD5
Source tuscany-distribution-all-2.0-src.zip ASC MD5
Samples tuscany-samples-2.0.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Type File Signature
Binary tuscany-distribution-all-2.0.tar.gz ASC MD5
Source tuscany-distribution-all-2.0-src.tar.gz ASC MD5
Samples tuscany-samples-2.0.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 tuscany-distribution-all-2.0.tar.gz
+
+
+

or

+
+
+md5sum tuscany-distribution-all-2.0.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv tuscany-distribution-all-2.0.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp tuscany-distribution-all-2.0.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify tuscany-distribution-all-2.0.tar.gz.asc
+
+
+ +

+ +

Previous Releases

+ +

Below is a complete list of all Apache Tuscany SCA Java downloads.

+ +

It is strongly recommended that you download the latest release instead of any of the previous releases since it is closer to the latest code in the trunk.

+ + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-2x.data/distributed-abstract smallest.png b/site/trunk/site-publish/sca-java-2x.data/distributed-abstract smallest.png new file mode 100644 index 0000000000..3fa9fab7ab Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/distributed-abstract smallest.png differ diff --git a/site/trunk/site-publish/sca-java-2x.data/distributed-abstract smallest.png.jpeg b/site/trunk/site-publish/sca-java-2x.data/distributed-abstract smallest.png.jpeg new file mode 100644 index 0000000000..4806f70f66 Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/distributed-abstract smallest.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-2x.data/distributed-abstract.png b/site/trunk/site-publish/sca-java-2x.data/distributed-abstract.png new file mode 100644 index 0000000000..170d590f16 Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/distributed-abstract.png differ diff --git a/site/trunk/site-publish/sca-java-2x.data/distributed-abstract.png.jpeg b/site/trunk/site-publish/sca-java-2x.data/distributed-abstract.png.jpeg new file mode 100644 index 0000000000..f66f7625c4 Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/distributed-abstract.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-2x.data/getting_started_Rest_099_07.pdf b/site/trunk/site-publish/sca-java-2x.data/getting_started_Rest_099_07.pdf new file mode 100644 index 0000000000..3a628e1d6e Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/getting_started_Rest_099_07.pdf differ diff --git a/site/trunk/site-publish/sca-java-2x.data/javasca smaller.jpg b/site/trunk/site-publish/sca-java-2x.data/javasca smaller.jpg new file mode 100644 index 0000000000..78cad38be3 Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/javasca smaller.jpg differ diff --git a/site/trunk/site-publish/sca-java-2x.data/javasca smaller.jpg.jpeg b/site/trunk/site-publish/sca-java-2x.data/javasca smaller.jpg.jpeg new file mode 100644 index 0000000000..cea158aeec Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/javasca smaller.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-2x.data/javascaSmall2.jpg b/site/trunk/site-publish/sca-java-2x.data/javascaSmall2.jpg new file mode 100644 index 0000000000..6498d08553 Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/javascaSmall2.jpg differ diff --git a/site/trunk/site-publish/sca-java-2x.data/javascaSmall2.jpg.jpeg b/site/trunk/site-publish/sca-java-2x.data/javascaSmall2.jpg.jpeg new file mode 100644 index 0000000000..51b6935845 Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/javascaSmall2.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-2x.data/tuscanylogo.jpg b/site/trunk/site-publish/sca-java-2x.data/tuscanylogo.jpg new file mode 100644 index 0000000000..2c7a85b0c2 Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/tuscanylogo.jpg differ diff --git a/site/trunk/site-publish/sca-java-2x.data/tuscanylogo.jpg.jpeg b/site/trunk/site-publish/sca-java-2x.data/tuscanylogo.jpg.jpeg new file mode 100644 index 0000000000..bf56a9fcb0 Binary files /dev/null and b/site/trunk/site-publish/sca-java-2x.data/tuscanylogo.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-2x.html b/site/trunk/site-publish/sca-java-2x.html new file mode 100644 index 0000000000..3f005688ef --- /dev/null +++ b/site/trunk/site-publish/sca-java-2x.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java 2.x + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java 2.x + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.doc b/site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.doc new file mode 100644 index 0000000000..1cacd85b62 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.doc differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.jpg b/site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.jpg new file mode 100644 index 0000000000..ecaa4e3cff Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.jpg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.jpg.jpeg b/site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.jpg.jpeg new file mode 100644 index 0000000000..6877188a48 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/architectureOverview.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/assembly.jpg b/site/trunk/site-publish/sca-java-architecture-guide.data/assembly.jpg new file mode 100644 index 0000000000..1e1b1631ca Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/assembly.jpg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/assembly.jpg.jpeg b/site/trunk/site-publish/sca-java-architecture-guide.data/assembly.jpg.jpeg new file mode 100644 index 0000000000..75e7e12e3b Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/assembly.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap.jpg b/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap.jpg new file mode 100644 index 0000000000..6b4ef2a0e2 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap.jpg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap.jpg.jpeg b/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap.jpg.jpeg new file mode 100644 index 0000000000..bdaf3f1277 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap_seq.jpg b/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap_seq.jpg new file mode 100644 index 0000000000..f222230cf4 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap_seq.jpg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap_seq.jpg.jpeg b/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap_seq.jpg.jpeg new file mode 100644 index 0000000000..c5b7fb2288 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/bootstrap_seq.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/contribution_overview.jpg b/site/trunk/site-publish/sca-java-architecture-guide.data/contribution_overview.jpg new file mode 100644 index 0000000000..7316751a9a Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/contribution_overview.jpg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/contribution_overview.jpg.jpeg b/site/trunk/site-publish/sca-java-architecture-guide.data/contribution_overview.jpg.jpeg new file mode 100644 index 0000000000..680b96a1c4 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/contribution_overview.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/invokers.jpg b/site/trunk/site-publish/sca-java-architecture-guide.data/invokers.jpg new file mode 100644 index 0000000000..513e452c86 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/invokers.jpg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/invokers.jpg.jpeg b/site/trunk/site-publish/sca-java-architecture-guide.data/invokers.jpg.jpeg new file mode 100644 index 0000000000..b637b46349 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/invokers.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-model.jpg b/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-model.jpg new file mode 100644 index 0000000000..4a54a8c577 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-model.jpg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-model.jpg.jpeg b/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-model.jpg.jpeg new file mode 100644 index 0000000000..99999c7a20 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-model.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-wire.jpg b/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-wire.jpg new file mode 100644 index 0000000000..1a4b48cd35 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-wire.jpg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-wire.jpg.jpeg b/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-wire.jpg.jpeg new file mode 100644 index 0000000000..6ecf8ef3cd Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/runtime-wire.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/tuscany_composite_hierarchy.jpg b/site/trunk/site-publish/sca-java-architecture-guide.data/tuscany_composite_hierarchy.jpg new file mode 100644 index 0000000000..fd1f8d4318 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/tuscany_composite_hierarchy.jpg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg b/site/trunk/site-publish/sca-java-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg new file mode 100644 index 0000000000..a4e3e2b1e3 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-architecture-guide.html b/site/trunk/site-publish/sca-java-architecture-guide.html new file mode 100644 index 0000000000..75bf4ef88f --- /dev/null +++ b/site/trunk/site-publish/sca-java-architecture-guide.html @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Architecture Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Architecture Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ + +

Overview

+ +

The SCA Java runtime is composed of core and extensions. The core is essentially a multi-VM wiring engine that connects components together using the principles of Dependency Injection, or Inversion of Control.

+ +

Core

+ +

The Core is designed to be simple and limited in its capabilities. It wires functional units together and provides SPIs that extensions can interact with. Capabilities such as service discovery, reliability, support for transport protocols, etc. are provided through extensions.

+ +

Extension

+ +

Extensions enhance SCA runtime functionality. Extension types are not fixed and core is designed to be as flexible as possible by providing an open-ended extension model. However, there are a number of known extension types defined including:

+
    +
  • Component implementation types, e.g. Spring, Groovy, and JavaScript
  • +
  • Binding types, e.g. Axis, CXF, AMQP, ActiveMQ, JXTA
  • +
  • DataBinding types, e.g. JAXB, SDO, XmlBeans
  • +
  • Interface Binding types, e.g. WSDL, Java
  • +
+ + +

Details of how to implement an extension can be can be found in the Extensions Guide.

+ +

Runtime

+ +

The core is designed to be embedded in, or provisioned to, a number of different host environments. For example, the core may be provisioned to an OSGi container, a standalone runtime, a servlet engine, or J2EE application server. Runtime capabilities may vary based on the host environment.

+ +

+ +

High level overview of Java SCA runtime

+ +

The diagram shown below is a high level view of the SCA runtime which consists of the following key modules/packages:

+
    +
  1. SCA Spec API: The APIs defined by the SCA Java Client and Implementation Spec
  2. +
  3. API: Tuscany APIs which extend the SCA Spec APIs
  4. +
  5. Core: The runtime implementation and the SPIs to extend it
  6. +
  7. Extensions: +
      +
    1. Container implementation - For extending language support, for example BPEL, Python, C++, Ruby,..
    2. +
    3. Binding - for extending protocol support, for example Axis2, CXF,..
    4. +
    5. Interface Binding - for extending types of service definition, for example WSDL, Java, ...
    6. +
    7. Databinding - for extending data support, for example SDO, JAXB, ...
    8. +
    +
  8. +
  9. Host Platforms: The environments that host the Tuscany runtime.
  10. +
+ + +

+ +

Internals High Level View

+ +

[Note: Do we want to link to Kernel-Structure]?

+ +

Bootsrap

+ +

Bootstrap process is controlled by Host environment. The default process is implemented in DefaultBootstrapper.
+The runtime processes service assemblies serialized using SCA Assembly XML which can take other forms.

+
    +
  • The load phase processes SCDL and creates an in-memory model and produces corresponding runtime artifacts (e.g. components, services, references)
  • +
  • The connect/wire phase wires references to services
  • +
+ + +

+ +

Assembly Model

+ +

The SCA assembly model is represented as a set of interfaces in Tuscany. The following are some key elements.

+
    +
  • SCA components are configured instances of SCA implementations, which provide and consume services.
  • +
  • SCA services are used to declare the externally accessible services of an implementation.
  • +
  • SCA references represent a dependency that an implementation has on a service that is supplied by some other implementation, where the service to be used is specified through configuration.
  • +
  • An implementation is concept that is used to describe a piece of software technology such as a Java class, BPEL process, XSLT transform, or C++ class that is used to implement one or more services in a service-oriented application. An SCA composite is also an implementation. 
  • +
  • ComponentType refers to the configurable aspects of an implementation.
  • +
  • Interfaces define one or more business functions. These business functions are provided by Services and are used by components through References. Services are defined by the Interface they implement. SCA currently supports two interface type systems: +
      +
    • Java interfaces
    • +
    • WSDL portTypes
    • +
    +
  • +
  • An SCA composite is the basic unit of composition within an SCA Domain. An SCA Composite is an assembly of Components, Services, References, and the Wires that interconnect them.
  • +
  • SCA wires connect service references to services.
  • +
  • Bindings are used by services and references. References use bindings to describe the access mechanism used to call the service to which they are wired. Services use bindings to describe the access mechanism(s) that clients should use to call the service.
  • +
  • Properties allow for the configuration of an implementation with externally set data values. The data value is provided through a Component, possibly sourced from the property of a containing composite.
  • +
+ + +
    +
  • +
+ + +

Contribution

+ +

The Tuscany runtime provides a framework to support SCA contributions. The framework can be extended against the following two extension points:

+ +

PackageProcessorExtensionPoint: It accepts extensions that can handle different packaging format/archives such as a directory, a JAR, an OSGi bundle, an EAR, a WAR and a ZIP. 

+ +

ArtifactProcessorExtensionPoint: It accepts extensions that can handle specific types of artifacts such as WSDL, XSD, composite, java class, BPEL.

+ +

+
    +
  • Package processors scans the contribution being installed and generate a list of artifacts that needs to be processed. Currently there is support for folder/file system and jar contribution packages. In order to be available to the contribution service, a package processors needs to register itself with the package processor extension.
  • +
+ + +
    +
  • Artifact processors are used to process each artifact available on the contribution. In order to be available to the contribution service, a artifact processor needs to register itself with the artifact processor extension. An artifact processor will be called for each artifact in two phases :
  • +
+ + +
    +
  • +
      +
    • read phase : This is where you read an artifact (a document, an XML element, classes etc.), populate a model representing the artifact and return it. The SCA contribution service calls ArtifactProcessor.read() on all artifacts that have an ArtifactProcessor registered for them. If your model points to other models, instead of trying to load these other models right away, you should just keep the information representing that reference, which you'll turn into a pointer to the referenced model in the resolve() phase. Note that you don't necessarily need to fully read and populate your model at this point, you can choose to complete it later.
    • +
    +
  • +
+ + +
    +
  • +
      +
    • resolve phase : This phase gives you the opportunity to resolve references to other models (a WSDL, a class, another composite, a componentType). At this point, all models representing the artifacts in your SCA contribution have been read, registered in the contribution's ArtifactResolver, and are ready to be resolved.
    • +
    +
  • +
+ + +
    +
  • All deployable composites should be now ready to get deployed to the SCA Domain
  • +
+ + +

Implementation Extension

+ +

Implementation extension is responsible for supporting an implementation type, such as Java, Script, and BPEL

+ +

Binding Extension

+ +

Binding extension is responsible for supporting a binding type such as Web Service, JMS,  JSON-RPC and RMI

+ +

Interface Extension

+ +

Interface extension is responsible for supporting an interface type such as Java interface and WSDL 1.1 portType

+ +

Data Binding Extension

+ +

Please refer to: Tuscany Databinding Guide

+ +

Composite Activation

+ +

After a composite is fully configured, it can be activated in the SCA domain. The Tuscany runtime activates a composite in the following steps:

+
    +
  1. Build the composite: In this phase, the composite model is further normalized to facilitate the runtime interactions. The metadata is consolidated following the service/reference promotions. With the flattened model, we can get all the information at component level.
  2. +
  3. Configure the composite: In this phase, the composite hierarchy is navigated to configure the component implementation, reference binding and service binding with provider factories which will be used in later steps to create runtime wires among components and external services.   
  4. +
  5. Create the runtime wires: In this phase, runtime wires are created for component references and component services over selected bindings. The runtime wire is a collection of invocation chains that are patitioned by operations. Each invocation chain consists of a set of invokers and interceptors s. Invokers provides the invocation logic to binding protocols and implementation technologies. Interceptors are speical kind of invokers that provide additional logic for the invocation, such as data transformation and transaction control. For a component reference, we create runtime wires to represent the outbound invocation over the selected binding. For a component service, we create runtime wires to represent the inbound invocation to the implementation type. Callback wires can be attached to component services to represent the callback invocations from the service.
  6. +
  7. Start the composite: In this phase, the start() callback methods defined by the ImplementationProvider, ReferenceBindingProvider and ServiceBindingProvider will be invoked. As a result, components, component references and component services are initialized to serve the component interactions. Service listeners are started to accept inbound requests from the binding layer.
    +
  8. +
+ + +

Invocation Overview

+ +
    +
  • An invocation is dispatched to the WireInvocationHandler
  • +
  • The WireInvocationHandler looks up the correct InvocationChain
  • +
  • It then creates a message, sets the payload, sets the TargetInvoker, and passes the message down the chain
  • +
  • When the message reaches the end of the chain, the TargetInvoker is called, which in turn is responsible for dispatching to the target
  • +
  • Having the TargetInvoker stored on the outbound side allows it to cache the target instance when the wire source has a scope of equal or lesser value than the target (e.g. request-->composite
  • +
+ + +

The runtime provides components with InboundWires and OutboundWires. InvocationChains are held in component wires and are therefore stateless which allows for dynamic behavior such as introduction of new interceptors or re-wiring.

+ +

Loading SCA assemblies

+ + +

Artifact Processor

+ +

Artifact processors are responsible for processing each artifact available in a contribution package, these processors are going to be invoked in two phases

+
    +
  • read phase : This is where you read an artifact (a document, an XML element, classes etc.), populate a model representing the artifact and return it. The SCA contribution service calls ArtifactProcessor.read() on all artifacts that have an ArtifactProcessor registered for them. If your model points to other models, instead of trying to load these other models right away, you should just keep the information representing that reference, which you'll turn into a pointer to the referenced model in the resolve() phase. Note that you don't necessarily need to fully read and populate your model at this point, you can choose to complete it later.
  • +
+ + +
    +
  • resolve phase : This phase gives you the opportunity to resolve references to other models (a WSDL, a class, another composite, a componentType). At this point, all models representing the artifacts in your SCA contribution have been read, registered in the contribution's ArtifactResolver, and are ready to be resolved.
  • +
+ + +

Loading Java SCA

+ +

SCA service assemblies are deployed to the SCA domain in the format of SCDL files. Tuscany runtime artifact processor loads the SCDLs into model objects which are a set of java beans to hold the metadata.

+ +

There are two types of loaders:

+
    +
  • StAXElementLoader: Load the XML element from the StAX events
  • +
  • ComponentTypeLoader: Load the Component Type for an implementation either by introspection or paring a side file
  • +
+ + +

Loading Component Type

+ +

Loads the component type definition for a specific implementation

+
    +
  • How it does this is implementation-specific
  • +
  • May load XML sidefile (location set by implementation)
  • +
  • May introspect an implementation artifact (e.g. Java annotations)
  • +
  • ... or anything else
  • +
+ + +

Loading Composite ComponentType Loader

+
    +
  • Load SCDL from supplied URL
  • +
  • Extract and load SCDL from composite package
  • +
+ + +

POJO ComponentType Loader

+
    +
  • Introspect Java annotations
  • +
  • Uses a pluggable "annotation processing" framework to introspect Java classes
  • +
+ + +

Class diagram for the runtime artifacts

+ +

+ +

Spring Integration

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-architecture.data/TuscanyJAVASCAM2.pdf b/site/trunk/site-publish/sca-java-architecture.data/TuscanyJAVASCAM2.pdf new file mode 100644 index 0000000000..aa2f5ffe41 Binary files /dev/null and b/site/trunk/site-publish/sca-java-architecture.data/TuscanyJAVASCAM2.pdf differ diff --git a/site/trunk/site-publish/sca-java-architecture.html b/site/trunk/site-publish/sca-java-architecture.html new file mode 100644 index 0000000000..817426e324 --- /dev/null +++ b/site/trunk/site-publish/sca-java-architecture.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Architecture + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > DELETE- Java SCA Architecture Overview > SCA Java Architecture + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
Apache Tuscany SCA Java Architecture
+

This page is work in progress. Thanks for your contribution
+At the moment we are pulling different pieces of information in one place until we decide how to orgnaize this.

+ +
+ +

Java SCA Structure

+ +

The following diagram is a high level view of the kernel structure.
+ this diagram needs to be fine tuned an is under discussion, but gives you an idea of the main modules in kernel. For example, the diagram shows the whole Tuscany instead of just the Kernel. As an example, runime block should not be shown as part of the Kernel.

+ +

Kernel-Structure

+ +

Data Binding

+ +

Data provides transparent data mapping between different types of data that can be exchanged between caller of a service and the service itself given the format of the data that will be supplied by the client. Data Mediator will do this transformation given the following information:

+
    +
  1. format of the data that can be consumed by the service
  2. +
  3. format of the data that will be sent by the client
  4. +
+ + +

You can find more detailed information about databinding at this link

+ +

+ +

Module 1

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-binding-endpoints.html b/site/trunk/site-publish/sca-java-binding-endpoints.html new file mode 100644 index 0000000000..ca3d2ef213 --- /dev/null +++ b/site/trunk/site-publish/sca-java-binding-endpoints.html @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding endpoints + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding endpoints + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

SCA binding endpoints

+ +

The value of the endpoint URI used by an SCA service or reference binding is defined in the varrious SCA Specifications. The Assembly specification, page 53, section 1.7.2 "Form of the URI of a Deployed Binding" defines the overall rules, and specific binding specifications may modify or add addtional rules, for example, the Web service binding specifiction on page 3, section 2.1.1 "Endpoint URI resolution" adds further web service related endpoint rules.

+ +

The Tuscany runtime and binding implementations aim to all work consistently so that once you understand the basic endpoint URI rules and conventions it should be easy to determine an actual endpoint from reading the composite SCDL.

+ +

Some examples

+ +

The following composite fragment would result in the web service address of http://localhost:8080/MyService

+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           name="MyComposite">
+
+    <service name="MyService" promote="SomeComponent">
+       <binding.ws/>
+    </service>
+
+    . . .
+
+</composite>
+
+
+ +

The following composite fragment would result in the web service address of http://localhost:8080/MyComponent/MyService

+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           name="MyComposite">
+
+    <component name="MyComponent">
+        <service name="MyService">
+           <binding.ws/>
+        </service>
+        . . .
+    </component>
+
+</composite>
+
+
+ + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-binding-jsonrpc.html b/site/trunk/site-publish/sca-java-binding-jsonrpc.html new file mode 100644 index 0000000000..92870e46fb --- /dev/null +++ b/site/trunk/site-publish/sca-java-binding-jsonrpc.html @@ -0,0 +1,77 @@ + + + + + + + SCA Java binding-jsonrpc : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > Java SCA Documentation Menu > SCA Java Extension Guide > SCA Java binding-jsonrpc + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Overview

+ +

General description of this extenson

+ +

Using The Extension

+ +

What does the SCDL look like

+ +

Examples

+ +

Some examples of how it can be used.

+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-bindingajax.html b/site/trunk/site-publish/sca-java-bindingajax.html new file mode 100644 index 0000000000..66fce86da1 --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindingajax.html @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.ajax + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding.ajax + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<binding.ajax>

+ +

Tuscany supports web browser clients using AJAX to communicate with with SCA components by using the <binding.ajax> SCDL extension. This enables remote web browser clients to easily make RPC style calls to server-side SCA components and for server-side SCA components to easily make COMET / Reverse Ajax style requests to web browser clients.

+ +

This binding has no attributes or elements so to include it on a SCA service or reference simply requires the following SCDL:

+ +
+
+   <binding.ajax/>
+
+
+ +

Also see <binding.jsonrpc which provides some similar function.

+ +

In order for a web browser client to interact with SCA services and references which use <binding.ajax> it needs to included a Tuscany runtime scaDomain.js script which will initialize the SCA enviroment and provides control functions. This script is dynamically generated to include

+ +

A web browser client needs to include a Tuscany runtime system script in its HTML page before it can interact with SCA services and references which use <binding.ajax>. This is done by simply including the following script tag within the HTML page:

+ +
+
+    <script type="text/javascript" src="SCA/SCADomain/scaDomain.js" />
+
+
+ +

This creates proxy objects for the SCA services which can then be used make requests to the server-side components. For example, if there was a service named "myService" using <binding.ajax> which had operations "aOnewayRequest" and "anRpcRequest" the scripts in the HTML page could now invoke these opperations with the following:

+ +
+
+myService.aOnewayRequest(args);
+
+
+

or

+
+
+myService.anRpcRequest(args, responseFunction);
+
+
+ +

In the that example 'responseFunction' is the name of a function which is called to process the response and which gets called asynchronously on another thread when the response is avaialble. RPC requests are done this way instead of the simpler "answer = myService.anRpcRequest(args)" to avoid hanging the browser while the (potentialy slow) request is being processed. An example of the responseFunction for the previous example is:

+
+
+function responseFunction(answer){
+  // do something with answer
+}
+
+
+ +

For SCA references using <binding.ajax> a function needs to be written to handle each operation that may be called by the reference. The operations used by the reference cannot return any response but must be one-way style operations. As an example, if there is an SCA reference named "myReference" which has an operation named "foo" then the client side function required would be:

+
+
+myReference.foo = function(args) {
+  // do something with args
+}
+
+
+ +

SCA references using <binding.ajax> require a communication channel between the server-side Tuscany runtime and the remote web browser client. This channel can be explicitly opened and closed by the client, and it must be opened before any client side function assoicated with a SCA reference will be invoked. This is done with:

+
+
+scaDomain.open();
+
+
+

and

+
+
+scaDomain.close();
+
+
+

The connection is automatically closed when the web page is closed so if the client does not need fine grain control the 'onLoad' of the HTML body element can be used to establish the connection, for example:

+
+
+<body onLoad="scaDomain.open()">
+
+
+ +

Some examples:

+ +

See the chat-webapp sample in the Tuscany SCA samples folder for an example of using <binding.ajax>

+ +
Differences between <binding.jsonrpc> and <binding.ajax>
The current Tuscany SCA runtime supports <binding.jsonrpc> and <binding.ajax> which provide similar functionality. The differences are: +
    +
  • <binding.jsonrpc> supports the SMD protocol enabling easy use with Dojo, <binding.ajax> does not support SMD
  • +
  • <binding.ajax> supports SCA references and using COMET style asynchronous operation, <binding.jsonrpc> does not
  • +
  • <binding.jsonrpc> uses the standard JSON-RPC protocol, <binding.ajax> uses a proprietry protocol using DWR
  • +
+ + +

These differences should be resolved by the Tuscany SCA 1.0 release.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindingatom.html b/site/trunk/site-publish/sca-java-bindingatom.html new file mode 100644 index 0000000000..1a2596918d --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindingatom.html @@ -0,0 +1,589 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.atom + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding.atom + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<binding.atom> Introduction

+ +

The Tuscany Java SCA runtime supports Atom using the <binding.atom> extension. Tuscany can communicate with services that provide or consume items described in the Atom Syndication Format and Atom Publishing Protocol. The Atom protcol is an additional conceptual layer that operates on top of the Hyper Text Transfer Protocol, so it is useful to understand that underlying protocol as well. Reference materials on these specifications is available here.

+ + + + +

Some of the function described here is included in the Tuscany 1.3.2 and 1.4 releases. The complete timeline of available and future plans is given in the Tuscany Web 2.0 Roadmap.

+ + +

Using the Tuscany Atom binding

+ +

The primary use of the Atom binding is to provide support for collections that can be shared in a distributed fashion. Examples of shared collections includes shopping carts, telephone directories, insurance forms, and blog sites. These collections of items can be added, retrieved, updated, and deleted using the 4 basic actions of the HTTP protocol:

+
    +
  • POST (create or add)
  • +
  • GET (retreive or query)
  • +
  • PUT (update)
  • +
  • DELETE (destroy or remove
  • +
+ + +

The simplest way to use the Atom binding is to declare a collection as a service and provide an HTTP address where one can access the service. This service is declared in an SCA composite file which describes the SCA domain.

+
+
+	<service name="customer" promote="CustomerCollection">
+		<tuscany:binding.atom uri = "http://localhost:8084/customer"/>
+	</service>
+
+
+ +

The service can be implemented in Java or any of the the Tuscany implementation types. For example, here is a way to create an implmentation for the above CustomerCollection service in the Java type.

+
+
+    <component name="CustomerCollection">
+        <implementation.java class="org.apache.tuscany.sca.binding.atom.CustomerCollectionImpl"/>
+    </component>
+
+
+ +

A collection that uses the Atom binding usually implements the Collection interface given in the package org.apache.tuscany.sca.binding.atom.collection. This interface declares the basic access methods mentioned above (post, get, put, and delete), and the data types on the methods are expressed as Atom type objects Feed and Entry. In other words, one can view the collection as an Atom Feed, and manipulate items in the Feed as Atom Entries. This shows the basic methods of the Atom Collection intergface in Tuscany:

+
+
+public interface Collection {
+
+    Entry post(Entry entry);
+    Entry get(String id) throws NotFoundException;
+    void put(String id, Entry entry) throws NotFoundException;
+    void delete(String id) throws NotFoundException;
+
+    Feed getFeed();
+    Feed query(String queryString);
+}
+
+
+ +

It is up to the developer or implementer of the shopping cart, telephone directory, or blog site to provide the code that implements the Collection interface. The developer or implementor also provides the code that translates from the business objects (shopping cart items, directory entries, insurance forms, blog articles) to the Atom model objects Feed and Entry.

+ +

One of the features of using this binding is that your business objects (shopping cart items, directory entries, insurance forms, and blog articles) can now be easily published and shared by the many Atom supporting tools such as feed readers, web browsers, and syndication aggregation. In other words, people can access your collection most anywhere on any device.

+ +

Example

+ +

Continuing with the CustomerCollection example shown above, let's see how one of the common access methods. In this case, let's look at the post method and how one would add a new item to the collection. When you declared your Atom binding in your SCA composite, you also provided a uri for your collection. Using a web browser or other device, a user performs an HTTP put request to this uri, with the body of the put containing the data. Tuscany SCA performs the task of invoking the correct service and finding the Java implementation for your collection and calling the correct method.

+
+
+    public Entry post(Entry entry) {
+       // 1. Validate entry fields
+       if (entry.getTitle() != null ) {
+          entryID = "tag:" + site "," + todaysDate + ":" + title;
+          entry.setID( entryID );
+       }
+       // 2. Provide any additional data.
+       entry.setUpdated( new Date() );
+       // 3. Store data in local collection or data base.
+       entries.put(id, entry);
+       // 4. Return entry to poster.
+       return entry;
+    }
+
+
+ +

Much of the code consists of converting from a Feed or Entry to a business data model and storing to a collection.

+ +

Tuscany uses the Apache Abdera project to provide a model for Atom data. Please see Apache Abdera for the Java method to access Atom Feeds and Entries, and how to easily convert these Java objects to and from XML.

+ +

Other Features of the Tuscany Atom Binding

+ +

More advanced features of the Tuscany Atom binding are described below.

+ +

Data Caching using ETags, Last-Modified, and other Header Commands

+ +

Atom feeds and entries can often be very large pieces of data. Since Tuscany uses the Atom data binding as one of its supported bindings, there is the potential that many requests for data may have large pieces of data associated with a request.

+ +

Hyper Text Transfer Protocol (HTTP), the basis of the web, has support to help limit or cache the amount of data shared between a client and server by adding tags to a resource reques. These header tags are the ETag and the Last-Modified tags. When used with a predicate tag such as If-Match, If-Not-Match, If-Modified-Since, If-Unmodified-Since, etc., the client and the server can avoid shipping large pieces of data when updated data is not needed.

+ +

The following entry scenarios show how Tuscany supports this form of caching throught ETags, Last-Modified, and other Header Commands.

+ +
    +
  • Posting new entry data to a feed
    + (Show entry data post request, item does not exist on server, server response code 200, return entry data body)
  • +
  • Updating existing entry data in a feed
    + (Show data update put, If-Match precondition, item is newer and matching, matching return code 412)
  • +
  • Requesting existing entry data
    + (Show get via ETag, If-None-Match precondition, modified entry data item, matching entry body returned)
  • +
  • Requesting stale entry data
    + (Show get via ETAG, If-None-Match precondition, unmodified entry data item, not modified return code 304)
  • +
  • Requesting up-to-date entry data
    + (Show request via last-modified date, entry data is unmodified, Not modified return code 304)
  • +
  • Requesting out-of-date entry data
    + (Show request via last-modified date, entry data is modified, updated data is returned)
  • +
+ + +

Tuscany provides a test case ProviderEntryEntityTagsTest.java in module binding.atom.abdera that validates these Entry caching scenarios via JTest. Additionally, the following Feed scenarios are provided in the test case ProviderFeedEntityTagsTest.java.

+ +
    +
  • Test feed basics
    + (Request Atom feed. Check that feed is non-null, has Id, title, and updated values. Check for Etag and Last-Modified headers)
  • +
  • Test Unmodified If-Match predicate
    + (Request feed based on existing ETag. Use If-Match predicate in request header. Expect status 200 and feed body.)
  • +
  • Test Unmodified If-None-Match predicate
    + (Request feed based on existing ETag. Use If-None-Match predicate in request header. Expect status 304, item not modified, no feed body.)
  • +
  • Test Unmodified If-Unmodified-Since predicate
    + (Request feed based on very current Last-Modified. Use If-Unmodified-Since predicate in request header. Expect status 304, item not modified, no feed body.)
  • +
  • Test Unmodified If-Modified-Since predicate
    + (Request feed based on very old Last-Modified. Use If-Modified-Since predicate in request header. Expect status 200, feed in body.)
  • +
  • Test Modified If-None-Match predicate
    + (Request feed based on existing ETag. Use If-None-Match predicate in request header. Expect status 200, feed in body.)
  • +
  • Test Modified If-Match predicate
    + (Request feed based on existing ETag. Use If-Match predicate in request header. Expect status 412, precondition failed, no feed in body.)
  • +
  • Test Modified If-UnModified-Since predicate
    + (Request feed based on very recent Last-Mod date. Use If-Unmodified-Since predicate in request header. Expect status 304, no feed in body.)
  • +
  • Test Modified If-Modified-Since predicate
    + (Request feed based on very old Last-Mod date. Use If-Modified-Since predicate in request header. Expect status 200, feed in body.)
  • +
+ + +

Support of Web 2.0 data caching via ETags and Last-Modified fields allow the Tuscany user to save bandwidth and re-requests of data. Especially in the area of content feeds which can have very large data objects, the ability to cache improves server performance and reduces network bottlenecks. A full end-to-end demonstration of this network savings is being created via Jira TUSCANY-2537 which will show caching in the feed aggregator sample.

+ +

Support for Negotiated Content Types

+ +

Requests for data now respond with negotiated content types. In other words, the requester can now state which content types are preferred, and the responder can provide different content types. The data preference is expressed in the request header "Accept" parameter.

+ +

These data binding types are supported:

+
    +
  • Atom XML format (Request header Accept=application/atom+xml)
  • +
  • Atom in JSON format (Request header Accept=application/atom+json)
  • +
+ + +

The following content types are requestable in different data bindings

+
    +
  • Atom entry data (MIME type application/atom+xxx;type=entry where xxx=xml or json)
  • +
  • Atom feed data (MIME type application/atom+xxx;type=feed where xxx=xml or json)
  • +
+ + +

For example, the requester asks for an Atom entry with no Accept header or Accept header value is application/atom+xml. The returned response body contains:

+
Atom Entry response body as XML
+
+<?xml version='1.0' encoding='UTF-8'?>
+<entry xmlns="http://www.w3.org/2005/Atom">
+  <title type="text">customer Fred Farkle</title>
+  <updated>2008-08-08T18:40:30.484Z</updated>
+  <author>
+    <name>Apache Tuscany</name>
+  </author>
+  <content type="text">Fred Farkle</content>
+  <id>urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085</id>
+  <link href="urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085" rel="edit" />
+  <link href="urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085" rel="alternate" />
+</entry>
+
+
+ +

In contrast, the requester asks for an Atom entry with Accept header value is application/atom+json. The returned response body contains:

+
Atom Entry response body as JSON
+
+{
+ "id":"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085",
+ "title":"customer Fred Farkle",
+ "content":"Fred Farkle",
+ "updated":"2008-08-08T18:40:30.484Z",
+ "authors":[{
+   "name":"Apache Tuscany"
+  }
+ ],
+ "links":[{
+   "href":"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085",
+   "rel":"edit"
+  },{
+   "href":"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085",
+   "rel":"alternate"
+  }
+ ]
+}
+
+
+ +

The ability to view entires and feeds in multiple data formats allows the Tuscany user extreme flexibility in parsing and processing data returned by a service or collection.

+ +

Service and Workspace Document Support (application/atomsvc+xml)

+ +

Prior to this implementation, there was a dummy service document provided when you visited an Atom feed service address with an "atomsvc" extension. For example, running the the Atom service binding unit tests, one could visit http://localhost:8080/customer/atomsvc and receive the following service document:

+
Tuscany Atom Binding Dummy Service document
+
+   <?xml version='1.0' encoding='UTF-8'?>
+   <service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
+      <workspace>
+         <atom:title type="text">resource</atom:title>
+         <collection href="http://luck.ibm.com:8084/customer">
+            <atom:title type="text">collection</atom:title>
+            <accept>application/atom+xml;type=entry</accept>
+            <categories />
+         </collection>
+      </workspace>
+   </service>
+
+
+

This dummy implementation did not provide a true collection name, URL to the collection, accept MIME types or categories.

+ +

Following the inclusion of TUSCANY-2597 and the new implentation, the Tuscany Atom binding will correctly populate an atomsvc document with information from the feed and give correct information for discovery. Now , running the the Atom service binding unit tests, one could visit http://localhost:8080/customer/atomsvc and receive the following service document:

+
Tuscany Atom Binding Service document
+
+<?xml version='1.0' encoding='UTF-8'?>
+<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
+  <workspace xml:base="http://localhost:8084/">
+    <atom:title type="text">workspace</atom:title>
+    <collection href="http://localhost:8084/customer">
+      <atom:title type="text">customers</atom:title>
+      <accept>application/atom+xml; type=feed</accept>
+      <accept>application/json; type=feed</accept>
+      <accept>application/atom+xml; type=entry</accept>
+      <accept>application/json; type=entry</accept>
+      <categories />
+    </collection>
+  </workspace>
+</service>
+
+
+ +

The service document is now properly populated with URLs, titles, accept MIME types and categories. These are elements that are needed for collection discovery and visitatin.

+ +

Support for full JavaScript Atom client.

+


+After creating and publishing your SCA service, it can be tedious converting to and from Atom Feeds and Entries on the client side. Tuscany provides a full JavaScript object model for Atom Feeds, Entries, and other data objects. This benefits customers and client developers by providing an easy model to use in HTML, JSP, scripts, GUIs, and other client side technology.

+ +

For example, prior to this feature, developers would have to develop code in XML to manipulate nodes in the XML document that represented the current page:

+
Tuscany client side XML Document Manipulation (old style)
+
+   var entries = feed.getElementsByTagName("entry");              
+   var list = "";
+   for (var i=0; i<entries.length; i++) {
+      var item = entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
+      list += item + ' <br>';
+   }
+
+
+ +

Using the new JavaScript client object model, the code is greatly simplified and easier to understand:

+
Tuscany client side JavaScript Atom Object Model (new style)
+
+   var entries = feed.getEntries();              
+   var list = "";
+   for (var i=0; i<entries.length; i++) {
+      var item = entries[i].getContent();
+      list += item + ' <br>';
+   }
+
+
+ +

Additionally, the Tuscany Atom JavaScript client provides full deserialization and serialization to and from the JavaScript Atom model and its XML format. In other words let's say you create an HTML page that scrapes a data base and wants to submit the data as an entry to a collection of blog articles. You can create the Entry data using the JavaScript Entry model:

+
+
+       var entry = new Entry();
+       entry.setNamespace( "http://www.w3.org/2005/Atom" );
+       entry.setTitle( "Atom-Powered Robots Run Amok" );
+       entry.setId( "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a" );
+       entry.setUpdated( "2003-12-13T18:30:02Z" );
+       entry.setContent( "Some text." );
+       entry.addAuthor( new Person( "John Doe" ) );
+       entry.addAuthor( new Person( "Mark Pilgrim", "f8dy@example.com" ));
+       entry.addContributor( new Person( "Sam Ruby" ));
+       entry.addContributor( new Person( "Joe Gregorio" ));
+       entry.addLink( new Link( "http://example.org/edit/first-post.atom", "edit" ));
+
+
+ +

Now to convert this code to XML and submit it to a site is easy using the Tuscany Atom JavaScript client:

+
+
+       var text = entry.toXML();
+
+
+ +

The text string now contains the fully serialized XML format of the Entry object

+
+
+      "<?xml version="1.0"?>
+      <entry xmlns="http://www.w3.org/2005/Atom">
+        <title>Atom-Powered Robots Run Amok</title>
+        <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+        <updated>2003-12-13T18:30:02Z</updated>
+        <author><name>John Doe</name></author>
+        <content>Some text.</content>
+        <link rel="edit" href="http://example.org/edit/first-post.atom"/>
+      </entry>"
+
+
+ +

Similarly the Tuscany Atom JavaScript client contains methods for deserializing from XML reperesentations to a JavaScript Atom model:

+
+
+   var feed = new Feed();
+   feed.readFromXML( xmlString );
+
+
+ +

A full example showing how to use this client model is given in implementation-widgets-runtime. The store.html page shows the older style of document XML manipulation. The storeJS.html page shows the newer style of JavaScript object manipulation.

+ +

Support for Posting and Putting Media Items

+

The Atom Publishing Protocol provides for a separate space for storage of media resources. The purpose of a separate space for these resources is to keep feeds and entries from growing too large with the contents of typically large items. Media resources can be any binary object that is supported by a MIME type, but typically media resources include video, image, and audio type files.

+ +

Media resources are maintained by the collection implementor, and are given a dual identity. There is a location in the media respository, typically where one places the media files, and there is a location in the feed or entry space. This second reference is known as a media link entry.

+ +

The Tuscany package at org.apache.tuscany.sca.binding.atom.collection (in tuscany-binding-atom-abdera package) has the following interface for MediaCollection:

+
Tuscany MediaCollection interface
+
+   /**
+     * Creates a new media entry
+     * 
+     * @param title
+     * @param slug
+     * @param contentType
+     * @param media
+     */
+    Entry postMedia(String title, String slug, String contentType, InputStream media);
+
+    /**
+     * Update a media entry.
+     * 
+     * @param id
+     * @param contentType
+     * @param media
+     * @return
+     */
+    void putMedia(String id, String contentType, InputStream media) throws NotFoundException;
+
+
+ +

These two methods are used to create (post) new media files, and update (put) new media information and edits. The media resources may be retrieved (get) or removed (delete) via the normal HTTP get and delete operations and the links returned by the post and get methods.

+ +

For instance, when creating a media resource, one typically posts the following information via an HTTP post request:

+
Requesting New Media Creation (postMedia method invoke)
+
+POST /edit/ HTTP/1.1
+Host: media.example.org
+Content-Type: image/png
+Slug: The Beach
+Authorization: Basic ZGFmZnk6c2VjZXJldA==
+Content-Length: nnn
+...binary data...
+
+
+ +

In turn, the Tuscany invocation framework invokes the postMedia shown above on the media collection implementation. The media collection implementation may then take the binary data from the media InputStream and store it to a media repository. The media collection implemenation should construct a proper Entry item via XML construction or some Atom model framework such as Apache Abdera. The Entry should contain the required elements (title, id, updated, summary, content, edit link, edit-media link) in order to provide the proper Atom Pub Protocol return headers and Entry data as given here:

+
Affirming New Media Creation (postMedia method return)
+
+HTTP/1.1 201 Created
+Content-Length: nnn
+Content-Type: application/atom+xml;type=entry;charset="utf-8"
+Location: http://example.org/media/edit/the_beach.atom
+<?xml version="1.0"?>
+<entry xmlns="http://www.w3.org/2005/Atom">
+   <title>The Beach</title>
+   <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+   <updated>2005-10-07T17:17:08Z</updated>
+   <author><name>Daffy</name></author>
+   <summary type="text" />
+   <content type="image/png"
+      src="http://media.example.org/the_beach.png"/>
+   <link rel="edit-media"
+      href="http://media.example.org/edit/the_beach.png" />
+   <link rel="edit"
+      href="http://example.org/media/edit/the_beach.atom" />
+</entry> 
+
+
+ +

Note that the edit link provides the Atom Feed link to the media entry, and the edit-media link provides the media repository link to the media entry. Use these links to get and delete media.

+ +

A special convention has been implemented to allow the media collection implementation to return properties in the response header. The summary element of the Entry returned may contain a set of key=value properties separated via commas. For example, in order to provide return Content-Type and Content-Length values in the response header, one can created this text in the postMedia Entry summary element: Content-Type=image/jpg,Content-Length=21642.

+ +

The putMedia method acts in much the same way, but the URI to the item should contain an ID to the media being updated. For instance, if the usual post and get feed URI is http://localhost:8084/receipt, then to update the media given above one would put to the URI http://localhost:8084/receipt/urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a. Here is an example of a put request:

+
Requesting Media Update (putMedia method invoke)
+
+PUT /edit/urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a HTTP/1.1
+Host: media.example.org
+Content-Type: image/png
+Authorization: Basic ZGFmZnk6c2VjZXJldA==
+Content-Length: nnn 
+...binary data...
+
+
+ +

After the above put request, the Atom binding will invoke the media collection implementation putMedia method. The media collection should update the media if the ID exists (and a 200 OK status code will return), or the media collection should throw a NotFoundException if the ID does not exist (and a 404 not found status code will return).

+ +

The above scenarios are documents in the MediaCollectionTestCase unit test case in the binding-atom-abdera module in the Tuscany code base.

+ +

Security Policy support in HTTP and Web 2.0 Bindings

+ +
work in progress
+ +

Scenarios

+ +
    +
  • A Web 2.0 application requires that a user get authenticated before it can access the application.
  • +
  • A Web 2.0 application requires that all communication between client/server be done using SSL.
  • +
  • A given service, exposed using a web 2.0 binding requires user authentication.
  • +
  • A given operation, exposed using a web 2.0 binding requires user authentication.
  • +
+ + +

Policy Interceptor

+ +

The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.
+The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.

+ +

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindingcorba.html b/site/trunk/site-publish/sca-java-bindingcorba.html new file mode 100644 index 0000000000..511ff7a69b --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindingcorba.html @@ -0,0 +1,441 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.corba + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java binding.corba + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<binding.corba>

+ +

The Tuscany Java SCA runtime supports CORBA using the <binding.corba> SCDL extension. New CORBA based service can be provided using a <binding.corba> element within a SCA <service>, existing CORBA object can be accessed using a <binding.corba> element within a SCA <reference>.

+ + + +

Using CORBA binding

+ +

+ +

Configuring CORBA service/reference

+ +

Location for both service and reference CORBA binding can be configured by:

+ +

1. Name, host, port parameters, where host and port points to name service, and name points to object within name service.

+ +

Example service declaration:

+
+
<service name="ScenarionOneServiceGenerated" promote="ScenarionOneServiceGenerated">
+
+    <interface.java interface="org.apache.tuscany.sca.test.corba.generated.ScenarioOneOperations"/>
+
+    <tuscany:binding.corba host="localhost" port="5060" name="ScenarioOne/TuscanyGenerated"/>
+
+</service>
+
+
+

2. Corbaname URI.

+ +

Example reference declaration:

+
+
<reference name="scenarioOne">
+
+    <tuscany:binding.corba uri="corbaname::localhost:5060#NamedWithURI"/>
+
+</reference>
+
+
+

+ +

Providing interface

+ +

For both service and reference side you can use one of two types of Java interface:

+ +

1. Generated by idlj compiler from *.idl file.

+ +

2. Created by user according to rules for Java to CORBA mapping.

+ +

In both cases interfaces are almost the same. Difference is that generated interfaces extends/implements CORBA types which are ignored by binding. Mapping rules are available under: Java2IDL, IDL2Java. Samples of CORBA bindings can be found in sca/itest/corba module.

+
Overloading, case collisions
When using Tuscany service/reference binding to communicate with traditional CORBA objects: + +

1. Don't overload method names in Java interface.

+ +

2. Don't create methods with names which differs only by case, ie. you shouldn't declare both methods: caseSensitive() and CaseSensitive().

+ +

You can ignore above rules if you are using Tuscany CORBA binding  to communicate with other Tuscany CORBA binding. Those constraints results from differences between IDL and Java. More details can be found in Method/operation mapping rules section.

+
Declaring exceptions
Exceptions declared by user should be named to match remote exception ID. + +

Example: if in reference binding remote object throws exception with ID "IDL:org/apache/tuscany/sca/test/corba/generated/WrongColor:1.0" then you should declare exception class named "org.apache.tuscany.sca.test.corba.generated.WrongColor".

+ +

The same in service bindings. SCA component exception will be thrown with ID created from Java name.

+

+ +

CORBA arrays and unions mapping

+ +

CORBA arrays and unions cannot be directly mapped so additional metadata should be used.

+ +

1. Arrays mapping

+ +

To declare CORBA array you should declare Java array and annotate it by org.apache.tuscany.sca.binding.corba.meta.CorbaArray annotation.

+ +

Annotation org.apache.tuscany.sca.binding.corba.meta.CorbaArray has one default attribute (array of integers) which declares lengths of following array dimensions. Objects you can annotate are:

+
    +
  • binding interface methods arguments
  • +
  • binding interface methods, which will refer to return type
  • +
  • structure fields
  • +
+ + +

Example:

+
+
import org.apache.tuscany.sca.binding.corba.meta.CorbaArray;
+
+public interface SampleInterface {
+
+    @CorbaArray( {2, 2}) // this annotation makes return array to be CORBA array
+    public String[][] passStringArray(@CorbaArray( {2, 2})String[][] arg); // this annotation makes mehods argument to be CORBA array
+
+}
+
+
+

 You can also annotate fields in CORBA structures.

+ +

Example:

+
+
import org.apache.tuscany.sca.binding.corba.meta.CorbaArray;
+
+public final class SampleStruct {
+
+    @CorbaArray( {2, 2}) // following field is two dimensional CORBA array, which has 2 elements in both first and second dimension
+    public String[][] stringArray;
+
+    public SampleStruct() {
+
+    }
+
+    public SampleStruct(String[][] stringArray) {
+        this.stringArray = stringArray;
+    }
+
+}
+
+
+

2. Unions mapping

+ +

To declare CORBA union you should create final Java class which contains:

+
    +
  • private field for every union option
  • +
  • private field of int, which will be discriminator
  • +
+ + +

Union options as well as discriminator should be annotated with org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement, which has two attributes:

+
    +
  • CorbaUnionElementType type(), which can take following values: +
      +
    • CorbaUnionElementType.option for member, additional optionNumber attribute is required
    • +
    • CorbaUnionElementType.defaultOption for default union member
    • +
    • CorbaUnionElementType.discriminator for discriminator field
    • +
    +
  • +
  • int optionNumber() - can be used only with CorbaUnionElementType.option
  • +
+ + +

Example:

+ +

Following IDL declaration:

+
+
union SampleUnion switch (long) {
+    case 1: long x;
+    case 2: float y;
+    default: string z;
+};
+
+
+

is equal to Tuscany CORBA binding declaration:

+
+
import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
+
+public final class SampleUnion {
+
+    @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 1)
+    // this is union member, id = 1
+    private int x;
+
+    @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 2)
+    // this is union member, id = 2
+    private float y;
+
+    @CorbaUnionElement(type = CorbaUnionElementType.defaultOption)
+    // this is default union member
+    private String z;
+
+    @CorbaUnionElement(type = CorbaUnionElementType.discriminator)
+    private int discriminator;
+
+    public int getX() {
+        return x;
+    }
+
+    public void setX(int x) {
+        discriminator = 1;
+        this.x = x;
+    }
+
+    public float getY() {
+        return y;
+    }
+
+    public void setY(float y) {
+        discriminator = 2;
+        this.y = y;
+    }
+
+    public float getZ() {
+        return z;
+    }
+
+    public void setZ(float z) {
+        discriminator = -1;
+        this.z = z;
+    }
+
+}
+
+
+

 

+ +

Method/operation mapping rules

+ +

IDL rules are different than rules in Java programming language - Java method names can't be always directly mapped to CORBA operations. Following table shows used mapping rules:

+
+ + + + + + + + + + + + + + + + + + + + + +
Mapping type
Description 
Examples: Java method - translated CORBA operation
1. Getters and setters
If user declared valid pair of getter and setter then those methods wouldbe translated to operations which are responsible for getting/setting objects attribute.
1. getName() - _get_name
+2. setName(String newName) - _set_name
+3. isName() - _get_name 
2. Overloaded names
CORBA does not support overloading method names - Java does.. Some mapping rules were applied to allow using overloaded names in Java interfaces using CORBA binding. Final operation name is created by taking method name and appending it by CORBA parameters type names separated by '_' chars.
1. overloadedMethod() - overloadedMethod__
+2. overloadedMethod(String arg1) - overloadedMethod__CORBA_WStringValue
+3. overloadedMethod(String arg1, int arg2) - overloadedMethod_CORBA_WStringValue_long
3. Names with case collisions CORBA is not case sensitive - Java is. CORBA ie. doesn't distinguish methods caseDifferent() and CaseDifferent(), so some mapping rules are fixing it. Final operation name is created by taking method name and appending it by indexes of characters which are capitals. 1. caseDifferent() - caseDifferent_4
+2. CaseDifferent() - CaseDifferent_0_4
+
+ +

+ +

Usage of additional "id" attribute in CORBA service bindings

+ +

User can also provide id attribute for service binding. It's not required, but helpfull if we want to publish service which will be consumed by some idlj generated code. This generated code contains *Helper classes with narrow(...) methods. Narrow(...) method compares obtained CORBA reference ID to some local (which was generated). CORBA service binding provide this ID automatically basing on user provided Java interface name. Providing id attribute is the only way to provide custom identifier.

+ +

Example of using "id" attribute:

+
+
<service name="ScenarionOneServiceGenerated" promote="ScenarionOneServiceGenerated">
+
+    <interface.java interface="org.apache.tuscany.sca.test.corba.generated.ScenarioOneOperations"/>
+
+    <tuscany:binding.corba host="localhost" port="5060" name="ScenarioOneTuscanyGenerated"
+                           id="IDL:org/apache/tuscany/sca/test/corba/generated/ScenarioOne:1.0"/>
+
+</service>
+
+
+

+ +

Host environment types

+ +

CORBA binding supports two hosting environments.

+ +

host-corba-jse

+ +

It is the standalone hosting environment where various ORBs could be used. Note that you have to provide name service by yourself and configure service/reference to point onto desired ORB.
+ Usage: add tuscany-host-jse-<version>.jar module to your class path.

+ +

host-corba-jse-tns

+ +

  Not available in official Apache Tuscany release

+ + +

This hosting environment extends host-corba-jse. For every configured service CORBA binding which points to localhost Transient Name Service will be created and name servers for bindings using the same port will be shared.
+ Usage: add tuscany-host-jse-tns-<version>.jar module to your class path.

+ +

host-corba-jee

+ +

  Not available in official Apache Tuscany release

+ + +

It is the JEE application server environment. In this case ORB is obtained from JNDI by java:comp/ORB name and you don't need to provide name service. Also host and port (or their equivalent contained in corbaname URI) parameters are ignored.
+ Usage: add tuscany-host-jee-<version>.jar module to your class path.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindingejb.html b/site/trunk/site-publish/sca-java-bindingejb.html new file mode 100644 index 0000000000..322d0382c6 --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindingejb.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.ejb + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java binding.ejb + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
+ + + + + + + + + + + +
Resources
+
+ +

<binding.ejb>

+ +

Tuscany provides the reference-side support for the SCA EJB Session Bean Binding V1.00. It allows SCA components to access existing stateless session beans.

+ +

The XML configutation

+ +

To access a stateless session, the uri attribute of the <binding.ejb> element needs to be be configured with a JNDI name.

+ +
+
+<binding.ejb uri="corbaname:iiop:1.2@localhost:1050#BrokerServiceBean" /> 
+
+
+ +

Depending on which enviroment the SCA components are hosted, various styles of the JNDI names can be supported:

+
    +
  • relative JNDI
  • +
  • java:comp/env/<ejb-ref>
  • +
  • corbaname JNDI
  • +
+ + +

Some examples

+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" name="account">
+    <component name="AccountDataServiceComponent">
+        <implementation.java class="bigbank.accountdata.AccountDataServiceImpl" /> 
+        <reference name="brokerService">
+            <binding.ejb uri="corbaname:iiop:1.2@localhost:1050#BrokerServiceBean" /> 
+        </reference>
+  </component>
+</composite>
+
+
+ +

The open-ejb deployment descriptor

+
+
+<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
+    ...
+    <enterprise-beans>
+        <session>
+            <ejb-name>BrokerServiceBean</ejb-name>
+            <jndi-name>BrokerServiceBean</jndi-name>
+            <tss-link>IdentityTokenNoSecurity</tss-link>
+        </session>    
+    </enterprise-beans>
+    ...
+</openejb-jar>
+
+
+ +
Integration with Geronimo 2.0.1
Make sure org.apache.geronimo.configs/openejb-corba-deployer/2.0-SNAPSHOT/car is started.
+Look under System Modules in Admin Console. This module is required to support CORBA Naming.
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindingerlang.html b/site/trunk/site-publish/sca-java-bindingerlang.html new file mode 100644 index 0000000000..9fa720421e --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindingerlang.html @@ -0,0 +1,494 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.erlang + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java binding.erlang + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<binding.erlang>

+ +

The Tuscany Java SCA runtime supports Erlang using the <binding.erlang> SCDL extension. New Erlang based service can be provided using a <binding.erlang> element within a SCA <service>, existing Erlang object can be accessed using a <binding.erlang> element within a SCA <reference>.

+ + + +

+ +

Using Erlang binding

+ +

Basically SCA services can be exposed in two ways:

+
    +
  • by Erlang RPC mechanism. In this case SCA component would act as Erlang module containing functions, based on components operations names.
  • +
  • by RPC realised using Erlang messaging. In this case for every operation named Erlang message box would be created - name of the box will correspond to operation name. After receiving message from Erlang node appropriate components operation will be invoked and result would be sent back to sender.
  • +
+ + +

Similarly, SCA references can access Erlang modules in two ways:

+
    +
  • using RPC mechanism. In this case SCA reference would be mapped to remote Erlang functions module, each operation would correspond to different function, basing on its name.
  • +
  • by RPC realised using Erlang messaging. In this case invoking operation on reference would cause sending Erlang message to named Erlang process - name would be the same as operation name. If operation has return value then return message will be expected.
  • +
+ + +

+ +

Requirements

+ +

Erlang binding is available since Apache Tuscany SCA Java 1.6, source distribution only. To use Erlang binding module you need to build Apache Tuscany by your own, please follow instructions contained in BUILDING file which can be found in source distribution root directory.

+ +

Erlang nodes need to communicate with Erlang Port Mapper Daemon (EPMD) which should be run locally. To run JUnit tests and samples for Tuscany Erlang modules you need to have epmd binary in your system path - epmd comes with Erlang/OTP distribution. See http://erlang.org for downloads.

+ +

Erlang samples and JUnit tests inside Tuscany spawns epmd process automatically, but if you are creating your own solution using Erlang binding you need to provide running epmd process.

+ +

+ +

Binding configuration

+ +

Binding configuration can take several attributes:

+
    +
  • node - name of the local (service side) or remote (reference side) Erlang node. Tuscany creates separate Erlang node for each service binding, so remember to provide unique node name for every service binding.
  • +
  • module - specifies name of the module mapped to SCA component/reference. When using this attribute you can't use mbox="true" attribute.
  • +
  • mbox - specifies whether binding would be realised using messaging based RPC ("true") or built-in Erlang RPC ("false"). Default (no value specified) is "false". When using mbox="true" you can't use module attribute.
  • +
  • cookie - (optional) authentication token. Communicating nodes should have the same cookies. You can also provide cookie in .erlang.cookie file in users home directory (it's originally supported by Jinterface).
  • +
  • timeout - (optional) specifies timeout (in milliseconds) for inactive connections. Timeouts will be disabled if attribute value is 0 or not provided.
  • +
  • serviceThreadPool - (optional) for service side bindings only. Specifies maximum number of threads which will be handling clients. Default value is 20.
  • +
+ + +
Service configuration samples
+ +

Sample based on RPC

+ +

Following sample exposes component as Erlang module named "HelloModule". Modules functions would be the same as in service interface - helloworld.HelloWorld. Node which will host this module will be named "HelloNodeModule".

+
+
+<service name="HelloWorldService">
+
+    <interface.java interface="helloworld.HelloWorld"/>
+
+    <tuscany:binding.erlang node="HelloNodeModule" module="HelloModule"/>
+
+</service>
+
+
+

Sample based on messaging

+ +

Following sample exposes component as several message boxes - each box will correspond to each component operation. Node which will host those message boxes will be named "HelloNodeMbox".
+Additional attributes are used:

+
    +
  • cookie for authentication purposes - "secret string"
  • +
  • timeout (1 second) for disconnecting hanging clients
  • +
  • number of threads that handles clients (serviceThreadPool attribute) is set to 10.
  • +
+ + +
+
+<service name="HelloWorldService">
+
+    <interface.java interface="helloworld.HelloWorld"/>
+
+    <tuscany:binding.erlang node="HelloNodeMbox" mbox="true" cookie="secret string" timeout="1000" serviceThreadPool="10"/>
+
+</service>
+
+
+ +
Reference configuration samples
+ +

Sample based on RPC

+ +

Following sample uses remote Erlang module as reference. Configuration points to module named "HelloModule", hosted on "HelloNodeModule".
+Additional attributes are used:

+
    +
  • cookie for authentication purposes - "secret string"
  • +
  • timeout (1 second) for quitting from hanging server
  • +
+ + +
+
+<reference name="helloWorldReference">
+
+    <tuscany:binding.erlang node="HelloNodeModule" module="HelloModule" cookie="secret string" timeout="1000"/>
+
+</reference>
+
+
+

Sample based on messaging

+ +

Following sample uses remote Erlang message boxes in RPC style. Message boxes with names the same as reference operations are available on "HelloNodeMbox".

+
+
+<reference name="helloWorldReference">
+
+    <tuscany:binding.erlang node="HelloNodeMbox" mbox="true"/>
+
+</reference>
+
+
+

+ +

Declaring interface

+ +

Following table describes mapping used between Java and Erlang types.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Java type Erlang type
byte, short, char, int, long number - Erlang does not distinguish numbers size
float, double Double - Erlang does not distinguish floating numbers size
String Array of characters
String annotated with @ErlangAtom (package org.apache.tuscany.sca.binding.erlang.meta) Atom
array List
User defined class with pubic no argument constructor and public fields of type from this table. Tuple
+
+ + +
Atoms sample
+ +
+
+public interface SomeInterface {
+
+  // Returns user defined class - tuple
+  TupleClass operation1();
+
+  // Returns list of characters and takes list of characters as an argument
+  String operation2(String argument);
+
+  // Returns atom and takes atom as an argument
+  @ErlangAtom
+  String operation3(@ErlangAtom String argument);
+
+  // Returns list of atoms
+  @ErlangAtom
+  String[] operation4();
+
+}
+
+
+// Java class represents tuple which contains atom and list of characters.
+public class TupleClass {
+
+  @EralngAtom
+  public String atom;
+
+  public String notAtom;
+
+}
+
+
+ +
Tuples sample
+ +

Following interface:

+
+
+public class TupleClass1 {
+
+  public long field1;
+  public TupleClass2 field2;
+
+}
+
+public class TupleClass2 {
+
+  public long field1;
+  public double field2;
+
+}
+
+
+

will correspond to live tuple structure (using Erlang notation):

+
+
+{10, {10, 0.9}}
+
+
+ +

+ +

Details of message based RPC communication

+ +

RPC based on messaging uses messages for requests and responses.

+
    +
  • For service bindings incoming messages should contain SCA operation arguments, formed in tuple. Operation result will be send in return message.
  • +
  • For reference bindings Tuscany creates message with content depending on attributes passed to reference operation. If reference operation has return value defined then Tuscany will wait for reply from remote process.
  • +
+ + +

In Erlang messaging it's common technique for sender to provide it's PID at the beginning - it allows recipient to respond. In Tuscany every Erlang message is a tuple which contains operation arguments. This tuple is wrapped with tuple with PID.

+ +

Overloading operations

+ +

Overloading operations allows user to send message with different structure. Ie., in reference binding we could declare interface:

+
+
+public interface SomeInterface {
+
+  void someMbox(String argument);
+
+  void someMbox(String arg1, String arg2);
+
+}
+
+
+

Invoking first someMbox operation would cause sending message addressed to someMbox message box. This message would contain one string value. Invoking second someMbox operation would cause sending message addressed also to someMbox message box, but message content would differ - now it would contain two string values.

+ +

Service side example

+ +

For service defined by following interface:

+
+
+public String operation(long arg1, @ErlangTuple arg2);
+
+
+

expected Erlang message is (sample using Erlang notation):

+
+
+{SomePid, {10, AtomValue}}
+
+
+

After receiving such formed message Tuscany is able to process it correctly, invoke SCA operation and send reply to PID provided as first element of outer tuple.

+ +

Reference side example

+ +

For reference interface defined as:

+
+
+public String operation(long arg1, @ErlangTuple String arg2);
+
+
+

executing it with following arguments:

+
+
+obj.operation(10, "AtomValue");
+
+
+

will make Tuscany to convert input arguments to Erlang tuple (using Erlang notation):

+
+
+{10, AtomValue}
+
+
+

and wrap with tuple containing PID as follows (using Erlang notation):

+
+
+{SomePid, {10, AtomValue}}
+
+
+

In this example Erlang message box would receive message and know PID for reply.

+ +

+ +

Exceptions

+ +

While communicating with Erlang nodes (reference bindings) several error can be raised:

+
    +
  • Function on remote Erlang doesn't exist
  • +
  • Connection problems
  • +
  • Others and unexpected errors
  • +
+ + +

In case of error two things can happen:

+
    +
  • Exception will be thrown, only for operations which declares exceptions
  • +
  • Problem will be logged, only for operations with no exception declared
  • +
+ + +

+ +

Samples

+ +

Samples can be found under sca/java/samples/:

+
    +
  • helloworld-service-erlang
  • +
  • helloworld-reference-erlang
  • +
+ + +

Samples use service and reference Erlang bindings realised via Erlang RPC. If you want to play with Erlang binding it's good place to start. Maybe you would like to experiment by changing communication model to message based?
+For running instructions please read README files. You should also get familiar with requirements.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/high_level_design.jpg b/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/high_level_design.jpg new file mode 100644 index 0000000000..500725ebae Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/high_level_design.jpg differ diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/high_level_design.jpg.jpeg b/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/high_level_design.jpg.jpeg new file mode 100644 index 0000000000..3fb20747fd Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/high_level_design.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/scenario.jpg b/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/scenario.jpg new file mode 100644 index 0000000000..4bda5e8806 Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/scenario.jpg differ diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/scenario.jpg.jpeg b/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/scenario.jpg.jpeg new file mode 100644 index 0000000000..57285826b3 Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.data/scenario.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.html b/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.html new file mode 100644 index 0000000000..c612ee198b --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindinghttp-security-policy-section.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.http security policy section + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding.http security policy section + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Security Policy support in HTTP and Web 2.0 Bindings

+ +
work in progress
+ +

Scenarios

+ +
    +
  • A Web 2.0 application requires that a user get authenticated before it can access the application.
  • +
  • A Web 2.0 application requires that all communication between client/server be done using SSL.
  • +
  • A given service, exposed using a web 2.0 binding requires user authentication.
  • +
  • A given operation, exposed using a web 2.0 binding requires user authentication.
  • +
+ + +

Policy Interceptor

+ +

The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.
+The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.

+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/high_level_design.jpg b/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/high_level_design.jpg new file mode 100644 index 0000000000..500725ebae Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/high_level_design.jpg differ diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/high_level_design.jpg.jpeg b/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/high_level_design.jpg.jpeg new file mode 100644 index 0000000000..3fb20747fd Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/high_level_design.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/scenario.jpg b/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/scenario.jpg new file mode 100644 index 0000000000..4bda5e8806 Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/scenario.jpg differ diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/scenario.jpg.jpeg b/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/scenario.jpg.jpeg new file mode 100644 index 0000000000..57285826b3 Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindinghttp-security-policy.data/scenario.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security-policy.html b/site/trunk/site-publish/sca-java-bindinghttp-security-policy.html new file mode 100644 index 0000000000..795ca0da56 --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindinghttp-security-policy.html @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SCA Java binding.http security policy : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding.http security policy + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ + + +
+ + + + + + +
Resources
+
+ +

Security Policy support in HTTP and Web 2.0 Bindings

+ +
work in progress
+ +

Scenarios

+ +

+ +
    +
  • A Web 2.0 application requires that a user get authenticated before it can access the application.
  • +
  • A Web 2.0 application requires that all communication between client/server be done using SSL.
  • +
  • A given service, exposed using a web 2.0 binding requires user authentication.
  • +
  • A given operation, exposed using a web 2.0 binding requires user authentication.
  • +
+ + +

Policy Interceptor

+ +

The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.
+The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.

+ +

+
+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-bindinghttp-security.html b/site/trunk/site-publish/sca-java-bindinghttp-security.html new file mode 100644 index 0000000000..d61636d8af --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindinghttp-security.html @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SCA Java binding.http Security : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding.http Security + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ + + +
+ + + + + + +
Resources
+
+ +

Policy Security support in HTTP and Web 2.0 Bindings

+ +

Scenarios

+ +
    +
  • A Web 2.0 application requires that a user get authenticated before it can access the application.
  • +
  • A Web 2.0 application requires that all communication between client/server be done using SSL.
  • +
  • A given service, exposed using a web 2.0 binding requires user authentication.
  • +
  • A given operation, exposed using a web 2.0 binding requires user authentication.
  • +
+ + +

Policy Interceptor

+ +

The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.

+ + +
+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-bindinghttp.html b/site/trunk/site-publish/sca-java-bindinghttp.html new file mode 100644 index 0000000000..62fcef17d2 --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindinghttp.html @@ -0,0 +1,338 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.http + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding.http + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<binding.http> Introduction

+ +

The Tuscany Java SCA runtime supports Hyper Text Transfer Protocol (HTTP) using the <binding.http> extension. Tuscany can communicate with services that provide or consume business data objects via the well known actions of HTTP, for example POST, GET, PUT, and DELETE. In HTTP interactions between a client and a server takes place as a series of requests and responses. Information is comunicated by reads and rights over server socket ports. HTTP actions, also known as verbs, are communicated between a client and a server in the requests and responses. Each request and response consists of a header and a body. Typically the header contains the request action name, a URI indicating the location of object of the object of the action, and a number property name and value pairs containing other meta information about the transaction (e.g. body length, modification dates, MIME type, etc.). The body contains the subject of the action, whether it be a text or binary encoding of the data, an error message, or a serialized object.

+ +

More information on the HTTP protocol is located at:

+ + + +

Some of the advanced function described here is included in the Tuscany 1.3.2 and 1.4 releases. The complete timeline of available and future plans is given in the Tuscany Web 2.0 Roadmap. Users should also be aware of the Atom binding and RSS binding which sit on top of the HTTP binding, but have additional features and data types associated with the actions.

+ +

A Tuscany protocol binding such as the HTTP binding, is a way to fit a common protocol into the Tuscany abstraction and way of doing things. Each binding identifies itself to the Tuscany runtime and states under what conditions it is available. The Tuscany runtime uses the binding to translate invocations and data from the Tuscany world into the world of the protocol and back. So in the case of the HTTP binding, Tuscany uses the HTTP request and response mechanism to share business data between service components.

+ + +

Using the Tuscany HTTP binding

+ +

The primary use of the HTTP binding is to share resources and services over HTTP over the web in a distributed fashion. Resources are items that have a resource implementation such as web content. Services are items that have data types and a defined business interfaces such as shared collections. Examples of shared collections includes shopping carts, telephone directories, insurance forms, and blog sites. These collections of items can be added, retrieved, updated, and deleted using the 4 basic actions of the HTTP protocol:

+
    +
  • POST (create or add)
  • +
  • GET (retreive or query)
  • +
  • PUT (update)
  • +
  • DELETE (destroy or remove
  • +
+ + +

The simplest way to use the HTTP binding is to declare a resource that can be shared over the web via HTTP and provide an HTTP address where one can access the resource. This resource is declared in an SCA composite file which describes the SCA domain.

+
+
+    <component name="ResourceServiceComponent">
+        <tuscany:implementation.resource location="content"/>
+    	<service name="Resource">
+    		<tuscany:binding.http uri="http://localhost:8085/webcontent"/>
+    	</service>
+    </component>
+
+
+

No further implementation is needed with a resource. It is served on the web like any other static web content.

+ +

The HTTP binding can also declare a business service that can be shared over the web and provide an HTTP address where one can access the service. This resource is declared in an SCA composite file which describes the SCA domain.

+
+
+    <component name="HTTPBindingComponent">
+        <implementation.java class="org.apache.tuscany.sca.binding.http.TestBindingImpl"/>
+    	<service name="TestBindingImpl">
+    		<tuscany:binding.http uri="http://localhost:8085/httpbinding"/>
+    	</service>
+    </component>
+
+
+ +

Example HTTP Servlet and Service Implementations

+ +

A service that uses the HTTP binding usually implements the javax.servlet.Servlet interface. This interface declares the basic access methods mentioned in the J2EE specification: init, destroy, service, getServletInfo, etc. The Tuscany runtime ensures that the proper method is invoked whenever a service does one of the HTTP actions. For example here is a TestService implemented in the package org.apache.tuscany.sca.binding.http;

+
+
+@Service(Servlet.class)
+public class TestServiceImpl implements Servlet {
+
+    public void init(ServletConfig config) throws ServletException {
+    }
+
+    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
+        response.getOutputStream().print("<html><body><p>Hello from Tuscany HTTP service</body></html>");
+    }
+
+}
+
+
+ +

Another way of implementing an HTTP service is to use a collection interface that matches the actions of the HTTP protocol. In this case, the methods must be named post, get, put, and delete. Tuscany ensures that the proper method is invoked via the request and response protocol of HTTP:

+
+
+public class TestGetImpl {
+    
+    public InputStream get(String id) {
+        return new ByteArrayInputStream(("<html><body><p>This is the service GET method, item=" + id + "</body></html>").getBytes());
+
+    }
+}
+
+
+ +

So using the common verbs of HTTP and Java object serialization, one can implement services and run them anywhere the HTTP protocol is implemented. The service developer or implementer simply creates methods for post, get, put, and delete, and a business collection such as a shopping cart, telephone directory, insurance form, or blog sites can be created. See the Tuscany module binding-http-runtime for complete examples.

+ +

Unlike the Atom or RSS bindings, which have defined data types which encapsulate the business objects, the HTTP binding uses Java object serialization for passing business object data back and forth. Thus it is up to the developer or implementer to deserialize the data and reconstitute a business object.

+ +

Advanced Features of the Tuscany HTTP Binding

+ +

HTTP Conditional Actions and Caching using ETags and Last-Modified

+ +

The HTTP specification provides a set of methods for HTTP clients and servers to interact. These methods form the foundation of the World Wide Web. Tuscany implements many of these methods a binding interface to a collection. The main methods are:

+ +
    +
  • GET - retrieves an item from a collection
  • +
  • POST - creates or adds an item to a collection
  • +
  • PUT - updates or replaces an item in a collection
  • +
  • DELETE - removes an item in a a collection
  • +
+ + +

The HTTP specification (HTTP 1.1 Chapter 13 - Caching) also provides a mechanism by which these methods may be executed conditionally. To perform conditional methods, an HTTP client puts 3 items in the HTTP request header:

+ +
    +
  • ETag - entity tag, a unique identifier to an item in a collection. Normally created and returned by the server when creating (POST) a new item.
  • +
  • LastModified - an updated field. Normally a string containing a date and time of the last modification of the item.
  • +
  • Predicate - a logical test (e.g. IfModified, IfUnmodified) to use with the ETag and LastModified to determine whether to act.
  • +
+ + +

The complete list of predicates is given in the HTTP specification.

+ +

The most common use of conditional methods is to prevent two requests to the server instead of one conditional request. For example, a common scenario is to check if an item has been modified, if not changed update it with a new version, if changed do not update it. With a conditional PUT method (using the IfUnmodifed predicate and a LastModified date), this can be done in one action. Another common use is to prevent multiple GETs of an item to ensure we have a valid copy. Rather than doing a second request of a large item, one can do a conditional GET request (using an IfModified predicate and a LastModified date), and avoid the second request if our object is still valid. The server responds with either a normal response body, or status code 304 (Not Modified), or status code 412 (precondition failed).

+ +

Tuscany implements the logic to move these caching items to and from the HTTP request and response headers, and deliver them to the collection implementation. The items are delivered to a user implementation via a serializable object called CacheContext. This object contains the value of the ETag, the LastModified value, and any predicates. It is up to the implementer of a collection to provide the correct server logic to act on these predicates. The CacheContext class is found in found in the Tuscany module package org.apache.tuscany.sca.binding.http.

+ +

To implement conditional actions on your service, the developer or implementer implements any of the condional HTTP actions: conditionalPost, conditionalGet, conditionalPut, or conditionalDelete. Tuscany automatically routes a request with proper request header fields (ETag, LastModified, and predicates) to the proper collection method.

+ +

For example, the TestBindingCacheImpl class in package org.apache.tuscany.sca.binding.http implements a server collection which pays attention to conditional methods. Notice that this collection implements conditionalGet, conditionalPut, conditionalPost, and conditionalDelete methods as well as get, put, post, delete. The server collection can look at the CacheContext obect to determine whether an item or a status code should be returned. In this example code, the conditionalGet checked the If-Modified predicate and determines whether the item is not modified and if so, throws a NotModifiedException.

+
+
+	public InputStream conditionalGet(String id, HTTPCacheContext cacheContext)
+			throws NotModifiedException, PreconditionFailedException {
+
+		if (cacheContext != null) {
+			if (cacheContext.ifModifiedSince) {
+				if ((id.equals("1"))
+						&& (0 > cacheContext.lastModifiedDate
+								.compareTo(new Date())))
+					throw new NotModifiedException("item 1 was modified on "
+							+ new Date());
+			}
+                ...
+        ...
+
+
+ +

For a full example of all conditional methods and many combinations of predicates, one can look to the module http-binding unit tests to understand how these conditional request work. The HTTPBindingCacheTestCase contains 36 tests of all 4 HTTP conditonal methods. Various predicates are tested with various ETags and LastModified fields. The fields are tested in both the positive and negative cases.

+ +

Here is a complete list of the tests:

+
    +
  • testGet() - tests normal GET method of collection, expects item
  • +
  • testConditionalGetIfModifiedNegative() - tests not modified GET, expects item
  • +
  • testConditionalGetIfModifiedPositive() - tests modified GET, expect code 304
  • +
  • testConditionalGetIfUnmodifiedNegative() - tests unmodifed GET, expects item
  • +
  • testConditionalGetIfUnmodifiedPositive() - tests modified GET, expects code 412
  • +
  • testConditionalGetIfMatchNegative() - tests matching GET, expects code 412
  • +
  • testConditionalGetIfMatchPositive() - tests matching GET, expects item
  • +
  • testConditionalGetIfNoneMatchNegative - tests unmatching GET, expects item
  • +
  • testConditionalGetIfNoneMatchPositive() - tests unmatching GET, expects code 412
  • +
+ + +

Similarly, there are 9 tests each for DELETE, POST, and PUT, making a total of 36 test cases.

+ +

Differences Between HTTP Binding Caching and Atom Binding Caching in Tuscany

+ +

A similar sort of conditional posting is implemented in the Atom Binding. The difference is that the HTTP binding requires an implementer to provide conditional methods. The Atom binding caching uses the Abdera Atom model objects to automatically derive an ETag and a LastModified tags. In the Atom model, the Entry or Feed ID is used to make an item ETag field. The Atom Entry or Feed updated field is used to make an item LastModified field.

+ +

Use the HTTP binding caching when you are not using Atom Entries and Feeds as your business objects. However, the more flexible HTTP binding caching requires you to implement special conditional methods. Use the Atom binding when you can model your business data in terms of Atom Entries and Feeds. The more constrictive Atom binding caching will derive caching tags from your data model fields.

+ +

Security Policy support in HTTP and Web 2.0 Bindings

+ +
work in progress
+ +

Scenarios

+ +
    +
  • A Web 2.0 application requires that a user get authenticated before it can access the application.
  • +
  • A Web 2.0 application requires that all communication between client/server be done using SSL.
  • +
  • A given service, exposed using a web 2.0 binding requires user authentication.
  • +
  • A given operation, exposed using a web 2.0 binding requires user authentication.
  • +
+ + +

Policy Interceptor

+ +

The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.
+The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.

+ +

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png b/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png new file mode 100644 index 0000000000..05e62f3b8c Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png differ diff --git a/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg b/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg new file mode 100644 index 0000000000..e3339143d8 Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-service.png b/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-service.png new file mode 100644 index 0000000000..7db2eb03f5 Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-service.png differ diff --git a/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg b/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg new file mode 100644 index 0000000000..10bb02a586 Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-bindingjms.data/jmstextxml-invocation-chain.png b/site/trunk/site-publish/sca-java-bindingjms.data/jmstextxml-invocation-chain.png new file mode 100644 index 0000000000..5dc161000d Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindingjms.data/jmstextxml-invocation-chain.png differ diff --git a/site/trunk/site-publish/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg b/site/trunk/site-publish/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg new file mode 100644 index 0000000000..4c5282c1d3 Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-bindingjms.data/providers.png b/site/trunk/site-publish/sca-java-bindingjms.data/providers.png new file mode 100644 index 0000000000..737772334e Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindingjms.data/providers.png differ diff --git a/site/trunk/site-publish/sca-java-bindingjms.data/providers.png.jpeg b/site/trunk/site-publish/sca-java-bindingjms.data/providers.png.jpeg new file mode 100644 index 0000000000..5fb006a80a Binary files /dev/null and b/site/trunk/site-publish/sca-java-bindingjms.data/providers.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-bindingjms.html b/site/trunk/site-publish/sca-java-bindingjms.html new file mode 100644 index 0000000000..9dc4e91fae --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindingjms.html @@ -0,0 +1,769 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.jms + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java binding.jms + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<binding.jms>

+ +

The Tuscany Java SCA runtime supports the Java Messaging Service using the <binding.jms> SCDL extension. New JMS based service endpoints can be provided using a <binding.jms> element within a SCA <service>, existing JMS queues can be accessed using a <binding.jms> element within a SCA <reference>.

+ +

The JMS binding is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published specifications document.

+ +

Using the JMS binding

+ +

The simplest way to use the JMS binding is to use the URI syntax to configure the binding, for example:

+
+
<binding.jms uri="jms:RequestQueue"/>
+
+

This tells the binding to use a JMS destination named "RequestQueue", with all the other configuration options using default values.

+ +

By default Tuscany will use a JMS connection factory named 'ConnectionFactory', this can be changed by using a query parameter in the URI, for example, to use a connection factory named 'myCF' can be done as follows:

+
+
<binding.jms uri="jms:RequestQueue?connectionFactoryName=myCF"/>
+
+ +

When using a SCA reference for RPC style requests and no response destination is defined in the SCDL then a temporary replyTo queue will automatically be created and used.

+ +

When using the JMS binding with SCA services the syntax can be simplified even further by letting the destination name default to the service name. For example, the following SCDL snippet creates a JMS service listening on a JMS destination named "MyService":

+
+
+<service name="MyService">
+   <binding.jms />
+</service>
+
+
+ +

Validation in the JMS Binding

+ +

Tuscany performs two types of validation of the JMS Binding specified in a composite file.

+ +
    +
  1. All XML is validated according to the schema to be valid XML. Elements are validated to be of the correct number
    +and order. URIs are validated to be of the correct form. Required attributes and elements are checked.
  2. +
  3. The model data for the JMS binding is validated. These are semantic issues such as the connection factory should not contradict destination type, connection factory and activation specification are mutually exclusive, and response connection must
    +either be a name attribute or a response element.
  4. +
+ + +

Validation rules are taken from the binding schema and the OSOA and OASIS specs:

+ + + +

Invalid JMS bindings usually result in a JMSBindingException with error message and specific context of the error. See the JMSBindingProcessor for a complete list of validation rules.

+ +

Some Examples

+ +

HelloWorld

+ +

The helloworld-jms sample demonstrates basic RPC style operations over JMS. The sample has one component exposing a JMS service on a queue name 'HelloWorldService' and another component which invokes the service by sending JMS messages to that queue. A temporary destination is used for the response messages. The .composite file for this is shown below, see the helloworld sample README for full details.

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           targetNamespace="http://sample"
+           xmlns:sample="http://sample"
+           name="HelloWorld">
+
+    <component name="HelloWorldClient">
+        <implementation.java class="helloworld.HelloWorldClient"/>
+        <reference name="helloWorldRef">
+            <binding.jms uri="jms:HelloWorldService"/>
+        </reference>
+    </component>
+
+    <component name="HelloWorldServiceComponent">
+        <implementation.java class="helloworld.HelloWorldServiceImpl" />
+	<service name="HelloWorldService">
+            <binding.jms />
+        </service>
+    </component>
+
+</composite>
+
+
+ +

Operation Selection

+ +

Operation selection extensions allow you to choose how the JMS bindings determines which service operation to call based on the incoming MS message.

+ +
+ + + + + + + + + + + + + +
operatiion selector description
<opertionSelector.jmsdefault/> The default operations selector as described in the JMS Binding Specification 1.0; +
    +
  • If there is only one operation on the service interface then this operation is chosen.
  • +
  • Else If the property scaOperationName appears in the incoming JMS message then its value determines the service operation
  • +
  • Else the operation is assumed to be called onMessage
  • +
+
<opertionSelector.jmsUserProp propertyName="somePropertyName"/> The named property, in this case somePropertyName, on the incoming JMS message holds name of the service operation that will be called
+
+ + +

While you can specify the default operation selector there is no need to as in lieu of other operation selectors being specified this one it assumed to be in force. You can add new operation selectors by adding the appropriate model objects, processors and providers.

+ +

Following operation selection the actual operation that is called may be further affected by operationProperties configuration.

+ +

Wire Formats

+ +

Wire format extensions allow you to choose how message data is expected to appear inside the JMS message as it flows across the wire.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
wire format description
<wireFormat.jmsdefault sendFormat="text or bytes"/> The default wire format as described in the JMS Binding Specification 1.0; +
    +
  • If the service operation has a single parameter of type javax.jms.Message then the incoming JMS message is passed in as is
  • +
  • Else the incoming message is a text message containing XML (we have added the sendFormat attribute to control whether the message type is actially text or bytes) +
      +
    • If there is a single parameter in the service operation signature then the data in the JMS message is assumed to be a direct serialization of the data coming from/going to the service operation
    • +
    • Else there are multiple parameters in the servioce operation signature and the data in the JMS message is assumed to be a document literal wrapped serialization of the data coming from/going to the service operation
    • +
    +
  • +
+
<wireFormat.jmsBytes/> The data in the JMS message is the native bytes of the data coming from/going to the service operation. The service operation signature is expected to have a single byte[] parameter
<wireFormat.jmsBytesXML/> The data in the JMS message is an XML document literal wrapped representation of the parameters of the service operation presented as a series of bytes
<wireFormat.jmsText/> The data in the JMS message is the string representation of data coming from/going to the service operation. The service operation signature is expected to have a single String parameter
<wireFormat.jmsTextXML/> The data in the JMS message is an XML document literal wrapped representation of the parameters of the service operation presented as a String
<wireFormat.jmsObject/> The data in the JMS message is the Java object serialization of data coming from/going to the service operation
+
+ + +

While you can specify this wire format there is no need to as in lieu of other operation selectors being specified this one it assumed to be in force. You can add new wire formats by adding the appropriate model objects, processors and providers.

+ +

Using SCA callbacks with the JMS binding

+ +

The Tuscany JMS binding supports using SCA callbacks for creating asynchronous clients and services.

+ +

This is done by using a <callback> element in the SCDL for the service or reference as shown in the following example.
+See the callbacks-jms sample for a complete example of using callbacks

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           targetNamespace="http://sample"
+           name="CallbacksComposite">
+
+    <component name="ClientComponent">
+        <implementation.java class="callbacks.OrderServiceClient" />
+        <reference name="orderService" target="ServiceComponent/OrderService">
+            <binding.jms uri="jms:OrderService"/>
+            <callback>
+                <binding.jms />
+            </callback>
+        </reference>
+    </component>
+
+    <component name="ServiceComponent">
+        <implementation.java class="callbacks.OrderServiceImpl" />
+        <service name="OrderService">
+            <binding.jms />
+            <callback>
+                <binding.jms />
+            </callback>
+        </service>
+    </component>
+
+</composite>
+
+
+ +

When no destination is defined on the callback binding of a <reference> then a JMS temporary queue will be used.

+ +

Setting JMS headers and user properties

+ +

JMS headers and user properties can be set on JMS messages sent from Tuscany by using the <Headers> and <OperationProperties> elements of the JMS binding. The <Headers> element applies to all messages, the <OperationProperties> applies to individual operations and may override values set on the <Headers> element.

+ +

An example of using these is shown in the following snippet of SCDL:

+
+
+<binding.jms uri="jms:ServiceQueue">
+    <headers JMSType="someTypeValue" />
+    <operationProperties name="op2">
+        <headers JMSType="op2SpecificTypeValue" />
+    </operationProperties>
+</binding.jms>
+
+
+ +

A complete working example of using <Headers> and <OperationProperties> can be seen in the properties itest

+ +

Using JMS message selectors

+ +

Services using the JMS binding to receive messages may only want a subset of the messages arriving on a queue or topic. This can be done by using the <SubscriptionHeaders> element which enables defining a JMS message selector to filter the messages that will be received.

+ +

An example of using these is shown in the following snippet of SCDL:

+
+
+<binding.jms uri="jms:ServiceTopic" >
+    <SubscriptionHeaders JMSSelector="JMSType = 'type1'"/>
+</binding.jms>
+
+
+ +

A complete working example of using <SubscriptionHeaders> can be seen in the jms selectors itest .

+ +

Using a definitions.xml file and the requestConnection/responseConnection attributes

+ +

It can be useful to define the details of the JMS resources separately from the SCA composite, to support this the SCA definitions.xml file can be used to define 'model' <binding.jms> elements which can then be referred to from the binding within the composite.

+ +

For example, the following shows a definitions.xml file defining a JMS queue and connection factory which are then used by a JMS binding within a composite.

+ +

The definitions.xml file:

+
+
+<definitions xmlns="http://www.osoa.org/xmlns/sca/1.0"
+             xmlns:itest="http://jms"
+             targetNamespace="http://jms" >
+
+    <binding.jms name="itest:TestService" >
+        <destination name="MyServiceQueue" create="never"/>
+        <connectionFactory name="MyConnectionFactory"/>
+    </binding.jms>
+
+</definitions>
+
+
+ +

and a binding which uses the definitions.xml binding:

+
+
<binding.jms requestConnection="itest:TestService" />
+
+ +

A complete working example of using the requestConnection/responseConnection attributes can be seen in the jms definitions itest .

+ +

Configuring JMS resources

+ +

Tuscany locates all JMS resources from JNDI so the environment where Tuscany is running needs to have JNDI and JMS correctly configured in order to use the Tuscany JMS binding.

+ +

The following describes how to configure JMS in some common environments:

+ +

Tuscany J2SE standalone environment with ActiveMQ

+ +

The Tuscany standalone runtime can use an embedded Apache ActiveMQ message broker. To use ActiveMQ the application needs to include the JMS API and ActiveMQ jars in the classpath and include a jndi.properties file to configure the ActiveMQ resources in JNDI.

+ +

An example of this can be seen in the Tuscany JMS itest which uses the ActiveMQ 4.1.1 release and this jndi.properties file.

+ +

For more information on using ActiveMQ see the Apache ActiveMQ website and specifically this page for information about configuring JNDI resources.

+ +

Apache Tomcat

+ +

Tomcat does not include a JMS broker by default so you need to either embed one in each Tuscany application, install a broker into the tomcat installation, or use an external broker. Once that is done JNDI resources can be defined using the standard Tomcat facilities, see the Tomcat JNDI How-to.

+ +

The Tuscany samples that use JMS and Tomcat demonstrate how to embed a JMS broker within the application by including ActiveMQ and its dependencies within the sample WAR, and using the webapp META-INF/context.xml file to define the JMS resources in JNDI.

+ + +

JEE application servers such as Apache Geronimo, WebSphere etc

+ +

JEE Application servers such as Geronimo, WebSphere, WebLogic etc come with their own JMS broker that can be used by Tuscany. All the JMS resources used by a Tuscany application must be manually defined in the application server. Usually the application server has some sort of admin console where the resources can be defined using a web browser.

+ +

The Tuscany helloworld JMS sample README describes the specific details of how to do this for some common application servers.

+ +
ClassCastExceptions when using Tuscany applications in an Application Server
Tuscany applications, specifically the JMS samples, are built to work out of-the-box on Tomcat by including a JMS broker embedded within the application. This causes incompatibilities with some Application Servers because the Java class of JMS resources may use different class loaders in the server and the application. The solution is to delete any JMS API jar included in the application WAR, for example, the geronimo-jms_1.1_spec-1.1.jar.
+ +

Using JEE resource references

+ +

When running Tuscany in a JEE environment it can be useful to use JEE resource references to map local application resource names to global JNDI names. This can be done by using <resource-ref> elements in the application deployment descriptor. If a <resource-ref> exists for a JMS binding resource then Tuscany will use that instead of looking up the resource directly in the global JNDI.

+ +

For example, adding the following definitions to the helloworld JMS sample web.xml will enable mapping the 'ConnectionFactory' and 'HelloWorldService' names used by the JMS binding into names for the actual resources used on the Application Server. This will normally occur when the application is dployed with the deploy tool asking what real resource names the resourecs should be mapped to.

+
+
+<resource-ref>
+    <res-ref-name>ConnectionFactory</res-ref-name>
+    <res-type>javax.jms.ConnectionFactory</res-type>
+    <res-auth>Container</res-auth>
+    <res-sharing-scope>Shareable</res-sharing-scope>
+</resource-ref>
+
+<resource-ref>
+    <res-ref-name>HelloWorldService</res-ref-name>
+    <res-type>javax.jms.Queue</res-type>
+    <res-auth>Container</res-auth>
+    <res-sharing-scope>Shareable</res-sharing-scope>
+</resource-ref>
+
+
+ + +

Using an external JMS broker

+ +

When the Tuscany environment does not include a JMS broker then an external broker may be used by specifying the initialContextFactory and jndiURL attributes on the binding.jms element. Any JMS 1.1 compatible broker should work such as Apache ActiveMQ or any other proprietary broker. The Tuscany application classpath will need to include jars for the initial context factory and all of its dependencies.

+ +

An example of using the Tuscany JMS binding with an external ActiveMQ broker is as follows:

+
+
+<binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory" jndiURL="tcp://localhost:61616">
+   <destination name="DestQueueA"/>
+</binding.jms>  
+
+
+ +

Using the WebSphere client for JMS

+ +

The Tuscany JMS binding now (post Tuscany SCA 1.2) works the WebSphere client for JMS which enables Tuscany applications running outside of WebSphere to use JMS resources defined within WebSphere. You need to include the JMS client jars in the Tuscany classpath and ensure that the JMS connection factory has the "endpoint providers" field configured in WebSphere. See this email thread for more information.

+ +

JMS Message types and message body format

+ +

The SCA JMS specification only defines how to use JMS TextMessages which contain XML in the message body, however it is a common requirement to use alternative message types and body formats. Currently Tuscany defines an additional "messageProcessor" attribute on the binding.jms element to support additional message types and payload formats. For the time being this should be considered an interim solution which will be changed in future Tuscany releases.

+ +

The messageProcessor attribute value may be "XMLTextMessage", "TextMessage", "ObjectMessage", or the name of a Java class that implements the org.apache.tuscany.sca.binding.jms.provider.JMSMessageProcessor interface. For example:

+ +
+
+<reference name="serviceA" promote="HelloWorldClient/serviceA">
+    <binding.jms messageProcessor="my.TestMessageProcessor" />
+</reference>
+
+
+ +

For a complete example of using the messageProcessor attribute see the MessageProcessorTestCase itest.

+ +

Using policy to control the JMS binding

+

The JMS binding is aware of the following policy implementations.

+ +
    +
  • org.apache.tuscany.sca.binding.jms.policy.header.JMSHeaderPolicy +
      +
    • Used to set various JMS message headers including JMSType, JMSCorrelationID, JMSDeliveryMode, JMSTimeToLive, JMSPriority and arbitrary user defined header properties
    • +
    +
  • +
  • org.apache.tuscany.sca.binding.jms.policy.authentication.token.JMSTokenAuthenticationPolicy +
      +
    • Used to insert a user defined authentication property into the JMS header.
    • +
    +
  • +
+ + +

Intents and policy sets can be constructed to control the application of these policies. The following intents are defined by default

+
    +
  • pritority
  • +
  • deliveryMode
  • +
+ + +

New intents and policy sets can be designed are required to provide the level of control you need over your application.

+ +

Intent: priority

+

The priority intent provides a coarse grained approach to setting message priority. For example,

+ +
+
+ <reference name="serviceA" promote="HelloWorldClient/serviceA" requires="priotiry.meduim">
+    <binding.jms messageProcessor="my.TestMessageProcessor" />
+</reference>
+
+
+ +

The values "priority.high", "priority.medium", "priority.low" are supported. It is the responsibility of the user to define a policy set to support these intents. The following policy set could be used to support these priority values.

+ +
+
+    <policySet name="JMSPolicySet1"
+               provides="priority"
+               appliesTo="sca:binding.jms">
+        <intentMap provides="priority" default="medium">
+            <qualifier name="high">
+                <tuscany:jmsHeader JMSPriority="9"/>
+            </qualifier>
+            <qualifier name="medium">
+                <tuscany:jmsHeader JMSPriority="4"/>
+            </qualifier>
+            <qualifier name="low">
+                <tuscany:jmsHeader JMSPriority="0"/>
+            </qualifier>
+        </intentMap>
+    </policySet>
+
+
+ +

Intent: deliveryMode

+ +

The deliveryMode intent provides s simple way of specifying whether a message should be delivered persistently or non-persistently. For example,

+ +
+
+ <reference name="serviceA" promote="HelloWorldClient/serviceA" requires="deliveryMode.persistent">
+    <binding.jms messageProcessor="my.TestMessageProcessor" />
+</reference>
+
+
+ +

The values "deliveryMode.persistent" and "deliveryMode.nonPersistent" are supported. It is the responsibility of the user to define a policy set to support these intents. The following policy set could be used to support these delivery mode values.

+ +
+
+    <policySet name="JMSPolicySet2"
+               provides="deliveryMode"
+               appliesTo="sca:binding.jms">
+        <intentMap provides="deliveryMode" default="nonPersistent">
+            <qualifier name="persistent">
+                <tuscany:jmsHeader JMSDeliveryMode="PERSISTENT"/>
+            </qualifier>
+            <qualifier name="nonPersistent">
+                <tuscany:jmsHeader JMSDeliveryMode="NON_PERSISTENT"/>
+            </qualifier>
+        </intentMap>
+    </policySet>    
+
+
+ +

Other header values

+ +

TBD

+ + +

JMS binding schema

+ +

The complete JMS binding SCDL schema has the following format:

+ +
+
+<binding.jms correlationScheme="string"?
+             initialContextFactory="xs:anyURI"?
+             jndiURL="xs:anyURI"?
+             requestConnection="QName"?
+             responseConnection="QName"?
+             operationProperties="QName"?
+             ... >
+
+   <destination name="xs:anyURI" type="string"? create="string"?>
+      <property name="NMTOKEN" type="NMTOKEN">*
+   </destination>?
+
+   <connectionFactory name="xs:anyURI" create="string"?>
+      <property name="NMTOKEN" type="NMTOKEN">*
+   </connectionFactory>?
+
+   <activationSpec name="xs:anyURI" create="string"?>
+      <property name="NMTOKEN" type="NMTOKEN">*
+   </activationSpec>?
+
+   <response>
+      <destination name="xs:anyURI" type="string"? create="string"?>
+         <property name="NMTOKEN" type="NMTOKEN">*
+      </destination>?
+      <connectionFactory name="xs:anyURI" create="string"?>
+         <property name="NMTOKEN" type="NMTOKEN">*
+      </connectionFactory>?
+      <activationSpec name="xs:anyURI" create="string"?>
+         <property name="NMTOKEN" type="NMTOKEN">*
+      </activationSpec>?
+   </response>?
+
+   <complexType name="SubscriptionHeaders"> 
+      <attribute name="JMSSelector" type="string"/> 
+   </complexType>
+
+   <resourceAdapter name="NMTOKEN">?
+      <property name="NMTOKEN" type="NMTOKEN">*
+   </resourceAdapter>?
+
+   <headers JMSType="string"?
+            JMSCorrelationId="string"?
+            JMSDeliveryMode="string"?
+            JMSTimeToLive="int"?
+            JMSPriority="string"?>
+      <property name="NMTOKEN" type="NMTOKEN">*
+   </headers>?
+
+   <operationProperties name="string" nativeOperation="string"?>
+      <headers JMSType="string"?
+               JMSCorrelationId="string"?
+               JMSDeliveryMode="string"?
+               JMSTimeToLive="int"?
+               JMSPriority="string"?>
+         <property name="NMTOKEN" type="NMTOKEN">*
+      </headers>?
+   </operationProperties>*
+
+   <opertionSelector.jmsdefault/>? | <opertionSelector.jmsUserProp propertyName="somePropertyName"/>?
+   <wireFormat.jmsdefault sendFormat+"text|bytes"/>? | <wireFormat.jmsBytes/>? | <wireFormat.jmsBytesXML/>? | <wireFormat.jmsText/>? | <wireFormat.jmsTextXML/>? | <wireFormat.jmsObject/>?
+
+</binding.jms>
+
+
+ +

See the JMS Binding Specification 1.0 for full details of each of these configuration options.

+ +

Not all these elements are supported by Tuscany. Specifically, the <activationSpec> and <resourceAdapter> elements are not supported as Tuscany does not use JCA or MDBs for its JMS support.

+ +

The create attribute on the destination element is not supported in most environments and all JMS resources (connection factories, queues and topics) need to be pre-configured. An exception to this is when using Apache ActiveMQ as the JMS broker then Tuscany may be able to dynamically create queue and topic resources. This is mainly only useful for unit testing and it is recommended that user applications are designed with the expectation that JMS resources need to be preconfigured.

+ +

the "operationSelector" and "wireFormat" elements are declared in the tuscany namespace (http://tuscany.apache.org/xmlns/sca/1.0). The default operation selection and wire format behvaviour is defined in the JMS Binding Specification 1.0 but we have added a selection of other formats and selectors as alternatives.

+ +

Implementation Notes

+ +

The JMS binding is the first binding where we have started to exploit the binding wire concept. This affects how the JMS binding is implemented.

+ +

The addition of a binding wire to the infrastructure allows interceptors to be added that operate on message data in the context of the binding. This allows wire formats to be specified. This is important for bindings like JMS where the data format on the wire does not necessarily follow a well known specification. The default wire format in the Tuscany JMS binding is as described in the SCA JMS specification, i.e. a JMS text message containing XML. However JMS messages using any arbitrary format can be supported by constructing new wire format extensions.

+ +

The following diagram shows an overview of how a reference JMS binding may be configured to talk to a service JMS binding using the Text XML wire format.

+ +

+ +

In the above diagram,
+1) databinding interceptor normalizes the data into an intermediate format that the binding can understand
+2) wire format interceptor, that is called WireFormat.jmsTextXML, marshals the normalized data into the protocol-specific message, JMSMessage for binding.jms

+ +

An example of a composite file which results in this kind of configuration is as follows:

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	targetNamespace="http://helloworld"
+	xmlns:hw="http://helloworld"
+    name="helloworld">
+
+    <component name="HelloWorldReferenceComponent">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.format.jmstextxml.helloworld.HelloWorldReferenceImpl" />
+        <reference name="helloWorldService1" >
+            <binding.jms>
+                <destination name="HelloWorldService1"/>
+                <wireFormat.jmsTextXML/>
+            </binding.jms>
+        </reference>      
+    </component>
+    
+    <component name="HelloWorldServiceComponent1">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.format.jmstextxml.helloworld.HelloWorldServiceImpl" />
+        <service name="HelloWorldService">
+            <binding.jms>
+                <destination name="HelloWorldService1"/>
+            </binding.jms>
+        </service>
+    </component>     
+</composite>
+
+
+ +

Note that <wireFormat.jmsTextXML/> is explicitly specified on the reference binding. As this is the default wire format it can be omitted as is the case on the service binding.

+ +

Of course Tuscany already has a databinding framework that is able to transform between datatypes generically. So think of the wire format functionality as performing binding specific transformations.

+ +

The following diagram gives an overview of the difference between the databinding and wireformat transformations on the reference side:

+ +

+ +

The following diagram gives an overview of the difference between the databinding and wireformat transformations on the service side:

+ +

+ +

When looking at the code itself you will see the following structure:

+ +
+
+binding-jms
+  The jms binding model
+
+binding-jms-runtime
+  /org/apache/tuscany/sca/binding/jms/provider
+     The base JMS binding runtime implementation. Exploits the Tuscany provider pattern. 
+
+  /org/apache/tuscany/sca/binding/jms/context
+     A structure that passes the binding context with the message and allows the wire format and operation selection interceptors to do binding specific things
+  /org/apache/tuscany/sca/binding/jms/transport
+     JMS transport processing implmented as an interceptor
+  /org/apache/tuscany/sca/binding/jms/headers
+     JMS header processing implmented as an interceptor
+  /org/apache/tuscany/sca/binding/jms/wireformat
+     JMS wire format interceptors
+  /org/apache/tuscany/sca/binding/jms/operationselector
+     JMS operation selector interceptors
+      
+binding-jms-policy
+  Some base JMS policy implementations
+
+
+ +

The providers can be replaced in order to change the way that the JMS binding is constructed.

+ +

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindingjsonrpc.html b/site/trunk/site-publish/sca-java-bindingjsonrpc.html new file mode 100644 index 0000000000..28d3ca27e4 --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindingjsonrpc.html @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.jsonrpc + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding.jsonrpc + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<binding.jsonrpc>

+ +

Tuscany supports JSON-RPC as a protcol for use with SCA services by using the <binding.jsonrpc> SCDL extension. This enables remote web browser clients to easily make RPC style calls to server-side SCA components.

+ +

The complete timeline of available and future plans is given in the Tuscany Web 2.0 Roadmap

+ +

Using the Tuscany JSON-RPC binding

+ +

You could use this binding without any configuration, or by providing a specific service URI.
+To include it on a SCA service choose one of the SCDL examples below :

+ +
+
+   <binding.jsonrpc/>
+
+
+ +
+
+   <binding.jsonrpc uri="http://localhost:8080/store/catalog"/>
+
+
+ +

Consuming JSON-RPC services on the client application

+ +

Any JSON-RPC client may be used to access SCA services which use <binding.jsonrpc>, below we are going to describe different ways you could consume the Tuscany JSON-RPC services in your client application.

+ +

Utilizing Tuscany Implementation.widget

+ +

When your web client application is defined as an SCA component utilizing Tuscany Widgets, a JavaScript is generated which may be included within an HTML document to properly inject services references to SCA references defined on the same HTML document.

+ +

This script is used by simply including the following tag within the HTML page :

+ +
+
+<script type="text/javascript" src="html-page-name.js" />
+
+
+ +

This initializes the proxys for the SCA services which can then be injected into SCA references to make requests to the server-side components. For example, if there was a service named "myService" which had operations "aOnewayRequest" and "anRpcRequest" the scripts in the HTML page could now invoke these operations with the following:

+ +
+
+//@Reference
+var myService = new Reference("myService");
+myService.aOnewayRequest(args);
+
+
+

or

+
+
+//@Reference
+var myService = new JSONRpcClient("myService");
+myService.anRpcRequest(args, responseFunction);
+
+
+ +

Also see Tuscany Widgets for more details.

+ +

Utilizing a JavaScript Client Proxy

+ +

To simplify the task for web browsers developers Tuscany provides a 'binding-jsonrpc.js" JavaScript client proxy code that can be included in your application.

+ +

After copying the script to your application, it can be used bu simply including the following tag within the HTML page :

+ +
+
+<script type="text/javascript" src="binding-jsonrpc.js" />
+
+
+ +

This initializes the proxys for the SCA services which can then be used make requests to the server-side components. Based on the scenario described above, below are the to invoke these operations.

+ +
+
+var myService = new JSONRpcClient("Catalog").service;
+myService.aOnewayRequest(args);
+
+
+

or

+
+
+var myService = new JSONRpcClient("Catalog").service;
+myService.anRpcRequest(args, responseFunction);
+
+
+ +

Handling JSON-RPC Response with callbacks

+ +

In that example 'responseFunction' is the name of a function which is called to process the response and which gets called asynchronously on another thread when the response is avaialble. RPC requests are done this way instead of the simpler "answer = myService.anRpcRequest(args)" to avoid hanging the browser while the (potentially slow) request is being processed. An example of the responseFunction for the previous example is:

+
+
+function responseFunction(answer){
+  // do something with answer
+}
+
+
+ +

Handling errors

+ +
+
+//initialization code
+try{
+   myService.anRpcRequest(args, responseFunction);
+} catch(e) {
+   //handle error
+   alert(e);
+}
+
+function responseFunction(answer, exception){
+   //handle exception information
+   if(exception){
+      alert(exception.message);
+      return;
+   }
+  // do something with answer
+}
+
+
+
+ +

Using SCA JSON-RPC services with Dojo

+ +

Apache Tuscany JSON-RPC services provide built-in support for Dojo RPC. The Dojo toolkit is a popular framework for writing Ajax/Web 2.0 style browser client applications. Tuscany SCA services which use <binding.jsonrpc> will by default support the Simple Method Description (SMD) protocol. SMD is similar to ?wsdl for Web services, entering a service endpoint appended with ?smd will return a SMD descriptor for the service.

+ +

Using Tuscany SCA services with Dojo can therefore be as simple as the following:

+
+
+  var myService = new dojo.rpc.JsonService("myService?smd");
+
+
+ +

Supported data types

+ +

The JSON-RPC binding utilize the Databinding Framework to provide support for the following data transformations :

+ +
    +
  • Primitive Type <==> JSON <==> Primitive Type
  • +
  • Array of Primitive Type <==> JSON <==> Array of Primitive Type
  • +
  • Java bean <==> JSON <==> Java bean
  • +
  • List <==> JSON <==> List
  • +
  • Map <==> JSON <==> Map
  • +
  • Set <==> JSON <==> Set
  • +
+ + +

Some examples:

+ +

There are two samples showing using <binding.jsonrpc>, one which uses the Dojo Toolkit on the client, and another which uses the Tuscany scaDomain.js script. The samples are helloworld-dojo and helloworld-jsonrpc.

+ + +

Security Policy support in HTTP and Web 2.0 Bindings

+ +
work in progress
+ +

Scenarios

+ +
    +
  • A Web 2.0 application requires that a user get authenticated before it can access the application.
  • +
  • A Web 2.0 application requires that all communication between client/server be done using SSL.
  • +
  • A given service, exposed using a web 2.0 binding requires user authentication.
  • +
  • A given operation, exposed using a web 2.0 binding requires user authentication.
  • +
+ + +

Policy Interceptor

+ +

The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.
+The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.

+ +

+ + +
Differences between <binding.jsonrpc> and <binding.dwr>
The current Tuscany SCA runtime supports <binding.jsonrpc> and <binding.dwr> which provide similar functionality. The differences are: +
    +
  • <binding.jsonrpc> supports the SMD protocol enabling easy use with Dojo, <binding.ajax> does not support SMD
  • +
  • <binding.ajax> supports SCA references and using COMET style asynchronous operation, <binding.jsonrpc> does not
  • +
  • <binding.jsonrpc> uses the standard JSON-RPC protocol, <binding.dwr> uses a proprietry protocol using DWR
  • +
+ + +

These differences should be resolved by the Tuscany SCA 1.0 release.

+ +
Changes since 0.90 release
The Tuscany JSON-RPC and Ajax binding's have had significant functional and useability changes since the 0.90 release. It is recomended that if possible the latest code is used (the description on this page is based on the latest code).
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindingrmi.html b/site/trunk/site-publish/sca-java-bindingrmi.html new file mode 100644 index 0000000000..b3b97ae407 --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindingrmi.html @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.rmi + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding.rmi + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<binding.rmi>

+ +

Tuscany supports Remote Method Invocation (RMI) as a protocol for use with SCA services and references by using the <binding.rmi> SCDL extension.

+ +

The RMI binding enables SCA components to use or be used by any other application which uses the standard Java RMI protocol. One use of this is to easily integrate the Tuscany runtime with existing Java applications which use RMI.

+ +

This RMI binding SCDL has the following format:

+ +
+
+   <binding.rmi host="" port="" serviceName=""/>
+
+
+ + + + +

Some examples:

+ +

This example composite shows how to make an SCA component available as an RMI service:

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:rmi="http://tuscany.apache.org/xmlns/binding/rmi/1.0-SNAPSHOT"
+           name="HelloWorldRmiComposite">
+
+   <service name="HelloWorldRmiService" promote="HelloWorldServiceComponent">
+      <interface.java interface="helloworld.HelloWorldService"/>
+      <binding.rmi host="localhost" port="8099" serviceName="HelloWorldRemoteService"   />
+      <reference target="HelloWorldServiceComponent">HelloWorldServiceComponent</reference>
+   </service>
+      
+   <component name="HelloWorldServiceComponent">
+      <implementation.java class="helloworld.HelloWorldImpl"/>
+   </component>   
+  
+</composite>
+
+
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindingrss.html b/site/trunk/site-publish/sca-java-bindingrss.html new file mode 100644 index 0000000000..b0d81944c9 --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindingrss.html @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.rss + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding.rss + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<binding.rss> Introduction

+ +

The Tuscany Java SCA runtime supports Really Simple Syndication (RSS) using the <binding.rss> extension. Tuscany can communicate with services that provide or consume items described in the RSS 1.0 or 2.0 syndication format. The RSS protcol is an additional conceptual layer that operates on top of the Hyper Text Transfer Protocol, so it is useful to understand that underlying protocol as well. Reference materials on these specifications is available here.

+ + + + +

Some of the function described here is included in the Tuscany 1.3.2 and 1.4 releases. The complete timeline of available and future plans is given in the Tuscany Web 2.0 Roadmap. Note also that the RSS binding support is similar to the Tuscany Atom Binding Support in both syntax and function.

+ + +

Using the Tuscany RSS binding

+ +

The primary use of the RSS binding is to provide support for collections that can be shared in a distributed fashion. Examples of shared collections includes shopping carts, telephone directories, insurance forms, and blog sites. These collections of items can be added, retrieved, updated, and deleted using the 4 basic actions of the HTTP protocol:

+
    +
  • POST (create or add)
  • +
  • GET (retreive or query)
  • +
  • PUT (update)
  • +
  • DELETE (destroy or remove
  • +
+ + +

The simplest way to use the Atom binding is to declare a collection as a service and provide an HTTP address where one can access the service. This service is declared in an SCA composite file which describes the SCA domain.

+
+
+	<service name="customer" promote="CustomerCollection">
+		<tuscany:binding.rss uri = "http://localhost:8084/customer"/>
+	</service>
+
+
+ +

The service can be implemented in Java or any of the the Tuscany implementation types. For example, here is a way to create an implmentation for the above CustomerCollection service as the Java implementation.

+
+
+    <component name="CustomerCollection">
+        <implementation.java class="org.apache.tuscany.sca.binding.feed.CustomerCollectionImpl"/>
+    </component>
+
+
+ +

A collection that uses the RSS binding usually implements the Collection interface given in the package org.apache.tuscany.sca.binding.atom.collection. This interface declares the basic access methods mentioned above (post, get, put, and delete), and the data types on the methods are expressed as RSS SyndFeed and SyndEntry objects. This shows the basic methods of the RSS Collection interface in Tuscany:

+
+
+public interface Collection {
+
+    SyndFeed getFeed();
+    SyndFeed query(String queryString);
+
+
+ +

It is up to the developer or implementer of the shopping cart, telephone directory, or blog site to provide the code that implements the Collection interface. The developer or implementor also provides the code that translates from the business objects (shopping cart items, directory entries, insurance forms, blog articles) to the Atom model objects Feed and Entry.

+ +

One of the features of using this binding is that your business objects (shopping cart items, directory entries, insurance forms, and blog articles) can now be easily published and shared by the many RSS supporting tools such as feed readers, web browsers, and syndication aggregation. In other words, people can access your collection most anywhere on any device.

+ +

Example

+ +

Continuing with the CustomerCollection example shown above, let's see how to implement one of the common access methods. In this case, let's look at the get method in a client and how one would display the items of a collection. When you declared your RSS binding in your SCA composite, you also provided a uri for your collection. Using a web browser or other device, a user performs an HTTP get request to this uri. The HTTP response for your get request contains a body which has the RSS SyndFeed seruialized as a SyndFeed. You may access this SyndFeed using Java, and display or present to a user the contents of the RSS feed.

+
+
+        SyndFeed feed = resourceCollection.getFeed();
+        for (Object o : feed.getEntries()) {
+            SyndEntry e = (SyndEntry)o;
+            System.out.println("id = " + e.getUri() + " entry = " + e.getTitle());
+        }
+
+
+ +

Much of the code consists of converting from a RSS SyndFeed or SyndEntry to a business data model and storing to a collection.

+ +

Tuscany uses Java Project ROME to provide a model for RSS data. Please see Project ROME for the Java methods to access RSS SyndFeeds and SyndEntries, and how to easily convert these Java objects to and from XML.

+ +

Other Features of the Tuscany RSS Binding

+ +

In contrast to the Tuscany Atom binding, the Tuscany RSS binding does not provide:

+ +
    +
  • Data caching based on ETag and LastModified header fields.
  • +
  • JavaScript Object Notation (JSON) alternative to XML feeds and entry data.
  • +
  • Service document for site introspection.
  • +
  • Full featured JavaScript client for easy client side programming.
  • +
+ + +

See the Tuscany Atom Binding Support for a description of these features and how users may get more benefits from the Atom binding.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-bindingws.html b/site/trunk/site-publish/sca-java-bindingws.html new file mode 100644 index 0000000000..3d3f0a94a3 --- /dev/null +++ b/site/trunk/site-publish/sca-java-bindingws.html @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java binding.ws + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java binding.ws + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<binding.ws>

+ +

The Tuscany Java SCA runtime supports Web services by using the <binding.ws> SCDL extension. New Web service endpoints can be provided by using <binding.ws> within a SCA <service>, existing Web services can be invoked by using <binding.ws> within a SCA <reference>.

+ +

The Web service binding is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published specifications document.

+ +

The Web service binding SCDL has the following format:

+ +
+
+<binding.ws name="NCName"? uri="xs:anyURI"? wsdlElement="xs:anyURI"? wsdli:wsdlLocation="list of xs:anyURI"? >
+   <wsa:EndpointReference>...</wsa:EndpointReference>*
+</binding.ws>
+
+
+ +

simple use

+ +

All the attributes and elements of the Web service binding are optional, so the simplest way to use it is to use all the defaults:

+
+
<binding.ws/>
+
+ +

With that simplest form the endpoint which will be used is derived from the names of the component and binding. This works well for services but for references its likely not what you want, so with references the following is a more useful simplest form:

+
+
<binding.ws uri="http://someHost/someService"/>
+
+ +

wsdlElement

+ +

The wsdlElement attribute indicates that a WSDL document exists which should be used and it points to the element within that WSDL to use. The value of the wsdlElement attribute can have one of the following four forms:

+ +
    +
  1. Service:
    + <WSDL-namespace-URI>#wsdl.service(<service-name>)
    + In this case, all the endpoints in the WSDL Service that have equivalent PortTypes with the SCA service or reference must be available to the SCA service or reference.
  2. +
  3. Port (WSDL 1.1):
    + <WSDL-namespace-URI>#wsdl.port(<service-name>/<port-name>)
    + In this case, the identified port in the WSDL 1.1 Service must have an equivalent PortType with the SCA service or reference.
  4. +
  5. Endpoint (WSDL 2.0):
    + <WSDL-namespace-URI>#wsdl.endpoint(<service-name>/<endpoint-name>)
    + In this case, the identified endpoint in the WSDL 2.0 Service must have an equivalent PortType with the SCA service or reference.
  6. +
  7. Binding:
    + <WSDL-namespace-URI>#wsdl.binding(<binding-name>)
    + In this case, the identified WSDL binding must have an equivalent PortType with the SCA service or reference. In this case the endpoint address URI for the SCA service or reference must be provided via the URI attribute on the binding.
  8. +
+ + +
What will the endpoint be?
The actual Web service endpoint used depends on whether or not a WSDL port is being used, if the EndpointReference element or the uri attribute of the <binding.ws> has been specified, and the names of the component and binding. The actual alogrythim defined in the Web service binding specification is: + +
    +
  1. Either the URIs in the endpoint(s) of the referenced WSDL
    + or the URI specified by the wsa:Address element of the wsa:EndpointReference
  2. +
  3. The explicitly stated URI in the "uri" attribute of the binding.ws element, which may be relative,
  4. +
  5. The implicit URI as defined by the Assembly specification
  6. +
+ + +

The URI in the WSDL endpoint or in the wsa:Address of an EPR may be a relative URI, in which case it is relative to the URI defined in (2) or (3). The wsa:Address element can be the empty relative URI, in which case it uses the URI defined in (2) or (3) directly. This allows the EPR writer to specify reference parameters, metadata and other EPR contents while allowing the URI to be chosen by the deployer. To reference a WSDL document and also specify an EPR, the wsdlElement attribute must refer to a binding element in the WSDL and not an endpoint or service.

+ +

wsdlLocation

+ +

The wsdlLocation attribute enables defining the location of the WSDL document to be used. Using wsdlLocation is not normally necessary as the Tuscany contrabution service will have discovered all the WSDL documents within a deployed SCA contrabution.

+ +

wsa:EndpointReference

+ +

This attribute enables using a WS-Addressing EndpointReference that specifies the endpoint for the service or reference, or any WSA reference parameters, metadata and other EPR contents to be used.

+ +

Some examples:

+ +

This example shows making a HelloWorld component available as a Web service endpoint. All the Web service binding defaults are used so the endpoint of the Web service will be http://localhost:8080/HelloWorldComponent.

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           targetNamespace="http://helloworld"
+           xmlns:hw="http://helloworld"
+           name="helloworldws">
+
+    <service name="HelloWorldService" promote="HelloWorldComponent">
+       <interface.java interface="helloworld.HelloWorldService" />
+       <binding.ws />
+    </service>
+
+    <component name="HelloWorldComponent">
+        <implementation.java class="helloworld.HelloWorldImpl" />
+    </component>
+
+</composite>
+
+
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-definitionsxml.html b/site/trunk/site-publish/sca-java-definitionsxml.html new file mode 100644 index 0000000000..461f7b6ce8 --- /dev/null +++ b/site/trunk/site-publish/sca-java-definitionsxml.html @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java definitions.xml + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java definitions.xml + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

definitions.xml

+ +

Section 1.8 describes the definitions.xml file as holding all of the artifacts that are useful for configuring an SCA domain but that are not specific to a particular composite or component. It goes on to say that "All of these artifacts within and SCA Domain are defined in a global, SCA Domain-wide file named definitions.xml". To achieve our extensibility goals we, in Tuscany, consider the SCA Domain wide definitions.xml file to be a logical concept that is constructed at runtime from the contents of definitions.xml files provided in contributions and in Tuscany extensions.

+ +

Each definitions.xml file may contain.

+ +
    +
  • Intents
  • +
  • Policy sets
  • +
  • Predefined binding specifications
  • +
  • Binding type descriptions
  • +
  • Implementation type descriptions
  • +
+ + +

Complete Features

+ +

Add Intents and Policy Sets with an Extension

+ +

An extension, such as the modules/policy-security extension relies on some policy sets and intents being available in the SCA Domain. The definitions.xml is the place to define these and hence if you look in this extension module you will find the following.

+ +
+
+<definitions xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ 			targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ 			xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ 			xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
+
+    <!-- POLICY SETS -->
+    <policySet name="runAs" appliesTo="sca:implementation.java"/>
+    <policySet name="allow" appliesTo="sca:implementation.java"/>
+    <policySet name="rolesAllowed" appliesTo="sca:implementation.java"/>
+    <policySet name="permitAll" appliesTo="sca:implementation.java"/>
+    <policySet name="denyAll" appliesTo="sca:implementation.java"/>
+    
+	<!-- Policy Intents Defined by the SCA Runtime -->
+	<intent name="authentication" 
+	 		constrains="sca:binding">
+		<description>
+			Specifying this intent on references requires necessary authentication information
+			to be sent along with outgoing messages. Specifying this intent on service requires
+			incoming messages to be authenticated
+		</description>
+	</intent>
+	
+	<intent name="confidentiality" 
+	 		constrains="sca:binding">
+		<description>
+			Specifying this intent requires message exchanged to be encrypted
+		</description>
+	</intent>
+	
+	<intent name="integrity" 
+	 		constrains="sca:binding">
+		<description>
+			Specifying this intent requires message exchanged to be signed
+		</description>
+	</intent>
+</definitions>
+
+
+ +

When this module is loaded at runtime the contents of this file are made generally available and hence in you composite you can use statements such at.

+ +
+
+
+<component name="CalculatorServiceComponent">
+    <implementation.java class="calculator.CalculatorServiceImpl"/>
+    <reference name="addService" >
+        <interface.java interface="calculator.AddService" />        
+        <binding.ws uri="http://localhost:8080/sample-calculator-ws-secure-webapp/AddServiceComponent"
+                    requires="authentication" />        
+    </reference>
+</component>
+
+
+ +

Where requires="authentication" refers to intent name="authentication" which is now available as an SCA Domain level definition.

+ +

TODO Features

+ +

Add Intents and Policy Sets with a Contribution

+ +

If contributionA provides a file such as:

+ +
+
+<sca:definitions xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ 			targetNamespace="http://tuscany.apache.org/xmlns/sca/1.0"
+ 			xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ 			xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
+
+<sca:intent name="specialAuthentication" 
+            constrains="sca:binding.ws">
+    <description>
+        Communitcation thro this binding required Authentication.
+    </description>
+</sca:intent>	
+ 
+</sca:definitions>
+
+
+ +

and ContributionB provides a file such as:

+ +
+
+<sca:policySet name="specialAuthenticationPolicy"
+ 	       provides="tuscany:wsAuthentication"
+ 	       appliesTo="//sca:binding.ws">
+    <tuscany:wsConfigParam>
+        <parameter name="OutflowSecurity">
+            <action>
+                <items>UsernameToken</items>
+                <user>TuscanyWsUser</user>
+                <passwordCallbackClass>my.PWCBHandler</passwordCallbackClass>"
+                <passwordType>PasswordText</passwordType>
+            </action>
+        </parameter>
+    </tuscany:wsConfigParam>
+</sca:policySet>
+
+
+ +

Then both the itent and the policySet should be available in the logical SCA Domain-wide definitions.xml and the policySet "specialAuthenticationPolicy" should successfully find the intent "tuscany:wsAuthentication". Composite files contributed to the domain will successfully be able to reference both the intent and the policy set.

+ +

See:

+ +

https://issues.apache.org/jira/browse/TUSCANY-2499
+http://www.mail-archive.com/dev%40tuscany.apache.org/msg01077.html

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-developer-reference.html b/site/trunk/site-publish/sca-java-developer-reference.html new file mode 100644 index 0000000000..a956ff780f --- /dev/null +++ b/site/trunk/site-publish/sca-java-developer-reference.html @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Developer Reference + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Developer Reference + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + +
Development
+ +

System Modules

+ +

Modules that are required by the system but which are not user configurable.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Module Short Description   
assembly The java interfaces and implementation classes for the SCA assembly model   
assembly-xml The processors that load the basic SCA assembly model from XML (SCDL) files   
assembly-java-dsl The java domain specific language for describing SCA assembly models   
binding-ws-axis2    
binding-ws-xml The processors that parse the <binding.ws> to create model objects   
commonj-api    
contribution Models and SPIs for the contribution service   
contribution-impl Implementation of the contribution service and a set of built-in package/artifact processors   
core The core that handles bootstrapping and provides life cylce, event and scope managements
+The runtime wiring and invocation chains
  
core-databinding The module that contributes interceptors, databinding and transformers to core   
core-spi The SPIs for core   
databinding The SPIs for the databinding framework, default implementations and built-in transformers   
databinding-axiom The extension that provides the support for AXIOM databinding   
databinding-jaxb The extension that provides the support for JAXB databinding   
databinding-sdo The extension that provides the support for SDO databinding    
databinding-sdo-axiom The extension that provides the support optimzed SDO to AXIOM transformation   
discovery-jms    
host-http The module that provides support for the HTTP protocol   
host-webapp    
implementation-java-runtime    
implementation-java-xml    
interface The representation of interfaces independent of the interface definition languages   
interface-java The interfaces and implementation classes for java interfaces   
interface-java-xml The processors that load the interface.java model from the XML (SCDL) or introspect the java classes   
interface-wsdl The interfaces and implementation classes for WSDL interfaces   
interface-wsdl-xml The processors that load the interface.wsdl model from the XML (SCDL) or introspect the WSDL definition   
interface-java-runtime The runtime module that activates the java interface related extension points and extensions   
interface-wsdl-runtime The runtime module that activates the WSDL interface related extension points and extensions   
maven-java2wsdl    
maven-wsdl2java    
policy The java interfaces and implementation classes for the SCA policy model   
java2wsdl    
sca-api    
wsdl2java    
+
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-development-guide-osgi.html b/site/trunk/site-publish/sca-java-development-guide-osgi.html new file mode 100644 index 0000000000..6629361f18 --- /dev/null +++ b/site/trunk/site-publish/sca-java-development-guide-osgi.html @@ -0,0 +1,503 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SCA Java Development Guide (OSGI) : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Development Guide (OSGI) + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ + + +
+ + + + + + +
Resources
+
+ + +

General Guide

+ +

Welcome to the Tuscany SCA Java subproject project. We look forward to your participation and try to help you get on board. Feel free to ask your questions on the mailing list.

+ +

Here are some general guidelines we use in this project.

+
    +
  • Java SCA sub-project aims to provide enterprise-grade service infrastructure based on SCA.
  • +
  • Tuscany SCA is not just a reference implementation. We encourage innovation based on the tenets of SCA. A lot of work we do provides feedback to the specifications.
  • +
  • The Java SCA infrastructure should provide flexibility and choice. It should not dictate programming models but support many.
  • +
  • The Java SCA infrastructure is very modularized and is designed to be highly extensible so users can customize it to fit their needs.
  • +
+ + +

Prerequisites

+ +

Java SCA requires the following:

+ + + +

Checking out code from Subversion

+ +

Use the command as follows:

+
+
svn checkout https://svn.apache.org/repos/asf/tuscany/branches/sca-equinox/
+
+ +

Setting up your Development Environment

+ +

top-down build (recommended approach)

+ +

Check out all of the java source code.

+
+
svn checkout http://svn.apache.org/repos/asf/tuscany/branches/sca-equinox/
+
+

Building the SCA source code :

+
+
cd  tools\maven\maven-eclipse-compiler
+mvn clean install
+cd ..\..\..\modules
+mvn -Dmaven.test.skip=true -fae clean install
+cd ..\distribution
+mvn -Dmaven.test.skip=true -fae clean install
+
+

It should work even if you start with an empty Maven local repository, and it should always work, however when you are building for Tuscany for the first time there are a lot of dependencies which must be downloaded so the first build can take a long time and it may fail with problems retrieving the dependencies.

+ +

There can be occasional problems downloading artifacts from remote Maven repositories so if mvn fails with network related sounding messages sometimes just trying again can fix the problem.

+ +

The trunk code sometimes has SNAPSHOT dependencies which can get out of date in your local repository so if you see odd build failures try updating the SNAPSHOT jars by using the "-U" parameter in the mvn command.

+ +

Once you have done a top-down build, and your local maven repository is populated, you can start using the maven off line option to speed up the build process by using the "-o" parameter in the mvn command.

+ +
+

The SCA build consumes a good amount of memory, in case you are seeing issues during the build, set a MAVEN_OPTS environment variable to allocate more memory for the build process.

+ +

Windows : SET MAVEN_OPTS=-Xmx512m
+ Unix : export MAVEN_OPTS=-Xmx512m

+ +

Importing SCA modules into your Development IDE

+ + +

Using Eclipse

+ + +

If this is the first time you are using your workspace with maven m2 local repository, you will need to tell your Eclipse workspace the location of the directory, and you can do this with the following command :

+
+
mvn -Declipse.workspace=[path-to-eclipse-workspace] eclipse:add-maven-repo
+
+

In order to generate the necessary project files to import the SCA modules to Eclipse, you can use the maven eclipse plugin

+
+
mvn -fae -Peclipse eclipse:eclipse
+
+ + +

Now, launch your Eclipse IDE, select File->Import->Existing projects into Workplace, and then import the project from SCA Modules into your Eclipse Workspace.

+ +

Now, launch your Eclipse IDE, select File->Import->Existing projects into Workplace, and then import the "PDE Target" project (from distribution/pdetarget) into your Eclipse Workspace.

+ +
    +
  • Import distribution/pdetarget
  • +
  • Inside eclipse, open tuscany-distribution-pdetarget project +
      +
    • open target/tuscany-distribution-pdetarget.target
    • +
    • click "Set as target platform" on the upper-right side of the overview window that opened
    • +
    +
  • +
+ + +

There are some Tuscany Eclipse code templates available:
+Eclipse Style Formatter
+Eclipse Templates

+ +

Coding Guidelines

+ +

There are a few simple guidelines when developing for JAVA SCA:

+
    +
  • The basic coding style used is the described at Sun Java coding standards but the main thing is to be consistent with the existing code you're updating, so for example, if you're updating a method that uses the braces on the same line style don't add code with the hanging braces style.
  • +
+ + +
    +
  • Always include the Apache License Headers on all files (both source code files and resource files such as xml documents)
  • +
+ + +
    +
  • Include a descriptive log message for checkins, for example "fixed such and such problem".
  • +
+ + +

While Tuscany does not yet have an official style or template, here are some templates that folks have been using and have been checked into the build which are stored at https://svn.apache.org/repos/asf/tuscany/java/etc/

+ +

Naming conventions to increase consistency

+ +

Folder Names: Please use all lowercases and dashes in folder names (like in the jar names)

+
    +
  • Maven artifact id = tuscany-<folder name>
  • +
+ + +

Package names: Package names within modules should include the module name so that source code can be located in the source tree easily. So, for example, java/sca/module/implementation-java would be in package structure org.apache.tuscany.implementation.java.*

+ +

Testing

+ +

Tuscany uses plain junit test cases to perform unit and integration testing, below is an example that can also be used as a template for writing new test cases; it demonstrates how to bootstrap the Tuscany SCA runtime in your test case, and because they are based on junit, you can run it from your IDE of choice or from Maven.

+ +
+

Note that we are using JUnit 4.2 code style in OSGI development stream

+ +
+
/**
+ * Description of your test case and necessary details you find necessary
+ */
+@Scope("COMPOSITE") @EagerInit
+public class CalculatorTestCase {
+
+    private static CalculatorService calculatorService;
+    private static NodeLauncher launcher;
+    private static Node node;
+
+    @Reference
+    public void setCalculatorService(CalculatorService calculatorService) {
+        CalculatorTestCase.calculatorService = calculatorService;
+    }
+    
+    
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+        launcher = NodeLauncher.newInstance();
+        String location = ContributionLocationHelper.getContributionLocation(CalculatorClient.class);
+        node = launcher.createNode("Calculator.composite", new Contribution("test", location));
+        System.out.println("SCA Node API ClassLoader: " + node.getClass().getClassLoader());
+        node.start();
+    }
+
+    @AfterClass
+    public static void tearDownAfterClass() throws Exception {
+        if (node != null) {
+            node.stop();
+            node.destroy();
+        }
+        if (launcher != null) {
+            launcher.destroy();
+        }
+    }
+
+    @Test
+    public void testCalculator() throws Exception {
+        // Calculate
+        assertEquals(calculatorService.add(3, 2), 5.0);
+        assertEquals(calculatorService.subtract(3, 2), 1.0);
+        assertEquals(calculatorService.multiply(3, 2), 6.0);
+        assertEquals(calculatorService.divide(3, 2), 1.5);
+    }
+}
+
+

Note that we use surefire maven plugin to run the unit and integration tests, and in most cases, they are configured to match a **/*TestCase.java file name pattern. Because of this, if your test case has a different file name pattern, you might execute it from your IDE of choice, but the maven build won't execute the test.

+ +

Client Applications as SCA Components

+ +

Below is how you can build client applications as an SCA component.

+ +
+
@Scope("COMPOSITE") @EagerInit
+public class CalculatorClient {
+    
+    private CalculatorService calculatorService;
+
+    @Reference
+    public void setCalculatorService(CalculatorService calculatorService) {
+        this.calculatorService = calculatorService;
+    }
+    
+    @Init
+    public void calculate() {
+
+        // Calculate
+        System.out.println("SCA API ClassLoader: " + print(Reference.class.getClassLoader()));
+        System.out.println("3 + 2=" + calculatorService.add(3, 2));
+        System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
+        System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
+        System.out.println("3 / 2=" + calculatorService.divide(3, 2));
+    }
+    
+    private static String print(ClassLoader cl) {
+        StringBuffer buf = new StringBuffer();
+        for (; cl != null;) {
+            buf.append(cl.toString());
+            buf.append(' ');
+            cl = cl.getParent();
+        }
+        return buf.toString();
+    }
+
+}
+
+ +

Maven Build Structure

+ +

We use the term Module to refer to the leaf of maven tree.

+
    +
  • sca/pom.xml's parent will be pom/parent/pom.xml
  • +
  • Other poms will use the pom from the parent folder as parent pom
  • +
  • Group id: org.apache.tuscany.sca
  • +
  • Version of our modules will be specified once in java/sca/pom.xml, child poms don't need specify a version as they get it from their parent
  • +
  • pom names begin Apache Tuscany SCA
  • +
  • Eclipse projects are generated for all built modules using mvn -Peclipse eclipse:eclipse
  • +
+ + +

Adding a new module and not ready to integrate?

+ +

'work-in-progress' modules can be worked on in the same source tree and yet not break the top-down build. You can do this by not listing your module(s) in java/sca/modules/pom.xml.

+ +

Development Hints

+ +

Generating Eclipse WTP Web Projects for Webapp samples

+ +

If you're using Eclipse WTP and want to get WTP Web Projects generated
+for our Webapp samples you can simply pass a -Dwtpversion=1.5 option to
+the usual mvn eclipse:eclipse command, like this:
+mvn -Dwtpversion=1.5 -Peclipse eclipse:eclipse

+ +

The magic -Dwtpversion=1.5 option will add the WTP Web project nature to
+all the Eclipse projects with <packaging>war</packaging> in their Maven
+pom.xml. You'll then be able to add these projects to a WTP Tomcat or
+Geronimo Server configuration, to publish and run them straight from
+your Eclipse workspace.

+ +

h3: Generating Dependencies for Ant in Samples

+ +

Figuring out the package dependency to include in Ant build.xml can be a pain. Here is a quick
+script which works in Linux environment for war files.

+
+
jar tvf sample-feed-aggregator-webapp.war | grep .jar | awk '{ printf "%s\n", $8 }' | sed -e "s/WEB-INF\/lib\///" | awk '{ printf "<include name=\"%s\"/>\n", $1 }' | grep -v tuscany
+
+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-development-guide.html b/site/trunk/site-publish/sca-java-development-guide.html new file mode 100644 index 0000000000..96504b6988 --- /dev/null +++ b/site/trunk/site-publish/sca-java-development-guide.html @@ -0,0 +1,588 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Development Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Development Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ + +

General Guide

+ +

Welcome to the Tuscany SCA Java subproject project. We look forward to your participation and try to help you get on board. Feel free to ask your questions on the mailing list.

+ +

Here are some general guidelines we use in this project.

+
    +
  • Java SCA sub-project aims to provide enterprise-grade service infrastructure based on SCA.
  • +
  • Tuscany SCA is not just a reference implementation. We encourage innovation based on the tenets of SCA. A lot of work we do provides feedback to the specifications.
  • +
  • The Java SCA infrastructure should provide flexibility and choice. It should not dictate programming models but support many.
  • +
  • The Java SCA infrastructure is very modularized and is designed to be highly extensible so users can customize it to fit their needs.
  • +
+ + + +

Prerequisites

+ +

Java SCA requires the following:

+ + + +

Getting Source code

+ +

The Java SCA project Subversion repository is located at https://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk/.
+The repository can also be viewed online at http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/

+ +

Anyone can check code out of Subversion. You only need to specify a username and password in order to update the Subversion repository, and only Tuscany committers have the permissions to do so.

+ +

Checking out code from Subversion

+ +

Use the command as follows (note that it uses http scheme so if you're a committer change it to https):

+
+
+svn checkout http://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk/ sca-java-1.x
+
+
+ +

Committing Changes to Subversion

+ +

Any Tuscany committer should have a shell account on svn.apache.org. Before you can commit, you'll need to set a Subversion password for yourself. To do that, log in to svn.apache.org and run the command svnpasswd.

+ +

Tuscany committers should configure these properties in the svn per-user config. On Unix-like systems, this area appears as a directory named .subversion in the user's home directory. On Win32 systems, Subversion creates a folder named Subversion, typically inside the Application Data area of the user's profile directory (C:\Documents and Settings\<user name>\Application Data\Subversion, which, by the way, is usually a hidden directory).

+ +

Please make sure the following properties are set in the "config" file:

+ +
+
+[miscellany]
+...
+enable-auto-props = yes
+
+[auto-props]
+### The format of the entries is:
+###   file-name-pattern = propname[=value][;propname[=value]...]
+### The file-name-pattern can contain wildcards (such as '*' and
+### '?').  All entries which match will be applied to the file.
+### Note that auto-props functionality must be enabled, which
+### is typically done by setting the 'enable-auto-props' option.
+
+*.c = svn:eol-style=native
+*.cpp = svn:eol-style=native
+*.h = svn:eol-style=native
+*.dsp = svn:eol-style=CRLF
+*.dsw = svn:eol-style=CRLF
+*.sh = svn:eol-style=native;svn:executable
+*.txt = svn:eol-style=native
+*.png = svn:mime-type=image/png
+*.jpg = svn:mime-type=image/jpeg
+Makefile = svn:eol-style=native
+
+*.java = svn:eol-style=native;svn:keywords=Rev Date
+*.xml = svn:eol-style=native;svn:keywords=Rev Date
+*.xsd = svn:eol-style=native;svn:keywords=Rev Date
+*.html = svn:eol-style=native;svn:keywords=Rev Date
+*.properties = svn:eol-style=native;svn:keywords=Rev Date
+*.jelly = svn:eol-style=native;svn:keywords=Rev Date
+*.ipr = svn:eol-style=native
+*.iml = svn:eol-style=native
+
+
+ +

Once your password is set, you can use a command like this to commit:

+
+
+svn commit
+
+
+

If Subversion can't figure out your username, you can tell it explicitly:

+
+
+svn --username <name> commit
+
+
+

Subversion will prompt you for a password, and once you've entered it, it will remember it for you. Note this is the password you configured with svnpasswd not your shell or other password.

+ +

Setting up your Development Environment

+ + +

Build tree structure

+ +

The build tree is designed to facilitate modular development and releases. Maven modules are grouped by how they are released under an hierarchy. Java SCA currently have the below module hierarchy :

+
+
-java
+ |-- sca
+     |-- demos                SCA demo applications
+     |-- distribution         SCA distributions
+     |-- itest                SCA Integration Tests
+     |-- modules              SCA Implementation Modules (core, runtimes, contribution, extensions, etc)
+     |-- samples              SCA Sample Applications
+     |-- tools                SCA Tools (Eclipse plugins, wsdl2java, java2wsdl, etc)
+     |-- tutorial             SCA Tutorial
+
+
+

The individual modules can be built separately or build with top-down build.

+ +

top-down build (recommended approach)

+ +

Check out all of the java source code.

+
+
+svn checkout http://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk/ sca-java-1.x
+
+
+ +

Building the SCA source code is simple

+
+
+cd sca-java-1.x
+mvn
+
+
+

It should work even if you start with an empty Maven local repository, and it should always work, however when you are building for Tuscany for the first time there are a lot of dependencies which must be downloaded so the first build can take a long time and it may fail with problems retrieving the dependencies.

+ +

There can be occasional problems downloading artifacts from remote Maven repositories so if mvn fails with network related sounding messages sometimes just trying again can fix the problem.

+ +

The trunk code sometimes has SNAPSHOT dependencies which can get out of date in your local repository so if you see odd build failures try updating the SNAPSHOT jars with:

+
+
+mvn -U
+
+
+ +

Once you have done a top-down build, and your local maven repository is populated, you can start using the maven off line option to speed up the build process

+
+
+mvn -o
+
+
+ +
The SCA build consumes a good amount of memory, in case you are seeing issues during the build, set a MAVEN_OPTS environment variable to allocate more memory for the build process. + +

Windows : SET MAVEN_OPTS=-Xmx512m
+ Unix : export MAVEN_OPTS=-Xmx512m

+ +
The "trunk" is always in very active development, and sometimes you might experience issues trying to build some modules, in that case you can tell maven to continue building other modules + +
+
+mvn -fae clean install
+
+
+ +

or either skip all unit tests

+ +
+
+mvn -fae -Dmaven.test.skip=true clean install
+
+
+ +

or run tests, but do not stop building if one of the tests fails

+ +
+
+mvn -fn clean install
+
+
+ +

Building the binary and source distributions

+ +

The binary and source distribution release artifacts are created by running maven in the distribution folder, for example:

+
+
+cd sca-java-1.x/distribution
+mvn clean install -o
+
+
+

The distribution artifacts can then be found in the folder named "target" within the distribution folder.

+ +

Importing SCA modules into your Development IDE

+ + +

Using Eclipse

+ +

If this is the first time you are using your workspace with maven m2 local repository, you will need to tell your Eclipse workspace the location of the directory, and you can do this with the following command :

+
+
+mvn -Declipse.workspace=[path-to-eclipse-workspace] eclipse:add-maven-repo
+
+
+

In order to generate the necessary project files to import the SCA modules to Eclipse, you can use the maven eclipse plugin

+
+
+cd sca-java-1.x
+mvn eclipse:eclipse
+
+
+

Now, launch your Eclipse IDE, select File->Import->Existing projects into Workplace, and then select the base SCA directory (e.g java/sca) and then press Finish, this should import all SCA modules into your Eclipse Workspace.

+ +

There are some Tuscany Eclipse code templates available:
+Eclipse Style Formatter
+Eclipse Templates

+ + + +

Understanding SCA code path

+ +

Here is a walk through of key methods/functions which help you get started with SCA Java development.

+ +

Coding Guidelines

+ +

There are a few simple guidelines when developing for JAVA SCA:

+
    +
  • The basic coding style used is the described at Sun Java coding standards but the main thing is to be consistent with the existing code you're updating, so for example, if you're updating a method that uses the braces on the same line style don't add code with the hanging braces style.
  • +
+ + +
    +
  • Always include the Apache License Headers on all files (both source code files and resource files such as xml documents)
  • +
+ + +
    +
  • Include a descriptive log message for checkins, for example "fixed such and such problem".
  • +
+ + +

Some other useful suggestions:

+
Clean Code
+
    +
  • use correct visibility, private, default, public, avoid protected
  • +
  • make methods static if not using object state
  • +
  • make sure javadoc is in sync or remove that javadoc
  • +
  • no javadoc on overridden methods
  • +
  • test cases in same package to avoid having to over-open access to methods
  • +
  • don't create artificial dependencies by using constants from another module
  • +
  • don't extend/implement a 'constant' interface
  • +
  • avoid creating another private layer over a public interface/spi
  • +
  • remove old code, don't leave it commented out, very confusing
  • +
  • use functional programming names for functions that convert an object
  • +
  • add javadoc to private methods
  • +
  • review class javadoc and make sure it's accurate
  • +
  • inline methods used only once, or make them clean static functions
  • +
  • put utility methods in a Util class with package visibility
  • +
  • use static imports
  • +
  • use scoped variables
  • +
  • no stars in OSGi exports
  • +
  • correct use of generics, see the effective Java book
  • +
+
+ +
Unit/Integration Tests
+
    +
  • put comments in test cases
  • +
  • review test cases and make sure they're included in the build
  • +
  • use junit 4 only, check correct use of @BeforeClass or @Before
  • +
  • use static imports for assert statements
  • +
+
+ +
Formatting
+
    +
  • use Tuscany eclipse code style/formatter
  • +
  • no tabs
  • +
  • no excessive line wrapping
  • +
+
+ +

While Tuscany does not yet have an official style or template, here are some templates that folks have been using and have been checked into the build which are stored at https://svn.apache.org/repos/asf/tuscany/java/etc/

+ +

Naming conventions to increase consistency

+ +

Folder Names: Please use all lowercases and dashes in folder names (like in the jar names)

+
    +
  • Maven artifact id = tuscany-<folder name>
  • +
+ + +

Package names: Package names within modules should include the module name so that source code can be located in the source tree easily. So, for example, java/sca/module/implementation-java would be in package structure org.apache.tuscany.implementation.java.*

+ +

Testing

+ +

Tuscany uses plain junit test cases to perform unit and integration testing, below is an example that can also be used as a template for writing new test cases; it demonstrates how to bootstrap the Tuscany SCA runtime in your test case, and because they are based on junit, you can run it from your IDE of choice or from Maven.

+
+
+/**
+ * Description of your test case and necessary details you find necessary
+ */
+public class YourTestCase extends TestCase {
+    private SCADomain domain;
+    private YourService service;
+
+
+    @Override
+    protected void setUp() throws Exception {
+    	domain = SCADomain.newInstance("YourTest.composite");
+        service = domain.getService(YourService.class, "serviceName");
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+    	domain.close();
+    }
+
+
+   ...
+}
+
+
+

Note that we use surefire maven plugin to run the unit and integration tests, and in most cases, they are configured to match a **/*TestCase.java file name pattern. Because of this, if your test case has a different file name pattern, you might execute it from your IDE of choice, but the maven build won't execute the test.

+ +

Maven Build Structure

+ +

We use the term Module to refer to the leaf of maven tree.

+
    +
  • sca/pom.xml's parent will be pom/parent/pom.xml
  • +
  • Other poms will use the pom from the parent folder as parent pom
  • +
  • Group id: org.apache.tuscany.sca
  • +
  • Version of our modules will be specified once in java/sca/pom.xml, child poms don't need specify a version as they get it from their parent
  • +
  • pom names begin Apache Tuscany SCA
  • +
  • Eclipse projects are generated for all built modules using mvn -Peclipse eclipse:eclipse
  • +
+ + +

Adding a new module and not ready to integrate?

+ +

'work-in-progress' modules can be worked on in the same source tree and yet not break the top-down build. You can do this by not listing your module(s) in java/sca/modules/pom.xml.

+ +

Reporting issues and providing patches

+ +

Reporting an Issue or Asking For New Features

+ +

Please use ApacheJIRA system to report bugs or request new features. First time users need to create a login.

+ +

Search the existing JIRAs to see if what you want to create is already there. If not, create a new one. Make sure JIRAs are categorized correctly using JIRA categories and are created under the correct component area. Please include as much information as possible in your JIRA to help resolve the issue quicker. This can include version of the software used, platforms running on, steps to reproduce, test case, details of your requirement or even a patch if you have one.

+ +

Submitting a Patch

+ +

Please follow the steps below to create a patch. It will be reviewed and committed by a committer in the project.

+ +
    +
  • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
  • +
  • Confirm that the problem is fixed and include a test case where possible to help the person who is applying the patch to verify the fix.
  • +
  • Generate the patch using svn diff File > patchfile
  • +
  • Try to give your patch files meaningful names, including the JIRA number
  • +
  • Add your patch file as an attachment to the associated JIRA issue +
      +
    • Clicking on the 'Patch Available' box in the screen where the patch is being submitted will help identify available patches quicker.
    • +
    +
  • +
+ + +

How do I get my JIRAs into a release?

+

You can always propose a release and drive the release with the content that you want. Another way to get a JIRA into a release is by providing a patch or working with other community members (volunteers) to help you get the problem fixed. You can also help by providing test cases.

+ +

Each release is managed by a release manager. Make sure that the Release Manager is aware of why a fix to a JIRA is important to your business. In general, the best attempt is made to include as many JIRAs as possible depending on the level of community help. The voting mechanism in the JIRA system can be used to raise the importance of a JIRA to the attention of the release manager. Adding comments in the JIRA would help the release manager understand why a JIRA is important to include in a given release.

+ +

How is a release done?

+

Anyone can volunteer to be a release manager and drive a release. Based on Apache guidelines, a release requires at least three PMC +1 votes and more +1s than -1s. A release can not be vetoed so a -1 does not block a release. The steps for how to create a Tuscany release are documented here

+

+ +

Development Hints

+ + +

Generating Eclipse WTP Web Projects for Webapp samples

+ +

If you're using Eclipse WTP and want to get WTP Web Projects generated
+for our Webapp samples you can simply pass a -Dwtpversion=1.5 option to
+the usual mvn eclipse:eclipse command, like this:
+mvn -Dwtpversion=1.5 -Peclipse eclipse:eclipse

+ +

The magic -Dwtpversion=1.5 option will add the WTP Web project nature to
+all the Eclipse projects with <packaging>war</packaging> in their Maven
+pom.xml. You'll then be able to add these projects to a WTP Tomcat or
+Geronimo Server configuration, to publish and run them straight from
+your Eclipse workspace.

+ +

h3: Generating Dependencies for Ant in Samples

+ +

Figuring out the package dependency to include in Ant build.xml can be a pain. Here is a quick
+script which works in Linux environment for war files.

+
+
+jar tvf sample-feed-aggregator-webapp.war | grep .jar | awk '{ printf "%s\n", $8 }' | 
+   sed -e "s/WEB-INF\/lib\///" | awk '{ printf "<include name=\"%s\"/>\n", $1 }' | grep -v tuscany
+
+
+ +

How to do a release of Tuscany?

+

Here is the Checklist for doing a Tuscany SCA Java release .

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-development.html b/site/trunk/site-publish/sca-java-development.html new file mode 100644 index 0000000000..c3df60ac71 --- /dev/null +++ b/site/trunk/site-publish/sca-java-development.html @@ -0,0 +1,337 @@ + + + + + + + SCA Java Development : Apache Tuscany + + + + + + + + + + + + + +
+ + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > SCA Java Development + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + + + + + + +
How to get involved in development of Java SCA?
+

This document is the development guideline for SCA Java project.

+ + + + + +


+
+ +

General Guide

+ +

Welcome to the Tuscany SCA Java subproject project. We look forward to your participation and try to help you get on board. Feel free to ask your questions on the mailing list.

+ +

Here are some general guidelines we use in this project.

+
    +
  • Java SCA sub-project aims to provide enterprise-grade service infrastructure based on SCA.
  • +
  • Tuscany SCA is not just a reference implementation. We encourage innovation based on the tenets of SCA. A lot of work we do provides feedback to the specifications.
  • +
  • The Java SCA infrastructure should provide flexibility and choice. It should not dictate programming models but support many.
  • +
  • The Java SCA infrastructure is very modularized and is designed to be highly extensible so users can customize it to fit their needs.
  • +
+ + +

Getting Source

+ +

The Java SCA project Subversion repository is located at https://svn.apache.org/repos/asf/incubator/tuscany/java/sca.
+The repository can also be viewed online at http://svn.apache.org/viewvc/incubator/tuscany/java/

+ +

Anyone can check code out of Subversion. You only need to specify a username and password in order to update the Subversion repository, and only Tuscany committers have the permissions to do so.

+ +

Checking out code from Subversion

+ +

Use the command as follows (note that it uses http scheme so if you're a committer change it to https):

+
+
svn checkout http://svn.apache.org/repos/asf/incubator/tuscany/java/sca
+
+ +

Committing Changes to Subversion

+ +

Any Tuscany committer should have a shell account on svn.apache.org. Before you can commit, you'll need to set a Subversion password for yourself. To do that, log in to svn.apache.org and run the command svnpasswd.

+ +

Once your password is set, you can use a command like this to commit:

+
+
svn commit
+
+

If Subversion can't figure out your username, you can tell it explicitly:

+
+
svn --username <name> commit
+
+

Subversion will prompt you for a password, and once you've entered it, it will remember it for you. Note this is the password you configured with svnpasswd not your shell or other password.

+ +

Getting Setup For Development

+ + +

Prerequisites

+ +

Java SCA requires the following:

+ + + +

Build tree structure

+ +

The build tree is designed to facilitate modular development and releases. Maven modules are grouped by how they are released under an hierarchy. For example, all kernel-related modules are grouped under the 'kernel' module.

+ +

The individual modules can be built separately or build with top-down build.

+ +

top-down build

+

recommended approach

+ +

Check out all of the java source code.

+
+
svn checkout https://svn.apache.org/repos/asf/incubator/tuscany/java
+
+

Building the SCA source code is simple

+
+
cd java/sca
+mvn
+
+

It should work even if you start with an empty Maven local repository, and it should always work. This assumes that maven is able to retrieve a SNAPSHOT version of SDO (and of course the rest of software that SCA depends on) as we haven't built anything other than SCA here.

+ +

There can be occasional problems downloading artifacts from remote Maven repositories so if mvn fails with network related sounding messages sometimes just trying again can fix the problem.

+ +

Building individual modules

+ +

This section needs to be updated. We still have the ability to build modules.

+ +

To build individual modules, please see the specific instructions for each top-level module.

+ +

The build tree contains the following 'top-level' modules:

+ +

kernel
+Contains the modules that make up the Java SCA foundation, including:

+
    +
  • api - Contains the Java SCA proprietary programming model APIs
  • +
  • host_api - Contains APIs for interacting with the kernel
  • +
  • spi - Defines kernel extension points. Includes interfaces and abstract extension classes.
  • +
  • core - The kernel implementation
  • +
+ + +

Kernel may be checked out and built independently from the other modules such as extensions.

+ +

To checkout kernel, do:

+
+
svn checkout https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/kernel
+
+

To build kernel, do:

+
+
mvn
+
+

Note that mvn -o may be used once all kernel dependencies have been downloaded

+ +

runtime
+Contains modules for deploying Java SCA to various runtimes, e.g. in a Servlet Container or as a standalone runtime:

+
    +
  • itest - modules for embedding Java SCA in Maven as an iTest Plugin. Used for integration testing.
  • +
  • standalone - modules for deploying Java SCA as a standalone container
  • +
  • services - various runtime services such as JMX
  • +
  • webapp - modules for embedding Java SCA in a Servlet container
  • +
+ + +

To checkout runtime, do:

+
+
svn checkout https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/runtime
+
+

The runtime modules may be built together or independently as sub-modules using the mvn command.

+ +

extensions
+Contains kernel extensions such as bindings for transport protocols, component implementation types to enable the use of alternative programming models, etc. Each extension sub-module builds independently.

+ +

services
+Contains kernel extensions that provide specific services such as persistence for core runtime operations. Each sub-module builds independently.

+ +

Coding Guidelines

+ +

There are a few simple guidelines when developing for JAVA SCA:

+
    +
  • Formatting standards are defined by the .checkstyle and .pmd configurations in the source repository. Please be sure to check code is formatted properly before doing a checkin (see below). If you are unfamiliar with Checkstyle or PMD, please see http://checkstyle.sourceforge.net/ and http://pmd.sourceforge.net/. Consistent formatting makes it easier for others to follow and allows diffs to work properly.
  • +
+ + +
    +
  • Always include the Apache License Headers on all files and the following version tag:
  • +
+ + +
+
@version $Rev$ $Date$
+
+
    +
  • Please attempt to accompanied code with at least unit tests or verify it by existing tests before submitting a patch or checking in.
  • +
+ + +
    +
  • Do not checkin IDE-specific resources such as project files.
  • +
+ + +
    +
  • Prior to check-in, perform a clean build and run the complete battery of unit tests for the current module from the command line with Checkstyle enabled, as in:
  • +
+ + +
+
mvn clean
+mvn -o -Psourcecheck
+
+
    +
  • Please do not perform a checkin using an IDE as doing so is frequently problematic.
  • +
+ + +
    +
  • Include a descriptive log message for checkins, for example "fixed such and such problem".
  • +
+ + +

Naming conventions to increase consistency

+ +

Folder Names: Please use all lowercases and dashes in folder names (like in the jar names)

+
    +
  • Maven artifact id = tuscany-<folder name>
  • +
+ + +

Package names: Package names within modules should include the module name so that source code can be located in the source tree easily. So, for example, java/sca/module/implementation-java would be in package structure org.apache.tuscany.implementation.java.*

+ +

Testing

+ +

This section seems to be outdated since integration tests can also be done without maven integration test plugin

+ +

It is expected checkins always be accompanied by unit test and integration tests when appropriate. Unit tests should verify specific behavior relating to a single class or small set of related classes; integration tests verify code paths across subsystems. Testcases should be documented and clearly indicate what they verify. Also, avoid things that may cause side-effects when possible such as access of external resources.

+ +

We encourage and follow continuous integration. Martin Fowler has a concise write-up here

+ +

We have found EasyMock extremely useful for unit testing and have standardized on it.

+ +

When writing integration tests, use the Maven Integration Test Plugin

+ +

Maven Build Structure

+ +

We use the term Module to refer to the leaf of maven tree.

+
    +
  • sca/pom.xml's parent will be pom/parent/pom.xml
  • +
  • Other poms will use the pom from the parent folder as parent pom
  • +
  • Group ids:
    + org.apache.tuscany.sca
    + org.apache.tuscany.sca.samples,
    + org.apache.tuscan.sca.itest
  • +
  • Version of our modules will be specified once in java/sca/pom.xml, child poms don't need specify a version as they get it from their parent
  • +
  • pom names begin Apache Tuscany SCA
  • +
  • Eclipse projects are generated for all built modules using mvn -Peclipse eclipse:eclipse
  • +
+ + +

Adding a new module and not ready to integrate?

+ +

'work-in-progress' modules can be worked on in the same source tree and yet not break the top-down build. You can do this by not listing your module(s) in java/sca/modules/pom.xml.

+ +

+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-documentation.html b/site/trunk/site-publish/sca-java-documentation.html new file mode 100644 index 0000000000..c62f91424e --- /dev/null +++ b/site/trunk/site-publish/sca-java-documentation.html @@ -0,0 +1,112 @@ + + + + + + + SCA Java Documentation : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java Subproject > SCA Java Documentation + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
+ + + +

Thanks for your interest in Apache Tuscany Java SCA.

+ +

If you are just getting started and are interested to learn about SCA

+
    +
  • User Guide
    +This introduces you to SCA concepts and shows you how to build simple sample applications.
  • +
+ + +

If you would like to contribute to the project itself, we have a

+
    +
  • Developer Guide
    +This explains how to build Tuscany from the latest source code and also how to contribute code back to the project.
  • +
+ + + + + + + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-event-processing.html b/site/trunk/site-publish/sca-java-event-processing.html new file mode 100644 index 0000000000..ce6556b26e --- /dev/null +++ b/site/trunk/site-publish/sca-java-event-processing.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Event Processing + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Event Processing + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

This page is the top level page for information relating to the SCA Java Event Processing work.

+ +

There is a Prototype project for SCA Event processing being carried out in a Sandbox associated with the SCA Java project (sandbox/event). These pages help to describe the work taking place in that sandbox.

+ +

Event Processing Compared with Service Processing

+ +

Currently SCA describes a programming model which is concerned with Service Processing - business function is developed as a series of services, which are implemented by components. Each service may have one or more operations. Each operation typically has (zero or more) request message and optionally some response message. One important aspect of a service operation is that the client invokes a specific operation, providing the necessary request message, and the client knows that a specific service implementation will execute the operation - and the operation usually has some implied business semantics associated with it. SCA provides a model for writing services and service clients at the implementation language level (eg in Java) and also an Assembly level model for composing sets of components together, satisfying service references made by one component by wiring them to a component that provides the service.

+ +

Event processing is a different approach to programming business applications, offering a more loose coupled approach to application design. In event processing, one component can produce a message, called an Event, which it makes available for other components to consume. The Producer component produces the event whether or not there are actually any Consumer components listening for that event. The event can be received by zero, one or many Consumer components. When a Producer produces an event, no semantics are implied for what processing should happen if the event is consumed - a consumer component is free to do what it wants with the event. A Consumer may consume only one type of event, or it may consume many different types of events.  A consumer may consume events from only one producer or it may consume events from many different producers.

+ +

As for Service Processing, SCA Event Processing is described at two levels:

+
    +
  1. The programming model for writing component implementations with event consumers and/or event producers
  2. +
  3. The Assembly model for combining multiple components into an application, linking producers with consumers
  4. +
+ + + +

These are extensions to the standard SCA Service Processing model - not replacements, so that components may offer or use services alongside the producing or consuming of events.

+ +

The following page describes the Event Processing model for Java implementations:
+Java Implementation Model for Event Processing

+ + +

The following page describes the Event Processing Assembly model:
+Assembly Model for Event Processing

+ +

The following page describes the sandbox implementation of the SCA Event Processing Model:
+Sandbox Implementation of SCA Event Processing

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-extension-developer-guide.data/ExtendingTuscany.ppt b/site/trunk/site-publish/sca-java-extension-developer-guide.data/ExtendingTuscany.ppt new file mode 100644 index 0000000000..e04b2e5b43 Binary files /dev/null and b/site/trunk/site-publish/sca-java-extension-developer-guide.data/ExtendingTuscany.ppt differ diff --git a/site/trunk/site-publish/sca-java-extension-developer-guide.html b/site/trunk/site-publish/sca-java-extension-developer-guide.html new file mode 100644 index 0000000000..4bacbebae7 --- /dev/null +++ b/site/trunk/site-publish/sca-java-extension-developer-guide.html @@ -0,0 +1,245 @@ + + + + + + + SCA Java Extension Developer Guide : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java Subproject > Java SCA Documentation Menu > SCA Java Extension Developer Guide + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+
Apache Tuscany SCA Java Extension Guide
+ +
+ +

This page is work in progress. Thanks for your contribution
+This is a guide for developers who would like to extend Tuscany SCA Java.

+ + + + + + +

A presentation on how to extend Tuscany in Microsoft PowerPoint format

+

ExtendingTuscany

+ + +

What is an extension?

+ +

Extension is a module (or a set of modules),when built with Tuscany SCA, can extend it to work with additional bindings, language implementations, programming models or databindings.

+ +

SCA assembly model is defined such that extensions can be added for new interface types or for new implementation types such as ruby and python, or new binding types such as CXF. However, the definition of extension SPIs is left to the implementor. Tuscany SCA Java provides a simple set of SPIs for implementing extensions. It also defines additional extension points such as data binding, for example support for SDO and JAXB.

+ +

This guide explains the steps to add each of these extension types. Please help us refine the guide as you go through the steps of adding extensions.

+ +

Name spaces used by extensions

+ + +

How to add a new component implementation?

+ +

Musings on Adding a New Component Type by Mike E 

+ +

How to add a new binding?

+ + +

How to add a new interface binding?

+ + +

How to add a new databinding?

+ + +

General guide for developing extensions

+ +
    +
  • Familiarize yourself with SCA 1.0 Assembly and the SCA Java 1.0 programming model. Specifications can be found at www.osoa.org.
  • +
  • Never reference any classes in core. These classes are implementation-specific and subject to change; they are not part of the public SPI contract.
  • +
  • Use autowire when assembling extension components.
  • +
  • Do not play with classloaders such as setting the current context classloader unless it is absolutely necessary, i.e. a library used by an extension makes assumptions about context classloaders. Ideally the library can be refactored to not make these assumptions. If not, make sure the extension properly resets the current context classloader.
  • +
+ + +

Detail on extension architecture

+ + +

The ExtensionPointRegistry

+ +
+
package org.apache.tuscany.sca.core;
+
+
+/**
+ * The registry for the Tuscany core extension points. As the point of contact
+ * for all extension artifacts this registry allows loaded extensions to find
+ * all other parts of the system and register themselves appropriately.
+ *
+ * @version $Rev: 539355 $ $Date: 2007-05-18 03:05:14 -0700 (Fri, 18 May 2007) $
+ */
+public interface ExtensionPointRegistry {
+
+    /**
+     * Add an extension point to the registry
+     * @param extensionPoint The instance of the extension point
+     */
+    void addExtensionPoint(Object extensionPoint);
+
+    /**
+     * Get the extension point by the interface
+     * @param extensionPointType The lookup key (extension point interface)
+     * @return The instance of the extension point
+     */
+    <T> T getExtensionPoint(Class<T> extensionPointType);
+
+    /**
+     * Remove an extension point
+     * @param extensionPoint The extension point to remove
+     */
+    void removeExtensionPoint(Object extensionPoint);
+}
+
+ +

The ModuleActivator

+ +
+
package org.apache.tuscany.core;
+
+import java.util.Map;
+
+/**
+ * ModuleActivator represents a module that plugs into the Tuscany system. Each module should
+ * provide an implementation of this interface and registry the implementation class by defining
+ * a file named as "META-INF/services/org.apache.tuscany.spi.bootstrp.ModuleActivator". The
+ * content of the file is the class name of the implementation. The implementation class must
+ * have a no-arg constructor. The same instance will be used to invoke all the methods during
+ * different phases of the module activation.
+ *
+ * @version $Rev: 529327 $ $Date: 2007-04-16 10:10:43 -0700 (Mon, 16 Apr 2007) $
+ */
+public interface ModuleActivator {
+    /**
+     * Get a map of the extension points defined by this module. The key is the
+     * java interface to represent the extension point and the the value is the
+     * instance of the implementation of the interface.
+     *
+     * @return All the extension points defined by this module
+     */
+    Map<Class, Object> getExtensionPoints();
+
+    /**
+     * This method is invoked when the module is started by the Tuscany system.
+     * It can be used by this module to registr extensions against extension
+     * points.
+     *
+     * @param registry The extension point registry
+     */
+    void start(ExtensionPointRegistry registry);
+
+    /**
+     * This method is invoked when the module is stopped by the Tuscany system.
+     * It can be used by this module to unregister extensions against the
+     * extension points.
+     *
+     * @param registry The extension point registry
+     */
+    void stop(ExtensionPointRegistry registry);
+}
+
+

The ModuleActivator represents a module that plugs into the Tuscany system.
+Each module should provide an implementation 3 of this interface and
+registry the implementation class by defining a file named as
+"META-INF/services/org.apache.tuscany.spi.bootstrp.ModuleActivator" 4. The
+content of the file is the class name of the implementation. The
+implementation class must have a no-arg constructor. The same instance will
+be used to invoke all the methods during different phases of the module
+activation.

+ +

During bootstraping, the following sequence will happen:

+ +

1) All the module activators will be discovered by the presence of
+META-INF/services/org.apache.tuscany.spi.bootstrp.ModuleActivator
+2) The activator class is instantiated using the no-arg constructor.
+3) ModuleActivator.getExtensionPoints() is invoked for all modules and the
+extension points contributed by each module are added to the
+ExtensionRegistry.
+4) ModuleActivator.start(ExtensionRegistry) is invoked for all the modules.
+The module can then get interested extension points and contribute
+extensions to them. The contract bwteen the extension and extension point is
+private to the extension point. The extension point can follow similar
+patterns such as Registry. If it happens that one extension point has a
+dependency on another extension point, they can linked at this phase.

+ +

During shutting down, the stop() method is invoked for all the modules to
+perform cleanups. A module can choose to unregister the extension from the
+extension points.

+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany-V01.pdf b/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany-V01.pdf new file mode 100644 index 0000000000..dcc013d027 Binary files /dev/null and b/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany-V01.pdf differ diff --git a/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany.pdf b/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany.pdf new file mode 100644 index 0000000000..c2fcc3cfbc Binary files /dev/null and b/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany.pdf differ diff --git a/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany.ppt b/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany.ppt new file mode 100644 index 0000000000..e04b2e5b43 Binary files /dev/null and b/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany.ppt differ diff --git a/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany1.pdf b/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany1.pdf new file mode 100644 index 0000000000..c2fcc3cfbc Binary files /dev/null and b/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany1.pdf differ diff --git a/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany1.ppt b/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany1.ppt new file mode 100644 index 0000000000..e04b2e5b43 Binary files /dev/null and b/site/trunk/site-publish/sca-java-extension-development-guide.data/ExtendingTuscany1.ppt differ diff --git a/site/trunk/site-publish/sca-java-extension-development-guide.html b/site/trunk/site-publish/sca-java-extension-development-guide.html new file mode 100644 index 0000000000..16d6d7a64c --- /dev/null +++ b/site/trunk/site-publish/sca-java-extension-development-guide.html @@ -0,0 +1,422 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Extension Development Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Extension Development Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
+ + + + + + + + + + + +
Resources
+
+

+
This page is under construction- You are welcome to help and complete it
+
+ +

A presentation on how to extend Tuscany in Microsoft PowerPoint format
+

+ +

Extending Tuscany PPT PDF

+ +

What is an extension?
+

+ +

Extension is a module (or a set of modules),when built with Tuscany SCA, can extend it to work with additional bindings, language implementations, programming models or databindings.

+ +

SCA assembly model is defined such that extensions can be added for new interface types or for new implementation types such as ruby and python, or new binding types such as CXF. However, the definition of extension SPIs is left to the implementor. Tuscany SCA Java provides a simple set of SPIs for implementing extensions. It also defines additional extension points such as data binding, for example support for SDO and JAXB.

+ +

This guide explains the steps to add each of these extension types. Please help us refine the guide as you go through the steps of adding extensions.

+ +

Name spaces used by extensions

+ +

Extensions sometimes contribute addtional elements or attributes to the SCA XML configuration model. These elements or attributes should be qualified as follows:

+ + + +

How to add a new component implementation?
+

+ +

Musings on Adding a New Implementation Type by Mike E 

+ +

How to add a new binding?
+

+ + +

How to add a new interface binding?
+

+ + +

How to add a new databinding?
+

+ + +

How to add a new monitor extension?
+

+ + +

Need for Monitor Extension

+ +

The need for monitor extension came as a requirement, to have a customized exception handling on Tuscany runtime especially when the user input errors are determined while reading, resolving and building phase of the contribution within the Tuscany runtime. Here different users/vendors using Tuscany with their products wanted to ignore some of the user input errors and allow the runtime to proceed further, while the others wanted to stop processing when a error is determined at the end of each phase. Another important need for a monitor extension is to validate the user inputs (via contributions) and report all the issues identified in one go (Example: As how the java compiler does for java code).

+ +

Understanding message conversion using monitor

+ +

1) Errors and warnings are logged with the monitor as problems and the processing continues. Exceptions won't be thrown, where ever possible. Processing here covers any processing of user input, i.e. contributions and the artifacts they contain.
+2) After each phase namely read, resolve and build contribution, the problems are read from the monitor for display to the user (currently this will have already happened as our current monitor will just log errors and warnings as it receives them but you can imagine more capable monitors).
+3) The controlling logic may look at the errors and warnings it is reporting to the user and prevent further processing occurring. Or it may allow processing to continue. This depends on which bit of processing we are talking about and what errors have been reported. Sample for the controlling logic is shown below

+
+
+private void analyseProblems() throws Exception {
+    for (Problem problem : monitor.getProblems()){
+        // look for any reported errors. Schema errors are filtered
+        // out as there are several that are generally reported at the
+        // moment and we don't want to stop
+        if ((problem.getSeverity() == Severity.ERROR) && (!problem.getMessageId().equals("SchemaError"))) {
+            if (problem.getCause() != null){
+                throw new Exception(problem.getCause());
+            } else {
+                throw new Exception(problem.toString());
+            }
+        }
+    }
+}
+
+
+ +

Creating a new monitor extension

+ +

NOTE: Please have a look at the interface design of Monitor, Problem and MonitorFactory from monitor module in the Tuscany source code.

+ +

Step 1) Create a class MyMonitorImpl.java which implements the Monitor interface.

+
+
+public class MyMonitorImpl implements Monitor {
+    private static final Logger logger = Logger.getLogger(DefaultMonitorImpl.class.getName());
+    // Cache all the problem reported to monitor for further analysis
+    private List<Problem> problemCache = new ArrayList<Problem>();
+    public void problem(Problem problem) {
+        // Your custom code to handle the problem
+    }
+    // Returns a list of reported problems.
+    public List<Problem> getProblems(){
+        return problemCache;
+    }
+}
+
+
+

Step 2) Create a class MyMonitorFactoryImpl.java which implements the MonitorFactory interface.

+
+
+public class MyMonitorFactoryImpl implements MonitorFactory {
+    private Monitor monitor = null;
+    public Monitor createMonitor() {
+        if (monitor == null) {
+            monitor = new MyMonitorImpl();
+        }
+        return monitor ;
+    }
+}
+
+
+

Step 3) Create a plain text file named as "META- INF/services/org.apache.tuscany.sca.monitor.MonitorFactory"
+Register the extension by adding a line in this file as (org.apache.tuscany.sca.monitor.impl.MyMonitorFactoryImpl)

+ +

Initialize and create an instance of the monitor

+ +

Monitors can be initialized using the utility extensions as shown below.

+
+
+UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
+MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
+monitor = monitorFactory.createMonitor();
+
+
+ +

General guide for developing extensions
+

+ +
    +
  • Familiarize yourself with SCA 1.0 Assembly and the SCA Java 1.0 programming model. Specifications can be found at www.osoa.org.
  • +
  • Never reference any classes in core. These classes are implementation-specific and subject to change; they are not part of the public SPI contract.
  • +
  • Use autowire when assembling extension components.
  • +
  • Do not play with classloaders such as setting the current context classloader unless it is absolutely necessary, i.e. a library used by an extension makes assumptions about context classloaders. Ideally the library can be refactored to not make these assumptions. If not, make sure the extension properly resets the current context classloader.
  • +
+ + +

Detail on extension architecture
+

+ + +

The ExtensionPointRegistry

+ +
+
+package org.apache.tuscany.sca.core;
+
+
+/**
+* The registry for the Tuscany core extension points. As the point of contact
+* for all extension artifacts this registry allows loaded extensions to find
+* all other parts of the system and register themselves appropriately.
+*
+* @version $Rev: 539355 $ $Date: 2007-05-18 03:05:14 -0700 (Fri, 18 May 2007) $
+*/
+public interface ExtensionPointRegistry {
+
+/**
+* Add an extension point to the registry
+* @param extensionPoint The instance of the extension point
+*/
+void addExtensionPoint(Object extensionPoint);
+
+/**
+* Get the extension point by the interface
+* @param extensionPointType The lookup key (extension point interface)
+* @return The instance of the extension point
+*/
+<T> T getExtensionPoint(Class<T> extensionPointType);
+
+/**
+* Remove an extension point
+* @param extensionPoint The extension point to remove
+*/
+void removeExtensionPoint(Object extensionPoint);
+}
+
+
+ +

The ModuleActivator

+ +
+
+package org.apache.tuscany.sca.core;
+
+
+/**
+* ModuleActivator represents a module that plugs into the Tuscany system. Each
+* module should provide an implementation of this interface and register the
+* ModuleActivator implementation class by defining a file named
+*
+* "META-INF/services/org.apache.tuscany.core.ModuleActivator"
+*
+* The content of the file is the class name of the ModuleActivator implementation.
+* The implementation class must have a no-arg constructor. The same instance
+* will be used to invoke all the methods during different phases of the module
+* activation. Note that the start and stop methods defined by this interface
+* take a reference to the Tuscany SCA runtime ExtensionPointRegistry. This
+* gives the ModuleActivator the oppotunity to add extension points to the
+* registry as it is requested to start up and remove them when it is requested
+* to shut down.
+*
+* @version $Rev: 564429 $ $Date: 2007-08-09 16:49:11 -0700 (Thu, 09 Aug 2007) $
+*/
+public interface ModuleActivator {
+
+/**
+* This method is invoked when the module is started by the Tuscany system.
+* It can be used by this module to registr extensions against extension
+* points.
+*
+* @param registry The extension point registry
+*/
+void start(ExtensionPointRegistry registry);
+
+/**
+* This method is invoked when the module is stopped by the Tuscany system.
+* It can be used by this module to unregister extensions against the
+* extension points.
+*
+* @param registry The extension point registry
+*/
+void stop(ExtensionPointRegistry registry);
+}
+
+
+

The ModuleActivator represents a module that plugs into the Tuscany system. Each module can optionally provide an implementation of this interface and
+register the implementation class by defining a file named as "META-INF/services/org.apache.tuscany.sca.core.ModuleActivator". The content of the file is the class name of the implementation. The implementation class must have a no-arg constructor. The same instance will be used to invoke all the methods during different phases of the module activation.

+ +

During bootstraping, the following sequence will happen:

+ +

1) All the module activators will be discovered by the presence of "META-INF/services/org.apache.tuscany.sca.core.ModuleActivator"
+2) The activator class is instantiated using the no-arg constructor.
+3) ModuleActivator.getExtensionPoints() is invoked for all modules and the extension points contributed by each module are added to the ExtensionRegistry.
+4) ModuleActivator.start(ExtensionRegistry) is invoked for all the modules. The module can then get interested extension points and contribute
+extensions to them. The contract bwteen the extension and extension point is private to the extension point. The extension point can follow similar
+patterns such as Registry. If it happens that one extension point has a dependency on another extension point, they can linked at this phase.

+ +

During shutting down, the stop() method is invoked for all the modules to perform cleanups. A module can choose to unregister the extension from the
+extension points.

+ +

Lazy instantiation of extensions

+ +

To reduce the startup time and memory footprint, most of the extension points in Tuscany now supports lazy instantiation of the registered extensions. The following describes the pattern using org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor as an example.

+ +

1) Create a plain text file named as "META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor"
+2) Register an extension by adding a line in the file

+
+
+org.apache.tuscany.sca.implementation.java.xml.JavaImplementationProcessor;qname=http://www.osoa.org/xmlns/sca/1.0#implementation.java,model=org.apache.tuscany.sca.implementation.java.JavaImplementation
+
+
+

The simple syntax is: <implementation_class_name>;<parameter_name>=<parameter_value>,<parameter_name>=<parameter_value>

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-extension-guide.html b/site/trunk/site-publish/sca-java-extension-guide.html new file mode 100644 index 0000000000..5e216833c0 --- /dev/null +++ b/site/trunk/site-publish/sca-java-extension-guide.html @@ -0,0 +1,404 @@ + + + + + + + SCA Java Extension Guide : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > Java SCA Documentation Menu > SCA Java Extension Guide + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+ + + + +
Development
+ +

This is view of available modules for extensions
+Should this be linked from the extension guide?

+ +

Required Modules

+ +

These modules are always present in the Tuscany SCA runtime

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Module Short Description   
assembly The java interfaces and implementation classes for the SCA assembly model   
assembly-xml The processors that load the basic SCA assembly model from XML (SCDL) files   
assembly-java-dsl The java domain specific language for describing SCA assembly models   
interface The representation of interfaces independent of the interface definition languages   
interface-java The interfaces and implementation classes for java interfaces   
interface-java-xml The processors that load the interface.java model from the XML (SCDL) or introspect the java classes   
interface-wsdl The interfaces and implementation classes for WSDL interfaces   
interface-wsdl-xml The processors that load the interface.wsdl model from the XML (SCDL) or introspect the WSDL definition   
policy The java interfaces and implementation classes for the SCA policy model   
+ +

Extension Modules

+ +

These modules are only present in the Tuscany SCA runtime if their jar is included in the runtime CLASSPATH

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Module Short Description   
binding-jms Not yet complete   
binding-jsonrpc    
binding-rmi    
binding-ws    
binding-ws-axis2    
binding-ws-xml The processors that parse the <binding.ws> to create model objects   
commonj-api    
contribution Models and SPIs for the contribution service   
contribution-impl Implementation of the contribution service and a set of built-in package/artifact processors   
core The core that handles bootstrapping and provides life cylce, event and scope managements
+The runtime wiring and invocation chains
  
core-databinding The module that contributes interceptors, databinding and transformers to core   
core-spi The SPIs for core   
core-spring    
databinding The SPIs for the databinding framework, default implementations and built-in transformers   
databinding-axiom The extension that provides the support for AXIOM databinding   
databinding-jaxb The extension that provides the support for JAXB databinding   
databinding-sdo The extension that provides the support for SDO databinding    
databinding-sdo-axiom The extension that provides the support optimzed SDO to AXIOM transformation   
discovery-jms    
host-embedded A simple embedded host that boots Tuscany core and application from the same classpath   
host-http The module that provides support for the HTTP protocol   
host-webapp    
http-jetty The integration between Tuscany and the Jetty web container   
http-tomcat The integration between Tuscany and the Tomcat web container   
implementation-java    
implementation-java-runtime    
implementation-java-xml    
implementation-script Support for SCA components implemented with scripting languages   
implementation-spring    
interface-java-runtime The runtime module that activates the java interface related extension points and extensions   
interface-wsdl-runtime The runtime module that activates the WSDL interface related extension points and extensions    
java2wsdl    
jmx Under construvtion   
sca-api    
wsdl2java    
+ +

Tools

+ +

These modules are not used in the main Tuscany SCA runtime but provide

+ + + + + + + + + + + + + + + + + + + +
Module Short Description   
maven-java2wsdl    
maven-wsdl2java    
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-extension-modules.html b/site/trunk/site-publish/sca-java-extension-modules.html new file mode 100644 index 0000000000..aaa4a411d2 --- /dev/null +++ b/site/trunk/site-publish/sca-java-extension-modules.html @@ -0,0 +1,404 @@ + + + + + + + SCA Java Extension Modules : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > Java SCA Subproject > Java SCA Documentation Menu > SCA Java Extension Modules + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ + +
+ + + + +
Development
+ +

This is view of available modules for extensions
+Should this be linked from the extension guide?

+ +

Required Modules

+ +

These modules are always present in the Tuscany SCA runtime

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Module Short Description   
assembly The java interfaces and implementation classes for the SCA assembly model   
assembly-xml The processors that load the basic SCA assembly model from XML (SCDL) files   
assembly-java-dsl The java domain specific language for describing SCA assembly models   
interface The representation of interfaces independent of the interface definition languages   
interface-java The interfaces and implementation classes for java interfaces   
interface-java-xml The processors that load the interface.java model from the XML (SCDL) or introspect the java classes   
interface-wsdl The interfaces and implementation classes for WSDL interfaces   
interface-wsdl-xml The processors that load the interface.wsdl model from the XML (SCDL) or introspect the WSDL definition   
policy The java interfaces and implementation classes for the SCA policy model   
+ +

Extension Modules

+ +

These modules are only present in the Tuscany SCA runtime if their jar is included in the runtime CLASSPATH

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Module Short Description   
binding-jms Not yet complete   
binding-jsonrpc    
binding-rmi    
binding-ws    
binding-ws-axis2    
binding-ws-xml The processors that parse the <binding.ws> to create model objects   
commonj-api    
contribution Models and SPIs for the contribution service   
contribution-impl Implementation of the contribution service and a set of built-in package/artifact processors   
core The core that handles bootstrapping and provides life cylce, event and scope managements
+The runtime wiring and invocation chains
  
core-databinding The module that contributes interceptors, databinding and transformers to core   
core-spi The SPIs for core   
core-spring    
databinding The SPIs for the databinding framework, default implementations and built-in transformers   
databinding-axiom The extension that provides the support for AXIOM databinding   
databinding-jaxb The extension that provides the support for JAXB databinding   
databinding-sdo The extension that provides the support for SDO databinding    
databinding-sdo-axiom The extension that provides the support optimzed SDO to AXIOM transformation   
discovery-jms    
host-embedded A simple embedded host that boots Tuscany core and application from the same classpath   
host-http The module that provides support for the HTTP protocol   
host-webapp    
http-jetty The integration between Tuscany and the Jetty web container   
http-tomcat The integration between Tuscany and the Tomcat web container   
implementation-java    
implementation-java-runtime    
implementation-java-xml    
implementation-script Support for SCA components implemented with scripting languages   
implementation-spring    
interface-java-runtime The runtime module that activates the java interface related extension points and extensions   
interface-wsdl-runtime The runtime module that activates the WSDL interface related extension points and extensions    
java2wsdl    
jmx Under construvtion   
sca-api    
wsdl2java    
+ +

Tools

+ +

These modules are not used in the main Tuscany SCA runtime but provide

+ + + + + + + + + + + + + + + + + + + +
Module Short Description   
maven-java2wsdl    
maven-wsdl2java    
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-found-a-bug.html b/site/trunk/site-publish/sca-java-found-a-bug.html new file mode 100644 index 0000000000..0326b733cb --- /dev/null +++ b/site/trunk/site-publish/sca-java-found-a-bug.html @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Found A Bug + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Found A Bug + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + + +
+

Reporting an Issue or Asking For New Features

+ +

Please use ApacheJIRA system to report bugs or request new features. First time users need to create a login.

+ +

Search the existing JIRAs to see if what you want to create is already there. If not, create a new one. Make sure JIRAs are categorized correctly using JIRA categories and are created under the correct component area. Please include as much information as possible in your JIRA to help resolve the issue quicker. This can include version of the software used, platforms running on, steps to reproduce, test case, details of your requirement or even a patch if you have one.

+ +

Submitting a Patch

+ +

Please follow the steps below to create a patch. It will be reviewed and committed by a committer in the project.

+ +
    +
  • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
  • +
  • Confirm that the problem is fixed and include a test case where possible to help the person who is applying the patch to verify the fix.
  • +
  • Generate the patch using svn diff File > patchfile
  • +
  • Try to give your patch files meaningful names, including the JIRA number
  • +
  • Add your patch file as an attachment to the associated JIRA issue +
      +
    • Clicking on the 'Patch Available' box in the screen where the patch is being submitted will help identify available patches quicker.
    • +
    +
  • +
+ + +

How do I get my JIRAs into a release?

+

You can always propose a release and drive the release with the content that you want. Another way to get a JIRA into a release is by providing a patch or working with other community members (volunteers) to help you get the problem fixed. You can also help by providing test cases.

+ +

Each release is managed by a release manager. Make sure that the Release Manager is aware of why a fix to a JIRA is important to your business. In general, the best attempt is made to include as many JIRAs as possible depending on the level of community help. The voting mechanism in the JIRA system can be used to raise the importance of a JIRA to the attention of the release manager. Adding comments in the JIRA would help the release manager understand why a JIRA is important to include in a given release.

+ +

How is a release done?

+

Anyone can volunteer to be a release manager and drive a release. Based on Apache guidelines, a release requires at least three PMC +1 votes and more +1s than -1s. A release can not be vetoed so a -1 does not block a release. The steps for how to create a Tuscany release are documented here

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-get-involved.html b/site/trunk/site-publish/sca-java-get-involved.html new file mode 100644 index 0000000000..9080443ff0 --- /dev/null +++ b/site/trunk/site-publish/sca-java-get-involved.html @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Get Involved + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Get Involved + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + + + + + + +
+

Getting Involved with Apache Tuscany - Welcome!

+ + + +
+

Getting involved in the project is easy. First, any help is welcome and we are excited to help you come on board. Here are some suggestions for how you can get involved in Apache Tuscany.

+ +
    +
  • Tuscany consists of several subprojects. Identify what areas you are interested in. Take a look at samples for that area.
  • +
  • Subscribe to the mailing list. If you are interested to get involved at the user level, subscribe to user mailing list. If you are interested to get involved in the development of Tuscany, subscribe to the developer list. Rememer that you can always unsubscribe later.
  • +
  • Help answer questions posted to the user mailing list for areas that you are familiar with. Your real usage experience can be very valueable to other users as well as developers on the project.
  • +
  • Would like to get invovled in development? Have new ideas? Start with the mailing list and share your thoughts.
  • +
  • Contribute to feature developement. Just let the community know what you'd like to work on. It is as easy as that.
  • +
  • Identify JIRAsin the area that you are interested in and provide patches.
  • +
  • Contribute to the user or developer documentation or website. Make your update on the on the Tuscany Wiki, create a JIRA and attach the link for your update.
  • +
  • If in doubt about where to start, send a note to the mailing list and mention your area of interest. Any questions is welcomed. We'd like you to be involved!
  • +
  • If you are new to open source and would like to learn more about how to work in open source, check this page.
  • +
+ + +
    +
  • Provide feedback: What is working well? What is missing? Get involved in creating software that addresses real pain points in SOA. Any help is good. Be part of the community.
  • +
+ + +

You can get a quick overview of many Tuscany information resources by watching the video "A Tour of the Tuscany Information Resources", Vcasmo site (password tuscany), You Tube.

+ +

communication

+ +

The Tuscany community also gets together on IRC. 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:

+ + + +

If you are not familiar with Apache, you can read more about how Apache works at this link.

+ + +
+ + +

Open CSA (SCA standards)

+ +

The SCA specifications which are implemented by Tuscany have moved to OASIS for formal
+standardization. This is being done as a series of OASIS technical
+committees, each dealing with one or more of aspects of the SCA specifications.

+ +

The OASIS activities are carried out in public. You can either observe the activities in the various technical committees, or join one or more of the committees to contribute to.

+ +

There are 6 SCA technical committees and by clicking on the links below you can find information about how to join as an observer or contributor. You will also have access to the minutes of meetings of the meetings on the same page.

+ + + + +
    +
  • OASIS SCAPolicy TC:Defining an SCA policy framework to simplify SOA application development
  • +
+ + +
    +
  • OASIS SCA Bindings TC:Standardizing bindings for SCA services and references to communication protocols, technologies and frameworks
  • +
+ + + + + + + + +
    +
  • OASIS SCA BPEL TC:Specifying how SCA component implementations for SOA can be written using BPEL
  • +
+ + +

Each OASIS SCA TC mailing list archives can be found here:

+ + + +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-get-started-with-coding.html b/site/trunk/site-publish/sca-java-get-started-with-coding.html new file mode 100644 index 0000000000..71ddf24f5b --- /dev/null +++ b/site/trunk/site-publish/sca-java-get-started-with-coding.html @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Get Started with Coding + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Get Started with Coding + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

This page is in progress. Goal is to provide developers with a quick walk through of key methods so that they can get started coding/debugging. Please help update this page. Thanks.

+ +

Bringing Up A Standalone Tuscany Runtime.

+

When starting to look at the Tuscany SCA Java runtime it is useful to understand what top level calls are made and why. Currently there are several implementations of a "Domain" object that can be used to start up Tuscany.

+ +
    +
  • DefaultSCADomain - a simple domain implementation that hides most of the details. Used in most test cases to date
  • +
  • EmbeddedSCADomain - used for embedding Tuscany into other systems
  • +
  • HotUpdateSCADomain - an example that automatically loads contributions as they change
  • +
  • EmbeddedNode - A node in a distributed domain
  • +
+ + +

Looking at EmbeddedSCADomain gives a good view of what is necessary to bring up the runtime. The class can be seen in svn here and a test program that uses it can be seen here.

+ +

The EmbeddedSCADomain class provides an implementation of an SCA domain that holds all the parts of the runtime together within a single VM. Creating and embedded domain is straighforward.

+
+
+domain = new EmbeddedSCADomain(cl, domainName);
+domain.start();
+
+
+ +

Calling the start methd on the domain causes all the runtime artifacts to be built. In particular all the runtime extensions, e.g. implementation, binding, databinding, host, are loaded and initialized using the java META-INF/services mechanism.

+ +

The next thing to do is load and SCA application into the domain. SCA applications are deployed as contributions. A contribution brings together composite file with all the resources required by the composite file, e.g. .java, .xml. xsd. wsdl etc. in a structure defined by the SCA assembly specification. The EmbeddedSCADomain provides a contribution service for reading contributions. Here the contribution service is retrieved and a contribution, identified by a URL, is added to it.

+ +
+
+ContributionService contributionService = domain.getContributionService();
+Contribution contribution = contributionService.contribute("http://calculator",
+                                                           contributionURL,
+                                                           null, //resolver,
+                                                           false);
+
+
+ +

This results in an in memory assembly model (see the assembly module).You can get at the deployable parts of the model by asking the resulting contribution.

+ +
+
+Composite composite = contribution.getDeployables().get(0);
+
+
+ +

The root of the deployable model is a composite which contains a hierarchy of components that will run in the Tuscany runtime. Various steps are now taken to turn the logical assembly model into runnable artifacts so that the components can be started.

+ +

First the the model composite gets added to a top level composite that the local domain controls.

+ +
+
+domain.getDomainComposite().getIncludes().add(composite);
+
+
+ +

Then there is a build stage where the parts of the logical model are linked together, references to services etc.

+ +
+
+domain.getCompositeBuilder().build(composite);
+
+
+ +

Then finally the runtime artifacts are created based on the logical model, these include the service endpoints and clients.

+ +
+
+domain.getCompositeActivator().activate(composite);
+
+
+ +

Once all this is done, each composite in the domain can be started independently. It is at this stage, for example, that the servlets required to support web services on an HTTP transport are actually deployed.

+ +
+
+for (Composite composite : domain.getDomainComposite().getIncludes()){
+    domain.getCompositeActivator().start(composite);
+}
+
+
+ +

The Distrubuted Runtime

+ +

When a domain is distributed across more than one VM an extra step is required. Once the logical model has been through the build stage there is a step where information is provided to the runtime so that remote services can be resolved automatically across the network. I.e. we link all of the services and reference in the assembly model into the notion of a distributed domain.

+ +
+
+distributedDomain.addDistributedDomainToBindings(composite);
+
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-getting-started-guides-1x.html b/site/trunk/site-publish/sca-java-getting-started-guides-1x.html new file mode 100644 index 0000000000..1c3d749536 --- /dev/null +++ b/site/trunk/site-publish/sca-java-getting-started-guides-1x.html @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SCA Java Getting Started Guides - 1.x : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Getting Started Guides - 1.x + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ + + + +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + diff --git a/site/trunk/site-publish/sca-java-getting-started-guides.html b/site/trunk/site-publish/sca-java-getting-started-guides.html new file mode 100644 index 0000000000..b8d25a22c1 --- /dev/null +++ b/site/trunk/site-publish/sca-java-getting-started-guides.html @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SCA Java Getting Started Guides : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +   + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Getting Started Guides + + + + User List | Dev List | Issue Tracker   + +
+ + + + + + + + + + + + +
+ + +
+ + + + +
+ +
+ +

place holder

+ +
+ +
+ +
+ + +
+ + + + + + + + + + + + + website stats + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-hostembedded.html b/site/trunk/site-publish/sca-java-hostembedded.html new file mode 100644 index 0000000000..8772e3bb8b --- /dev/null +++ b/site/trunk/site-publish/sca-java-hostembedded.html @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA JAVA host.embedded + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA JAVA host.embedded + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

host.embedded

+ +

The embedded host extension provides some simple options for embedding the SCA runtime in other applications such as the programs that the Apache Tuscany project uses for tests and for its sample applications.

+ +

SCADomain

+ +

You will see SCADomain used in many of the project's test and sample applications in the following form:

+ +
+
+// intialize the Tuscany SCA Java runtime and provide a contribution
+SCADomain scaDomain = SCADomain.newInstance("Calculator.composite");
+
+// a self reference to a service in the contribution
+CalculatorService calculatorService = scaDomain.getService(CalculatorService.class, "CalculatorServiceComponent");
+
+// do some work with the service
+int result = calculatorService.add(3, 2)
+
+// shut down the Tuscany SCA Java runitme
+scaDomain.close();
+
+
+ +

SCADomain provides an interface for creating a domain and adding contributions. Once the domain is initialize it can be used to find services and references from the domain so that they can be manipulated directly.

+ +

Selecting A Domain Implementation

+ +

Currently two domain inplementations are provided, DefaultSCADomain and EmbeddedSCADomain. You can choose between the two by...

+ +

TODO

+ +

DefaultSCADomain

+ +

Defining A Contribution

+ +

TODO

+ +

Domain URI

+ +

TODO

+ +

Getting Services

+ +

TODO

+ +

Getting References

+ +

TODO

+ +

EmbeddedSCADomain

+ +

Defining A Contribution

+ +

TODO

+ +

Domain URI

+ +

TODO

+ +

Getting Services

+ +

TODO

+ +

Getting References

+ +

TODO

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-hostgeronimo.html b/site/trunk/site-publish/sca-java-hostgeronimo.html new file mode 100644 index 0000000000..64f9ed75af --- /dev/null +++ b/site/trunk/site-publish/sca-java-hostgeronimo.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java host.geronimo + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java host.geronimo + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

To be done.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-hostweblogic.html b/site/trunk/site-publish/sca-java-hostweblogic.html new file mode 100644 index 0000000000..2106096e4a --- /dev/null +++ b/site/trunk/site-publish/sca-java-hostweblogic.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java host.weblogic + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java host.weblogic + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Please see this user's blog to learn how to do this:

+ + +

http://davesowerby.blogspot.com/2008/02/using-tuscany-with-weblogic.html

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-hostwebsphere.html b/site/trunk/site-publish/sca-java-hostwebsphere.html new file mode 100644 index 0000000000..ee4d2735f4 --- /dev/null +++ b/site/trunk/site-publish/sca-java-hostwebsphere.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java host.Websphere + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java host.Websphere + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Please find details of how to run Tuscany in Websphere at Sebastien's blog.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationbpel.html b/site/trunk/site-publish/sca-java-implementationbpel.html new file mode 100644 index 0000000000..8f083ec27d --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationbpel.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.bpel + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java implementation.bpel + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Introduction

+ +

This is a initial WS-BPEL component implementation that allows SCA runtime to invoke WS-BPEL executable processes in a SCA composition.
+We are still working to finalize the Reference support, to allow your BPEL process to have partnerLinks pointing to SCA components.

+ +

As for creating a SCA component, below is an sample SCDL

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	targetNamespace="http://bpel"
+    xmlns:hns="http://tuscany.apache.org/implementation/bpel/example/helloworld"
+    name="bpel">
+    
+    <component name="BPELHelloWorldComponent">
+        <implementation.bpel process="hns:HelloWorld"/>
+    </component>
+
+</composite>
+
+
+ + +

WS-BPEL Engine

+ +

As for a WS-BPEL engine, we are using Apache ODE. In order to properly deploy a WS-BPEL process in ODE, a deployment descriptor like the one below should be suplied with your application :

+ +
+
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+	xmlns:tns="http://tuscany.apache.org/implementation/bpel/example/helloworld" 
+	xmlns:wns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl">
+
+
+	<process name="tns:HelloWorld">
+		<active>true</active>
+		<provide partnerLink="helloPartnerLink">
+			<service name="wns:HelloService" port="HelloPort"/>
+		</provide>
+	</process>
+</deploy>
+
+
+ +

For more information on these deployment descriptors, see documentation on Deploying a process in ODE

+ + +

References

+ +

SCA & BPEL white paper

+ +

SCA Client Implementation Model for BPEL v1.00

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationdas.html b/site/trunk/site-publish/sca-java-implementationdas.html new file mode 100644 index 0000000000..3f18b55bb2 --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationdas.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.das + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java implementation.das + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationjava.html b/site/trunk/site-publish/sca-java-implementationjava.html new file mode 100644 index 0000000000..8ad8472674 --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationjava.html @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.java + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java implementation.java + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<implementation.java>

+ + +

The Tuscany Java SCA runtime supports components implemented in Java by using the <implementation.java> SCDL extension.

+ +

The Java component implementation SCDL has the following format:

+ +
+
+   <implementation.java class="NCName" />
+
+
+ +

Where the class attribute is the fully qualified name of the Java class of the implementation.

+ +

The Java component implementtaion is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published specifications document.

+ +

some examples

+ +

This example shows a simple composite with a component that uses <implemantation.java>:

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+    targetNamespace="http://sample"
+    xmlns:sample="http://sample"
+    name="SampleComposite">
+
+    <component name="SampleComponent">
+       <implementation.java class="sample.SampleImpl"/>
+    </component>
+    
+</composite>
+
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationjpa.html b/site/trunk/site-publish/sca-java-implementationjpa.html new file mode 100644 index 0000000000..e2bd90ebcb --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationjpa.html @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.jpa + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java implementation.jpa + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
Disclaimer
Work in progress, or should I say : Ideas in progress
+ +

Injection of JPA Entity Manager Factory/Entity Manager

+ +

The injection of JPA Entity Manager Factory/Entity Manager would allow sharing of EMFs across multiple components, this would be useful in scenarios where you have conversation. In this case, the runtime would be responsible for making sure the EM would be created and closed transparently for the application developer based on the conversation.

+ +

JPA Data Services

+ +

In this case, we would be extending the SCA programming model to expose services that interact with a persistent layer in a declarative fashion hiding the implementation details from the service developer.It's all about simplicity, allowing a service to be defined without explicitly coding the persistence layer. This would be a new Tuscany Component Type named Implementaiton.JPA. A developer would provide the business objects that would by JPA to do the OR mapping, and a business interface that would be introspect by Tuscany to properly make the JPA calls to the persistence layer to retrieve the information. Information on how to connect to the data source would be done in the composite, and we could provide some annotations to read

+ +

Business Object

+ +

The business object can be defined as per JPA programming model. You can define it as a JPA Entity and make use of JPA annotations, or use the ORM.xml as well.

+
+
+@Entity
+public class Customer {
+
+    @Id    protected int id;
+    @Basic protected String name;
+    @Basic protected String phone;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+}
+
+
+ +

Business Interface

+ +

The Business interface would define the access to the JPA entities, and we would introduce Java Annotations to bind a specific method to a JPA query.

+
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CustomerService {
+
+    Customer[] getCustomers();
+
+    void setCustomer(Customer customer);
+
+    @Query(SELECT c FROM customer c WHERE c.name = '" + $1 + "'")
+    Customer queryCustomerByName(String name);
+
+}
+
+
+ +

We would use some Convention over Configuration to bind the interfaces methods to proper database activities :

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Method Correspondent db operation
createXXX Insert a new entity on the db. A collection of new entities should also be supported
getXXX Read a given entity from the db
A method signature with no parameters read a collection.
setXXX Update a previously existent entity on the db.
deleteXXX Remove a previously existent entity on the db.
queryXXX Execute a query on the db.
We would introduce a Java Annotation to bind a given query to the method invocation
+
+ + +

Note that introspection will be required by the runtime to properly identify the operation type being requested. Based on this introspection, the runtime will also be responsible for any necessary conversion to the proper collection being expected as a result.

+ +

Composite

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+     xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+     targetNamespace="http://sample/implementation.jpa"
+     name="customer">
+
+	<component name="CustomerServiceComponent">
+		<tuscany:implementation.jpa>
+			<tuscany:persistence-unit name="customer">
+				<tuscany:class>assets.Customer</tuscany:class>
+			</tuscany:persistence-unit>
+
+                <tuscany:connectionInfo>
+		      <tuscany:connectionProperties
+			   driverClass="org.apache.derby.jdbc.EmbeddedDriver"
+			   databaseURL="jdbc:derby:target/test-classes/customer; create = true"
+			   loginTimeout="600000"/>
+	        </tuscany:connectionInfo>
+		</tuscany:implementation.jpa>
+	</component>
+
+</composite>
+
+
+ + +

Benefits

+ +
    +
  • Simplify the programming model for accessing data, hiding some of the API details required for this kind of components
  • +
  • Allow exposing data services trough multiple SCA Bindings (e.g ws, json-rpc, feeds, etc)
  • +
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationosgi.html b/site/trunk/site-publish/sca-java-implementationosgi.html new file mode 100644 index 0000000000..cd327a4983 --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationosgi.html @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.osgi + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java implementation.osgi + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
+ + + + + + + + + + + +
Resources
+
+ +

<implementation.osgi>

+ +

Tuscany enables OSGi bundles to be used as the implementation of SCA components by using the <implementation.osgi/> SCDL extension. OSGi services registered in the OSGi service registry either using OSGi declarative services or  through the OSGi procedural services API can be exposed as services of the SCA component.

+ +

The OSGi component implementation SCDL has the following format:

+
+
+<implementation.osgi
+        bundleSymbolicName=""
+        [bundleVersion=""]
+        [classes=""]
+        [imports=""]>
+    <properties service="">...</properties>*
+    <properties reference="">...</properties>*
+    <properties serviceCallback="">...</properties>*
+    <properties referenceCallback="">...</properties>*
+</implementation.osgi>
+
+
+

The bundle is identified by its symbolic name, which is used to locate the bundle in the SCA contribution. The version of the bundle can be optionally specified if multiple versions of the bundle are present in the contribution.

+ +

The list of classes in the bundle which contain SCA annotations that should be processed by the SCA runtime can be specified in the classes attribute of <implementation.osgi/>. If this list is not provided, only the implementation classes of service instances will be scanned for SCA annotations. A list of dependent bundles can also be specified in the imports attribute. If provided, these bundles are installed and started before the implementation bundle.

+ +

OSGi services registered in the OSGi registry can have properties associated with the service registration. These properties can be used to lookup services in the registry. The properties of services, references and callbacks associated with OSGi services can be optionally specified. These will be used to create the filter for locating these services in the OSGi registry. 

+ +

A component type file should be provided for SCA components using an OSGi bundle as its implementation. This file should have the same base name and location as the bundle.

+ +

Example:

+ +

This example shows a simple composite with two components that use <implementation.osgi/>:

+
+
+<composite xmlns=http://www.osoa.org/xmlns/sca/1.0
+    targetNamespace=http://helloworld
+    name="HelloWorld">
+
+    <component name="HelloWorldClient">
+        <implementation.osgi xmlns=http://tuscany.apache.org/xmlns/sca/1.0
+             bundleSymbolicName="helloworld.HelloWorldClient"                   
+             bundleVersion="1.0.0">
+            <properties reference="helloWorldService">
+                <property name="language">English</property>
+            </properties>
+        </implementation.osgi>
+        <reference name="helloWorldService" target="HelloWorldService"/>
+   </component>
+   <component name="HelloWorldService">
+        <implementation.osgi xmlns=http://tuscany.apache.org/xmlns/sca/1.0
+             bundleSymbolicName="helloworld.HelloWorldService"                         
+             bundleVersion="1.0.0">
+            <properties service="HelloWorldService">
+                <property name="language">English</property>
+            </properties>
+        </implementation.osgi>
+      </component>
+</composite>
+
+
+

This example shows two components which use OSGi implementation. Each component implementation is an OSGi bundle, and one of the services from each bundle is exposed through SCA. The bundles are identified using their symbolic name and version which are values of the manifest attributes Bundle-SymbolicName and Bundle-Version respectively in the bundle jar files. The bundle jar files can either be a contribution in the SCA domain, or contained in a contribution in the SCA domain.

+ +

The properties specified for the reference of HelloWorldClient are used to lookup HelloWorldService in the OSGi registry. These properties should match the properties specified for the service of HelloWorldService. 

+ +

The OSGi bundles should register the services exposed through SCA when the bundle is activated. Services are registered using standard OSGi service registration mechanism. References should be looked up in the OSGi service registry using registry lookup. SCA runtime does not perform reference injection for OSGi-based component implementation. Reference lookup should always use the service registered with the highest ranking to ensure that SCA wiring and scope are maintained. When OSGi declarative services are used, service registration and reference binding are performed by the OSGi declarative services runtime. References from components using <implementation.osgi/> can be wired to non-OSGi services, and non-OSGi components can access OSGi services. For example, either of the two components in this example can use <implementation.java/> as their implementation.

+ +

Default scope for OSGi-based components is COMPOSITE. For scopes other than composite scope, a service factory should be registered in the OSGi service registry. Service factories should also be used for OSGi services which are used in multiple SCA components with different component properties.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationresource.html b/site/trunk/site-publish/sca-java-implementationresource.html new file mode 100644 index 0000000000..274e61f1fb --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationresource.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.resource + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java implementation.resource + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<implementation.resource>

+

TBD

+ +

Some examples

+

TBD

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationscript.html b/site/trunk/site-publish/sca-java-implementationscript.html new file mode 100644 index 0000000000..372450dfe2 --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationscript.html @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.script + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java implementation.script + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<implementation.script>

+ +

Tuscany supports SCA components implemented in a wide variety of dynamic or scripting languages by using the <implementation.script> SCDL extension.

+ +

Any language that supports the "Scripting for Java" APIs defined by JSR-223 is supported, this includes Groovy, JavaScript, JRuby, Jython, and many others.

+ +

To use these languages the SCA assembly SCDL is extended with an "implementation.script" element which has the following options:

+ + +
+
+   <implementation.script [ script="" | language="" ] >
+     [inline src]
+</implementation.script>
+
+
+ +

The source code for the script may be defined in a seperate file pointed to by the 'script=' attribute, or the source code maybe embedded within the SCDL inline inside the <implementation.script> element.

+ +

The 'language=' attribute defines the language of the program. The language attribute is optional when the source code is in a separate file in which case the file extension of the file is used to determine the language.

+ +

Some examples:

+ + +

A Ruby program defined in a file 'myScript.rb' in a folder named 'test':

+ +
+
+   <implementation.script script="test/myScript.rb"/>
+
+
+ + +

A JavaScript program defined inline:

+ +
+
+   <implementation.script language="js">
+      function sayHello(name) {
+         return "Hello " + name;
+      }
+</implementation.script>
+
+
+ + +

When using inline scripts which contain special characters such as XML markup you may need to enclose the source within a CDATA region, for example:

+ +
+
+   <implementation.script language="js"><![CDATA[
+      function sayHello(inXML) {
+         return <sayHelloResponse>Hello { inXML..name }</sayHelloResponse>;
+      }
+]]></implementation.script>
+
+
+ +

The previous example demonstrated using JavaScript's E4X language extension for manipulating XML. Many dynamic languages have enhanced XML capabilities like this which can make working with XML much easier than in a more traditional language such as Java. For example, along with JavaScript's E4X, Ruby has ReXML and Groovy has its markup builders.

+ +

Tuscany tries to simplify this for the script program developer and will try to automatically ensure arguments are in the native XML format of the language when the component is wired to a WSDL interface.

+ +

As an example of this the following shows a composite that can replace the Tuscany helloworld-ws-service sample and requires no other files other than the asscociated WSDL document packaged with the contribution:

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+        xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+	targetNamespace="http://helloworld"
+        name="helloworldws">
+
+    <service name="HelloWorldService" promote="HelloWorldServiceComponent">
+       <interface.wsdl interface="http://helloworld#wsdl.interface(HelloWorld)" />
+       <binding.ws/>
+    </service>
+
+    <component name="HelloWorldServiceComponent">
+        <tuscany:implementation.script language="js"><![CDATA[
+
+           function getGreetings(xmlIn) {
+              return <ns1:getGreetingsResponse xmlns:ns1="http://helloworld">
+                        <ns1:getGreetingsReturn>Hello { xmlIn..*::name.toString() }</ns1:getGreetingsReturn>
+                     </ns1:getGreetingsResponse>
+           }
+
+        ]]></tuscany:implementation.script>
+    </component>
+
+</composite>
+
+
+ +
Best practice?
Using inline scripts can make creating simple components very easy however there are issues around whether or not this is best practice.
+Depending on the circumstance consideration should be given as to if it would be better to define the script in a seperate file.
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationspring.html b/site/trunk/site-publish/sca-java-implementationspring.html new file mode 100644 index 0000000000..76bb8cdfb1 --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationspring.html @@ -0,0 +1,473 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.spring + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java implementation.spring + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<implementation.spring>

+ +

The Tuscany Java SCA runtime supports components implemented with Spring Framework by using the <implementation.spring> SCDL extension.

+ +

The Spring specification defines how Spring and SCA work with one another. The Spring Component implementation is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published specifications document.

+ +

In Spring Framework an ApplicationContext is the main interface to the Spring IoC container. It is used to look up objects. It can be viewed as the Java object representation of the application-Context.xml file that contains the bean definitions.

+ +

The integration with Spring will be at the SCA Composite level, where a Spring application context provides a complete composite, exposing services and using references via SCA. This means that a Spring application context defines the internal structure of a SCA composite implementation.

+ +

Tuscany uses Spring Framework 2.5.5 (requires Java 1.4+)

+ +

How Spring Application Context is used as SCA Composite Implementation?

+ +
    +
  • A Spring Application Context is used as an implementation within an SCA composite component.
  • +
  • A component that uses Spring for an implementation can wire SCA services and references without introducing SCA metadata into the Spring configuration.
    +The Spring context knows very little about the SCA environment.
  • +
  • SCA runtime enforces SCA policies and Spring Application Context is unaware of it.
  • +
  • It should be possible to generate an SCA Composite from any Spring context and use that composite within an SCA assembly.
    +This feature is under review by the OASIS Specs Team, yet to be implemented in Tuscany
  • +
+ + +

How to Use Spring Component Implementation?

+ +

The Spring component implementation SCDL has the following format:

+ +
+
+   <implementation.spring location="targetURI" />
+
+
+ +

Where the location attribute of that element specifies the target uri of an archive file or directory or the fully qualified path that contains the Spring application context files.

+ +

An example of all the three ways of specifying the target uri in the location attribute is shown below

+ +

a) Specifying Fully Qualified Path:

+
+
+   <implementation.spring location="./spring/application-context.xml" />
+
+
+ +

b) Specifying a Directory:

+
+
+   <implementation.spring location="./spring" />
+
+
+ +

Here the target uri specifies the resource as a directory named "spring", where all the spring related files are available.

+ +

c) Specifying an Archive file:

+
+
+   <implementation.spring location="./spring.jar" />
+
+
+ +

Here the target uri specifies the resource as an archive file name "spring.jar", where all the spring related files are available.

+ +

In case of b) and c), If the resource identified by the location attribute is an archive file then the file META-INF/MANIFEST.MF is read from the archive. If the location URI identifies a directory, then META-INF/MANIFEST.MF must exist underneath that directory.

+ +

If the manifest file contains a header "Spring-Context" of the format: Spring-Context ::= path ( ';' path )*

+ +

Where path is a relative path with respect to the location URI, then the set of paths specified in the header identify the context configuration files. If there is no MANIFEST.MF file or no Spring-Context header within that file, then the default behavior is to build an application context using application-context.xml file in the META-INF/spring directory.

+ +

How Spring Application Context is Aware of Beans used in SCA composition?

+ +

Your existing Spring Application context should define the http://www.springframework.org/schema/sca namespace in order to make the Spring aware of the SCA related beans. This is shown below.

+ +
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:sca="http://www.springframework.org/schema/sca"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+       http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
+       
+    <sca:service name="StockQuoteService"
+        type="bigbank.stockquote.StockQuoteService" target="StockQuoteServiceBean"/>
+
+    <bean id="StockQuoteServiceBean" class="bigbank.stockquote.StockQuoteImpl">
+    </bean>
+</beans>
+
+
+ + +

Handling multiple Spring Application Contexts

+ +

Tuscany supports the following configurations to handle multiple Spring Application Context XML files.

+ +

Using <import> Element:

+

Each import element points to an application context xml file.

+
+
+<beans>
+    <import resource="services.xml"/>
+    <import resource="resources/messageSource.xml"/>
+
+    <import resource="/resources/themeSource.xml"/>
+
+    <bean id="bean1" class="..."/>
+    <bean id="bean2" class="..."/>
+</beans>
+
+
+ +

Using ClassPathXmlApplicationContext Bean Definition:

+

Each list value points to an application context xml file.

+
+
+<bean id="beanRefFactory" class="org.springframework.context.support.ClassPathXmlApplicationContext">
+    <constructor-arg>
+        <list>
+            <value>services.xml</value>
+            <value>resources/messageSource.xml</value>
+        </list>
+    </constructor-arg>
+</bean>
+
+
+ +

Some Examples:

+ +

Spring BigBank Sample

+

The spring-bigbank sample demonstrates most of the functionality that is specified in the specifications .

+ +

See the simple-bigbank-spring sample for a complete example.

+ +

Direct use of SCA references within a Spring configuration

+

See the spring-bigbank-calculator sample for a complete example of using direct SCA references within Spring configuration.

+ +

The properties like addService, subtractService, multiplyService and divideService defined in the Spring configuration as shown below

+ +
+
+<beans>
+
+    <sca:service name="CalculatorService"
+        type="bigbank.calculator.CalculatorService" target="CalculatorServiceBean"/>
+
+    <bean id="CalculatorServiceBean" class="bigbank.calculator.CalculatorServiceImpl">
+        <!-- Here are some implicit references - a property with a ref not satisifed within the
+         * Spring application context.
+         -->
+        <property name="addService" ref="addService"/>
+        <property name="subtractService" ref="subtractService"/>
+        <property name="multiplyService" ref="multiplyService"/>
+        <property name="divideService" ref="divideService"/>
+    </bean>
+
+</beans>
+
+
+ +

are the direct representation of the SCA references defined in the composite file.

+ +

Explicit declaration of SCA related beans inside a Spring Application Context

+

It is also possible to explicitly declare SCA-related beans inside a Spring configuration to proxy SCA references. The primary reason you may do this is to enable the Spring container to decorate the bean (using Spring AOP for example).

+ +

The properties checkingAccountService, calculatorService and stockQuoteService defined in the Spring configuration as shown below

+ +
+
+<beans>
+   <bean id="AccountServiceBean" class="bigbank.account.AccountServiceImpl">     
+        <property name="calculatorService" ref="calculatorService"/>
+        <property name="stockQuoteService" ref="stockQuoteService"/>
+        <property name="checkingAccountService" ref="checkingAccountService"/>
+        
+        <!-- Here are some implicit references & properties - a property with a ref not satisifed 
+        * within the Spring application context.
+         -->
+        <property name="savingsAccountService" ref="savingsAccountService"/>
+        <property name="stockAccountService" ref="stockAccountService"/>              
+        <property name="currency" value="EURO"/>
+    </bean>
+    
+    <sca:reference name="checkingAccountService" type="bigbank.account.checking.CheckingAccountService"/>
+    
+    <sca:reference name="calculatorService" type="bigbank.calculator.CalculatorService"/>
+    
+    <sca:reference name="stockQuoteService" type="bigbank.stockquote.StockQuoteService"/>
+</beans>
+
+
+ +

can be declared explicit as SCA beans in Spring Application Context using the <sca:reference> element.

+ +

See the simple-bigbank-spring sample for a complete example of using explicit declaration of SCA related beans.

+ +

Using SCA Bindings for Spring Implementation

+ +

We know that a component that uses Spring for an implementation can wire SCA services and references without introducing SCA metadata into the Spring configuration. The Spring context knows very little about the SCA environment. Hence the SpringComponent implementation remains the same as shown from some of the examples above but different bindings are chosen at the SCA Composite level as shown below.

+ +

All kind of bindings supported by SCA can be used for Spring Implementation as the bindings are independent of Spring context. Few examples can be seen below.

+ +
Working with SCA WebServices Binding
+ +

Declaring Service

+ +
+
+<composite name="StockQuote">
+    
+    <service name="StockQuoteService" promote="StockQuoteServiceComponent">
+        <interface.java interface="bigbank.stockquote.StockQuoteService"/>
+        <binding.ws uri="http://localhost:8081/services/StockQuoteWebService"/>
+    </service>
+
+    <component name="StockQuoteServiceComponent">
+        <implementation.spring location="META-INF/spring/StockQuoteService-context.xml"/>
+    </component>
+
+</composite>
+
+
+ +

Declaring Reference in a component which consumes the Service declared above

+ +
+
+<component name="AccountServiceComponent">
+    <implementation.spring location="spring-context/Account-spring-context.xml"/>
+
+    <reference name="stockQuoteService">
+       <binding.ws uri="http://localhost:8081/services/StockQuoteWebService"/>
+    </reference>
+</component>
+
+
+ +

See the spring-bigbank-stockquote sample for a complete example of using SCA Web Service binding.

+ +
Working with SCA RMI Binding
+ +

See the spring-bigbank-calculator sample for a complete example of using SCA RMI binding.

+ +

Access the Spring-ApplicationContext from everywhere in your Application

+

Tuscany creates an custom Application context with an implementation logic for all SCA related beans like <sca:service>, <sca:reference> and <sca:properties> available in the Spring Application Context.

+ +

To access the application context in your application we recommend to use the suggested approach in this article.
+http://blog.jdevelop.eu/2008/07/06/access-the-spring-applicationcontext-from-everywhere-in-your-application/

+ +

Non-Supported Features in Tuscany

+

Currently Tuscany does not support implicit SCA references and properties for scenario 1 & 2 in spring context as shown below.

+ +
Scenario 1: Using implicit SCA References & Properties for Constructors
+
+
+<constructor-arg><ref bean="mySCAService1"/></constructor-arg>
+<constructor-arg><ref bean="mySCAService2"/></constructor-arg> 
+
+
+ +

In the above scenario, particularly in cases where the spring bean has defined only one constructor, implicit references / properties can be supported when the contructor-arg element specifies the type of the SCA reference/property that its trying to consume by specifying a type attribute in the contructor-arg OR when the appropriate index attribute is specified in the constructor-arg element.

+ +

In cases where the spring bean has defined multiple contructors, its mandatory that all the SCA references / properties used by the constructors should be defined explicitly. And when the constructor-arg uses SCA reference/property within collections, those should be defined explicitly.

+ +
Scenario 2: Using implicit SCA References & Properties in List, Map and Set of bean properties.
+

Using implicit SCA references and properties within collection as shown in the below code sample will not be supported by Tuscany. Instead we recommed to use explicit SCA references/properties in such cases.

+ +
+
+<bean id="moreComplexObject" class="example.ComplexObject">
+  <!-- results in a setSomeList(java.util.List) call -->
+  <property name="someList">
+    <list>
+        <value>a list element followed by a reference</value>
+        <ref bean="mySCAService1" />
+    </list>
+  </property>
+  <!-- results in a setSomeMap(java.util.Map) call -->
+  <property name="someMap">
+    <map>
+        <entry>
+            <key>
+                <value>an entry</value>
+            </key>
+            <value>just some string</value>
+        </entry>
+        <entry>
+            <key>
+                <value>a ref</value>
+            </key>
+            <ref bean="mySCAService2" />
+        </entry>
+    </map>
+  </property>
+  <!-- results in a setSomeSet(java.util.Set) call -->
+  <property name="someSet">
+    <set>
+        <value>just some string</value>
+        <ref bean="mySCAService3" />
+    </set>
+  </property>
+</bean>
+
+
+ +
Scenario 3: Exposing SCA Service from Spring Bean that implements multiple interfaces.
+ +

Raised as Specification Issue: http://www.osoa.org/jira/browse/JAVA-59

+ +

Spring SCA Namespace schema

+ +

The spring-sca.xsd can be found at the following location: http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd

+ +

References

+ +

Spring Framework - http://static.springframework.org/spring/docs/2.5.5/reference/index.html

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationweb.html b/site/trunk/site-publish/sca-java-implementationweb.html new file mode 100644 index 0000000000..b7e155b639 --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationweb.html @@ -0,0 +1,380 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.web + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java implementation.web + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<implementation.web>

+ +

The Tuscany Java SCA runtime supports components implemented as JEE web modules by using the <implementation.web> SCDL extension. Implementation.web is one of the SCA extensions being formalized in the OASIS Open Composite Services Architecture with a published specification document.

+ +

The web component implementation SCDL has the following format:

+ +
+
+   <implementation.web web-uri="<module name>" />
+
+
+ +

Implementation.web can be used by components such as Servlets, JSPs, and Web 2.0 style html pages. How it works depends on the way the Tuscany runtime is being used.

+ +

Using implementation.web with Servlets, Filters, and Event listeners

+ +

JEE Servlets, Filters, and Event listeners may acquire references to the services wired to a component which use implementation.web as shown in the following code snippets.

+ +
+
+<component name="WebClient">
+   <implementation.web web-uri=""/>
+   <reference name="service" target="HelloworldService"/>
+</component>
+
+
+ +

Then when using a JEE container with SCA integration Servlets, Filters, and Event listeners can use annotations to acquire references to the services wired to the component as shown in the following Servlet code snippet (note the Servlet field name 'service' matches the reference name in the SCDL):

+ +
+
+public class HelloworldServlet extends HttpServlet {
+
+    @Reference
+    protected HelloworldService service;
+
+  . . .
+}
+
+
+ +

When the container does not have SCA integration then injection via annotations does not work, so to work around this the services need to be manually got from the ComponentContext which may be obtained from the application context. This is shown in the following code snippet:

+ +
+
+public class HelloworldServlet extends HttpServlet {
+
+    public void init(ServletConfig config) {
+       ComponentContext context = (ComponentContext)config.getServletContext().getAttribute("org.osoa.sca.ComponentContext");
+       HelloworldService service = context .getService(HelloworldService.class, "service");
+       . . .
+    }
+
+  . . .
+}
+
+
+ +

See the helloworld-servlet sample for the complete code of the above Servlet example.

+ +

Using implementation.web with JSPs

+ +

A JSP tag library is available to expose SCA components in JSP pages. To use SCA references within a JSP use a taglib to include the SCA tags and define the reference field with the reference tag.

+ +
+
+<component name="WebClient">
+   <implementation.web web-uri=""/>
+   <reference name="service" target="HelloworldService"/>
+</component>
+
+
+ +

In the .jsp file:

+
+
+<%@ taglib uri="http://www.osoa.org/sca/sca_jsp.tld" prefix="sca" %>
+<sca:reference name="service" type="sample.HelloworldService" />
+
+<html>
+  <body >
+    <%= service.sayHello("world") %>
+  </body>
+</html>
+
+
+ +

See the helloworld-jsp sample for the complete code of the above JSP example.

+ +

Using implementation.web with Web 2.0 style browser clients

+ +

Web 2.0 style pages can invoke SCA services by making RPC calls from the remote browser client to the service-side SCA service. To do this the HTML page includes Javascript code to import the SCA ComponentContext and then gets service proxys from that ComponentContext. The org.osoa.sca.componentContext.js script is generated by Tuscany when a component uses implementation.web.

+ +

In the SCDL the reference needs to specify one of the Tuscany Web2.0 bindings such as binding.jsonrpc or binding.dwr.
+(TODO: could this be avoided - something like make binding.jsonrpc the default sca binding for web2.0 clients?)

+ +
+
+<component name="WebClient">
+   <implementation.web web-uri=""/>
+   <reference name="service" target="HelloworldService">
+      <tuscany:binding.jsonrpc />
+   </reference>
+</component>
+
+
+ +

In the html page:

+
+
+<html>
+  <head>
+
+    <script type="text/javascript" src="org.osoa.sca.componentContext.js"></script>
+
+    <script language="JavaScript">
+    
+       function callSayHello() {
+          componentContext.getService("service").sayHello(
+             document.getElementById('name').value, 
+             function(reply) {
+                document.getElementById('result').innerHTML=reply;
+             });
+       }
+
+    </script>
+
+  </head>
+  <body >
+
+    . . . 
+
+     <input type="text" id="name" width="10">
+
+     <button name="submit" onclick="callSayHello()">Say hello</button>
+
+     <div id='result'></div>
+
+    . . . 
+
+  </body>
+</html>
+
+
+ +

See the helloworld-web sample for the complete code of the above example.

+ +

The following on Web 2.0 callbacks is not yet fully implemented, describing here to encourage feedback

+ +

Tuscany Web 2.0 clients using implementation.web support SCA asynchronous callbacks using what is known as Comet or Reverse Ajax. The only Tuscany binding that currently supports this in binding.dwr.

+ +

The following shows the previous sample changed to use callbacks to receive the replies. A callback binding is added to the reference in the SCDL and the callback function is defined as a seperate Javascript function defined by the client and attached to the service proxy object.

+ +
+
+<component name="WebClient">
+    <implementation.web web-uri=""/>
+    <reference name="service" target="HelloworldService">
+        <tuscany:binding.dwr />
+        <callback>
+            <tuscany:binding.dwr />
+        </callback>
+    </reference>
+</component>
+
+
+ +

In the html page:

+
+
+<html>
+  <head>
+
+    <script type="text/javascript" src="org.osoa.sca.componentContext.js"></script>
+
+    <script language="JavaScript">
+
+       componentContext.getService("service").sayHelloCallback = 
+          function(reply) {
+             document.getElementById('result').innerHTML=reply;
+          };
+    
+       function callSayHello() {
+          componentContext.getService("service").sayHello(document.getElementById('name').value);
+       }
+
+    </script>
+
+  </head>
+  <body >
+
+    . . . 
+
+     <input type="text" id="name" width="10">
+
+     <button name="submit" onclick="callSayHello()">Say hello</button>
+
+     <div id='result'></div>
+
+    . . . 
+
+  </body>
+</html>
+
+
+ +

See the helloworld-web-callback sample for the complete code of the above example.

+ +

Using implementation.web with the Tuscany runtime embedded within a webapp

+ +

This is the style all the current Tuscany webapp samples use. When using implementation.web with the Tuscany runtime embedded within a webapp the implementation.web web-uri attribute is ignored.

+ +

Using implementation.web with the Tuscany runtime integrated into a JEE server such as Tomcat or Geronimo

+ +

The only code that is currently working is some prototype code in the Tuscany runtime-tomcat module that supports injecting references into Servlets, Filters and Event listeners using the @Reference annotation.

+ +

Using implementation.web with the Tuscany standalone runtime

+ +

Nothing implemented yet

+ +

Using implementation.web with the Tuscany distributed domain runtime

+ +

Nothing implemented yet

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationwidget.html b/site/trunk/site-publish/sca-java-implementationwidget.html new file mode 100644 index 0000000000..988519ba38 --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationwidget.html @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.widget + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java implementation.widget + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

Introduction

+ +

The Tuscany Widget Implementation extends the SCA programing model to HTML and/or Web 2.0 client applications.

+ + +

Using Implementation.Widget to model your Web 2.0 component

+ +

This component type allows you to model your HTML and/or Web 2.0 as an SCA component, the implementation artifact would be html resource that represents the application, and you can define SCA References, that would be wired to server side services.

+ +
+
+<composite	xmlns="http://www.osoa.org/xmlns/sca/1.0"
+		xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+		targetNamespace="http://store"			
+		name="store">
+		
+       <component name="store">
+           <t:implementation.widget location="contents/store.html"/>
+           <service name="Widget">
+               <t:binding.http/> 
+           </service>
+	   <reference name="catalog" target="Catalog">
+               <t:binding.jsonrpc/>
+	   </reference>
+	   <reference name="shoppingCart" target="ShoppingCart">
+	       <t:binding.atom/>
+	   </reference>
+        </component>
+    
+        .....
+</composite>
+
+
+ + +

Defining references in HTML resources

+ +

The widget implementation introduces SCA annotations to JavaScript code using the syntax below. These references will get properly introspected by the implementation.widget and wired to the proper server side services.

+ +
+
+//@Reference
+var catalog = new Reference("catalog");
+
+//@Reference
+var shoppingCart = new Reference("shoppingCart");
+
+
+ + +

Including generated JavaScript client proxy

+ +

The client application will need to include a generated JavaScript that will contain the necessary client proxy used to access the server side services. The name of the generated JavaScript is the same as the HTML resource being specified as the implementation artifact.

+ + +
+
+<!-- one js include per sca component -->
+<script type="text/javascript" src="store.js"></script>
+
+
+ +

Supported binding types

+ +

Currently, you can define references to remote services using the following bindings :

+ + + +

References

+

http://incubator.apache.org/tuscany/getting-started-with-tuscany.html

+ + + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-implementationxquery.html b/site/trunk/site-publish/sca-java-implementationxquery.html new file mode 100644 index 0000000000..43aca27959 --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationxquery.html @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.xquery + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java implementation.xquery + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<implementation.xquery>

+

Tuscany provides an implementation type to support XQuery. With this extension, the business logic can be implemented by XQuery scripts.

+ +

The XML configuration

+ +

<implementation.xquery> is declared under namespace "http://tuscany.apache.org/xmlns/sca/1.0". The location attribute specifies the XQuery script. It can be a file or resource name against the current classloader.

+ +
+
+    <component name="QuoteJoinComponent" xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
+        <tuscany:implementation.xquery location="META-INF/sca/quote_join.xq" />
+        <reference name="quoteCalculator" target="QuoteCalculatorComponent" />
+    </component>
+
+
+ +

Some examples

+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://quote.xquery/client"
+    xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0" xmlns:xq="http://quote.xquery/client"
+    name="xqueryquotewsclient">
+
+    ...
+    <component name="QuoteJoinComponent">
+        <tuscany:implementation.xquery location="META-INF/sca/quote_join.xq" />
+        <reference name="quoteCalculator" target="QuoteCalculatorComponent" />
+    </component>
+
+    <component name="QuoteJoinPropertiesComponent">
+        <tuscany:implementation.xquery location="META-INF/sca/quote_join_properties.xq" />
+        <!-- Reset the default namespace as the sub-elements under pri:priceQuote are
+            unqualified -->
+        <property name="priceQuoteDoc">
+            <pri:priceQuote xmlns:pri="http://www.example.org/price" xmlns="">
+                <customerName>Acme Inc</customerName>
+                <shipAddress street="12 Springs Rd" city="Morris Plains" state="nj" zip="07960" />
+                <priceRequests>
+                    <priceRequest>
+                        <widgetId>12</widgetId>
+                        <price>1.0</price>
+                    </priceRequest>
+                    <priceRequest>
+                        <widgetId>134</widgetId>
+                        <price>34.1</price>
+                    </priceRequest>
+                    <priceRequest>
+                        <widgetId>211</widgetId>
+                        <price>10.0</price>
+                    </priceRequest>
+                </priceRequests>
+            </pri:priceQuote>
+        </property>
+        <!-- Reset the default namespace as the sub-elements under ava:availQuote are
+            unqualified -->
+
+        <property name="availQuoteDoc">
+            <ava:availQuote xmlns:ava="http://www.example.org/avail" xmlns="">
+                <availRequest>
+                    <widgetId>12</widgetId>
+                    <requestedQuantity>10</requestedQuantity>
+                    <quantityAvail>true</quantityAvail>
+                    <shipDate>2003-03-22</shipDate>
+                </availRequest>
+                <availRequest>
+                    <widgetId>134</widgetId>
+                    <requestedQuantity>345</requestedQuantity>
+                    <quantityAvail>false</quantityAvail>
+                    <shipDate>BackOrder</shipDate>
+                </availRequest>
+                <availRequest>
+                    <widgetId>211</widgetId>
+                    <requestedQuantity>100</requestedQuantity>
+                    <quantityAvail>true</quantityAvail>
+                    <shipDate>2003-04-21</shipDate>
+                </availRequest>
+            </ava:availQuote>
+        </property>
+        <property name="taxRate">0.1</property>
+        <reference name="quoteCalculator" target="QuoteCalculatorComponent" />
+    </component>
+
+    <component name="QuoteJoinExternalReferencesComponent">
+        <tuscany:implementation.xquery location="META-INF/sca/quote_join_external_references.xq" />
+        <reference name="quoteCalculator" target="QuoteCalculatorComponent" />
+        <reference name="priceQuoteProvider" target="PriceQuoteProviderComponent" />
+    </component>
+    ...
+</composite>
+
+
+ + +

Decalre SCA services/references/properties using XQuery namespaces

+

Please note you can use the following syntax in the XQuery script to declare SCA services, references, and properties.

+ +
    +
  • scaservice:java/<java_interface_name>
  • +
  • scareference:java/<java_interface_name>
  • +
  • scaproperty:xml/<namespace>:<localName>
  • +
  • scaproperty:java/<java_class_name>
  • +
+ + +
+
+declare namespace quoteJoin="scaservice:java/xquery.quote.PropertiesQuoteJoin";
+
+declare namespace quoteCalculator="scareference:java/xquery.quote.QuoteCalculator";
+
+declare namespace priceQuoteDoc="scaproperty:xml/http://www.example.org/price:priceQuote";
+declare namespace availQuoteDoc="scaproperty:xml/http://www.example.org/avail:availQuote";
+declare namespace taxRate="scaproperty:java/java.lang.Float";
+
+declare namespace pri="http://www.example.org/price";
+declare namespace ava="http://www.example.org/avail";
+declare namespace quo="http://www.example.org/quote";
+
+declare variable $quoteCalculator external;
+
+declare variable $priceQuoteDoc external;
+declare variable $availQuoteDoc external;
+declare variable $taxRate external;
+
+declare function quoteJoin:joinPriceAndAvailQuotes() {
+<quo:quote>
+    <quo:name>{ data($priceQuoteDoc/pri:priceQuote/customerName) }</quo:name>
+    <quo:address>{ concat($priceQuoteDoc/pri:priceQuote/shipAddress/@street , ",", 
+    $priceQuoteDoc/pri:priceQuote/shipAddress/@city ,",", 
+    fn:upper-case($priceQuoteDoc/pri:priceQuote/shipAddress/@state) , ",", 
+    $priceQuoteDoc/pri:priceQuote/shipAddress/@zip) }</quo:address>
+    {
+        for $priceRequest in $priceQuoteDoc/pri:priceQuote/priceRequests/priceRequest,
+            $availRequest in $availQuoteDoc/ava:availQuote/availRequest
+        where data($priceRequest/widgetId) = data($availRequest/widgetId)
+        return
+            <quo:quoteResponse>
+                <quo:widgetId>{ data($priceRequest/widgetId) }</quo:widgetId>
+                <quo:unitPrice>{ data($priceRequest/price) }</quo:unitPrice>
+                <quo:requestedQuantity>{ data($availRequest/requestedQuantity) }</quo:requestedQuantity>
+                <quo:fillOrder>{ data($availRequest/quantityAvail) }</quo:fillOrder>
+                {
+                    for $shipDate in $availRequest/shipDate
+                    return
+                        <quo:shipDate>{ data($shipDate) }</quo:shipDate>
+                }
+                <quo:taxRate>{ $taxRate }</quo:taxRate>
+                <quo:totalCost>{ quoteCalculator:calculateTotalPrice(
+                				  $quoteCalculator,
+                				  
+                				  $taxRate,
+
+                                  $availRequest/requestedQuantity,
+
+                                  $priceRequest/price,
+
+                                  $availRequest/quantityAvail) }</quo:totalCost>
+            </quo:quoteResponse>
+    }
+    </quo:quote>
+};
+
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-incubating-m1.html b/site/trunk/site-publish/sca-java-incubating-m1.html new file mode 100644 index 0000000000..a641394a1d --- /dev/null +++ b/site/trunk/site-publish/sca-java-incubating-m1.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Incubating-M1 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java Incubating-M1 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

The SCA Java Incubating-M1 was released in June 2006.

+ +
Warning
This is release is now very old, the latest release can be found here
+ +

 This release comprises a single package containing SCA, SDO and DAS.

+ +

SCA Java Incubating-M1

+

Windows

+ +
+ + + + + + + + + + + + + + + + + + + +
Type Description File
Signature
Binary Tuscany M1 SCA tuscany-incubating-M1.zip MD5     PGP
Source Tuscany M1 SCA tuscany-incubating-M1-src.zip MD5     PGP
+
+ + +

Linux

+ +
+ + + + + + + + + + + + + +
Type Description
File
Signature
Source Tuscany M1 SCA tuscany-incubating-M1-src.tar.gz MD5     PGP
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-incubator-m2.html b/site/trunk/site-publish/sca-java-incubator-m2.html new file mode 100644 index 0000000000..2e65c73d8a --- /dev/null +++ b/site/trunk/site-publish/sca-java-incubator-m2.html @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Incubator-M2 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java Incubator-M2 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

The SCA Java Incubator-M2 was released in Nov 2006.

+ +

SCA Java Incubator-M2

+ +
Warning
This is release is now very old, the latest release can be found here
+ +

Windows

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Description File
Signature
Binary Tuscany M2 SCA tuscany-sca-1.0-incubator-M2-bin.zip     PGP
Source Tuscany M2 SCA tuscany-sca-1.0-incubator-M2-src.zip     PGP
Source Tuscany M2 SCA Samples
tuscany-sca-1.0-incubator-M2-samples.zip
    PGP
Source Tuscany Commonj Specs tuscany-spec-commonj-1.1-incubator-M2-src.zip
    PGP
Source Tuscany SCA Specs.r.0.95
tuscany-spec-sca-r0.95-incubator-M2-src.zip     PGP
+
+ + +

Linux

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Description
File
Signature
Binary Tuscany M2 SCA tuscany-sca-1.0--incubator-M2-bin.tar.gz     PGP
Source Tuscany M2 SCA tuscany-sca-1.0-incubator-M2-src.tar.gz     PGP
Source Tuscany M2 SCA Samples tuscany-sca-1.0-incubator-M2-samples.tar.gz
    PGP
Source Tuscany Commonj Specs tuscany-spec-commonj-1.1-incubator-M2-src.tar.gz
    PGP
Source Tuscany SCA Specs.r.0.95 tuscany-spec-sca-r0.95-incubator-M2-src.tar.gz     PGP
+
+ + +

JavaDocs Archive

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Description File
Signature
Tuscany M2 SCA Javadocs tuscany-sca-1.0-incubator-M2-javadoc.zip     PGP
Tuscany Commonj Specs tuscany-spec-commonj-1.1-incubator-M2-javadoc.zip     PGP
Tuscany SCA Specs.r.0.95 tuscany-spec-sca-r0.95-incubator-M2-javadoc.zip     PGP
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-interfacewsdl.html b/site/trunk/site-publish/sca-java-interfacewsdl.html new file mode 100644 index 0000000000..58f4c60e26 --- /dev/null +++ b/site/trunk/site-publish/sca-java-interfacewsdl.html @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java interface.wsdl + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Reference > SCA Java interface.wsdl + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<interface.wsdl>

+ +

The Tuscany Java SCA runtime supports interfaces that are described by Web Services Description Lanuage (WSDL) files. The files contain a description of the service interface, services, references, method requests and responses, and the data types. The implementation of this WSDL interface can be generated with the Java SDK tool wsimport. The wsimport tool generates a skeleton of the service interface, along with all associated request and response classes, and any complex data types passed on the interface. The user can augment the skeleton by putting implementation code in the approproate spot.

+ +

The following snippet shows how the WSDL interface and the Java implementation are used in an SCA composite file and publicised as a component.

+
+
+    <component name="OrderServiceComponent">
+        <implementation.java class="org.example.orderservice.OrderServiceImpl" />
+	    <service name="OrderService">
+	        <interface.wsdl interface="http://www.example.org/OrderService/#wsdl.interface(OrderService)" />
+	        <binding.ws uri="http://localhost:8085/OrderService"/>
+	    </service>
+    </component>
+
+
+ +

Examples

+ +

This example shows a component with its interface described via WSDL. The web service binding defaults are used so the endpoint of the Web service will be http://localhost:8085/OrderService. (Note that this full sample is available in Tuscany 1.x branch under the samples/holder-ws-service sample).

+ +
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	targetNamespace="http://orderservice"
+	xmlns:hw="http://orderservice"
+    name="orderws">
+
+    <component name="OrderServiceComponent">
+        <implementation.java class="org.example.orderservice.OrderServiceImpl" />
+	    <service name="OrderService">
+	        <interface.wsdl interface="http://www.example.org/OrderService/#wsdl.interface(OrderService)" />
+	        <binding.ws uri="http://localhost:8085/OrderService"/>
+	    </service>
+    </component>
+
+</composite>
+
+
+ +

WSDL files can be generated with many tools and development environment plugins. This snippet shows a portion of the WSDL file that describes the business service data types and the assoicated method calls and responses:

+
+
+    <wsdl:portType name="OrderService">
+        <wsdl:operation name="reviewOrder">
+            <wsdl:input message="tns:reviewOrderRequest"/>
+            <wsdl:output message="tns:reviewOrderResponse"/>
+        </wsdl:operation>
+    </wsdl:portType>
+    <wsdl:message name="reviewOrderRequest">
+        <wsdl:part element="tns:reviewOrder" name="myParameters"/>
+    </wsdl:message>
+    <wsdl:message name="reviewOrderResponse">
+        <wsdl:part element="tns:reviewOrderResponse" name="myResult"/>
+    </wsdl:message>
+    <wsdl:types>
+        <xsd:schema targetNamespace="http://www.example.org/OrderService/">
+            <xsd:complexType name="order">
+                <xsd:sequence>
+                    <xsd:element name="customerId" type="xsd:string"    minOccurs="0" />
+                    <xsd:element name="status" type="tns:status" minOccurs="0" />
+                    <xsd:element name="total" type="xsd:double" />
+                    <xsd:element name="orderId" type="xsd:int" />
+                </xsd:sequence>
+            </xsd:complexType>
+
+            <xsd:simpleType name="status">
+                <xsd:restriction base="xsd:string">
+                    <xsd:enumeration value="Created" />
+                    <xsd:enumeration value="Submitted" />
+                    <xsd:enumeration value="Approved" />
+                    <xsd:enumeration value="Rejected" />
+                </xsd:restriction>
+            </xsd:simpleType>
+
+            <xsd:element name="reviewOrder">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:element name="myData" type="tns:order"
+                            minOccurs="1" maxOccurs="1" />
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+            <xsd:element name="reviewOrderResponse">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:element name="myData" type="tns:order"
+                            minOccurs="1" maxOccurs="1" />
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+
+        </xsd:schema>
+    </wsdl:types>
+
+
+ +

The Java implementation for this web service can be generated with the Java SDK tool wsimport. Full documentation is in the Java SDK JavaDocs, but basically one specifies the source WSDL and the output directory for generated files.

+
+
+    wsimport -d orderservice -keep orderservice.wsdl
+
+
+ +

The generated implementation files can be augmented with code that operates on provided business objects.

+ +

Web Services Holder Pattern

+ +

A pattern known as the Web Services Holder Pattern is supported by Tuscany in the 1.5 and later releases. WSDL files support a parameter mode known as INOUT. The INOUT mode is used for service interface parameters that are passed into a business interface and returned
+on the same interface.

+ +

The advantages of the INOUT mode are:

+
    +
  • supports a well known pattern of parameter pass by reference. Normally SCA parameters are always passed by value.
  • +
  • saves instantiation and initialization for large or complex objects.
  • +
  • simplifies the signature of business interfaces
  • +
  • saves the user the cost of boxing and returning multiple return objects.
  • +
+ + +

The Holder pattern is created by the Java SDK wsimport tool whenever data type is both input and output to a given operation>

+
+
+      <xsd:element name="myOperation">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="myData" type="tns:myDataType" minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="myOperationResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="myData" type="tns:myDataType" minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+
+
+ +

The generated implemenation code contains annotations that mark the parameter data as an input output parameter. Also notice that the business object Order is passed in as a data type javax.xml.ws.Holder<Order>. This Holder class allows the input object to be returned as an output object, i.e. pass by reference.

+
+
+    @WebMethod(action = "http://www.example.org/OrderService/reviewOrder")
+    @RequestWrapper(localName = "reviewOrder", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrder")
+    @ResponseWrapper(localName = "reviewOrderResponse", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrderResponse")
+    public void reviewOrder(
+        @WebParam(name = "myData", targetNamespace = "", mode = WebParam.Mode.INOUT)
+        javax.xml.ws.Holder<Order> myData);
+
+
+ +

The Java implemenation code can access the wrapped Holder object, perform updates on the object, and leave it in place to return the object as shown here with the Java object Order :

+
+
+    @WebMethod(action = "http://www.example.org/OrderService/reviewOrder")
+    @RequestWrapper(localName = "reviewOrder", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrder")
+    @ResponseWrapper(localName = "reviewOrderResponse", targetNamespace = "http://www.example.org/OrderService/", className = "org.example.orderservice.ReviewOrderResponse")
+    public void reviewOrder(
+        @WebParam(name = "myData", targetNamespace = "", mode = WebParam.Mode.INOUT)
+        Holder<Order> myData) {
+        Order order = myData.value;
+        double total = order.getTotal();
+        if ( total < 100.0 ) {
+            order.setStatus( Status.APPROVED );
+        }
+    }
+
+
+ +

Tuscany, as of version 1.5 supports this input/output Holder pattern. At this point there is a limitation of only one in/out parameter, and this is only supported on methods with void return types.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-modules-dependencies.html b/site/trunk/site-publish/sca-java-modules-dependencies.html new file mode 100644 index 0000000000..28b333e182 --- /dev/null +++ b/site/trunk/site-publish/sca-java-modules-dependencies.html @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Modules Dependencies + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Modules Dependencies + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + +

This page is under construction.

+ +

What this is about

+

This page can be used by those who would like to pick and choose pieces of Tuscany and embed it with their software. It outlines dependencies and identifies the minimum set of modules required to use Tuscany.

+ +

Current Tuscany Packaging State

+

As of release 1.3 Tuscany is distributed via one binary distribution that includes everything. Based on user feedback, choice of a smaller distribution packages is desireable. Tuscany community is in the process of addressing this requirement. Please see discussions on the mailing list and contribute if interested.

+ +

How to build your own distribution

+ +

Let's use the term "feature" to refer to a package. This is also used in Eclipse and many people are familiar with it.

+ +

A Tuscany user has defined a set of features applicable to his application at this location. Although these features can be addressing majority of lower granular packages that users may need (we would like to hear your opinion), we realize that there will always be a need for smaller features or a combination of features. let's use the real examples that are available in the source code for the purpose of this discussion and first explain what is available as an example and then describe how you can create your own distribution.

+ +

Here are the available feature types at the moment:

+
    +
  • all feature - includes everything
  • +
  • core feature - pom.xml
    +This package includes support for building applications based on Java components and also exposes SPIs for extending Tuscany SCA to include extensions such as binding types, implementation types, policies.
    +This is the minimum required to use Tuscany. +
      +
    • Included in this feature:
      +1. Core runtime includes OSGI support
      +2. Launchers
      + 2a) j2Se
      + 2b) equinox
      + 2c) Webapp
      +3. Bindings:
      + 2a) SCA default binding
      + 2b) corba (as a light weight binding that you can use with the core distro
      +4. Data Bindings: Jaxb
      +5. Interfaces
      + 4a) Java
      + 4b) Wsdl
    • +
    +
  • +
+ + +
    +
  • ejava feature - pom.xml
    +This package is needed for enterprise Java development. +
      +
    • Included in this feature:
      +1. Core runtime: core package
      +2. EJB suport: hosting ejb
      +3. Spring
      +4. Support for scripting languages
      +In addition to what is included in Core:
      +5. Bindings: ejb binding, JMS binding
      +6. Databindings: Axiom
    • +
    +
  • +
+ + + +
    +
  • manager feature -
    +This package includes features that can be used to manage SCA applications. For example, domain manager is in this. +
      +
    • Included in this package:
      +Domain Manager which manages SCA applications
    • +
    +
  • +
+ + +
    +
  • process feature - pom.xml
    +This package enables you to use BPEL components in a composition using Ode. +
      +
    • Included in this feature:
      +1. Core Runtime: Core feature
      +2. BPEL support; implementation.bpel
      +3. XQuery support: implementaiton.zquery
      +In addition to what is included in core feature:
      +4. Bindings: Corba
      +5. Databindings: SDO, Saxon
    • +
    +
  • +
+ + +
    +
  • web20 feature - pom.xml
    +This package enables you to use web20 with Tuscany. +
      +
    • Included in this feature:
      +1. Core Runtime: Core feature
      +2. Support for resources and widgets
      +In addition to what is included in core feature:
      +3. Bindings; Atom (via Abdrea), Jason, RSS (via Rome), HTTP,
      +4. Databindings: JSON
    • +
    +
  • +
+ + +
    +
  • webservice feature - pom.xml
    +This package provides support for webservices binding based on Axis2. +
      +
    • Included in this feature:
      +1. Core Runtime: Core feature
      +2. support for webservices
      +In addition to what is included in core feature:
      +3. Bindings; ws, ws-axi2, ws-wsdlgen, ws-xml
      +4. Databindings: Jaxb-axiom, SDO, SDO-axiom
    • +
    +
  • +
+ + +

You will also notice the following under features:

+
    +
  • repository -
    +This package is a special feature that builds a Maven repository that you can use to mirror Tuscany. This can be useful for enterprises that build on top of Tuscany, or use Tuscany in their apps, but don't want to be broken any time the public Maven repos going down
  • +
+ + + +

Minimum Required

+

Core feature set is the minimum that is required to be able to develop SCA applications using Java components.

+ +

How to build my own distribution?

+ +

You can use the above features as examples to define what you need. For example, if you want to develop enterprise applications using webservices, you would need the following features: ejb feature (which includes core) and webservices feature. Alternatively you can find the dependencies amongst modules and create your own distribution.

+ +

to do: Steps to build distributin?

+ +

Understanding dependencies

+ +

To understand module dependencies, you can start with a particular feature and run one of the following commands.

+
+
+go to the feature directory and issue the command:
+
+mvn:site 
+
+This will create a file called dependencies.html that shows dependencies amongst modules that create this feature.
+
+
+ +

or for the text version of the dependencies you can use the following command

+ +
+
 mvn dependency:tree 
+
+
+ + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-news-page.html b/site/trunk/site-publish/sca-java-news-page.html new file mode 100644 index 0000000000..b6adf78fae --- /dev/null +++ b/site/trunk/site-publish/sca-java-news-page.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java News Page + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java News Page + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+
SCA Java News
+
    +
  • Community is working on the following topics on dev list: BPEL integration with Ode (partially there), OSGI, distribution, Policy Framework, XQuery implementation component, Geronimo/Tuscany integration and tests to enhance Tuscany. A new thread on management was started by Mike Edwards... Get involved where you like.
  • +
  • *Would be great to update the user doc with new runtimes that you have tried. Simply go the user doc and add more sections. Thanks. +
      +
    • First phase of Geronimo integeration is complete. See this thread. There is much more to be done if interested.
    • +
    • XQuery implementation is now in SVN. More discussions are happening around use cases on the mailing list. There is more work to be done if interested to help.
    • +
    +
  • +
+ + +
SCA Native News
+
    +
  • Next SCA Native release is being discussed on the dev list. Help define the contentand develop it.
  • +
+
+
Users Sharing News
+
    +
  • Please share information that you think will benefit other users or the project. link the information to this page.
  • +
+ + + + + +
    +
  • A series of vendor neutral briefings on SCA/SDO are being held in various countrie. You can find more information here. Tuscany will be used to demo.
  • +
+ + +
    +
  • Short article on Tuscany at infoq
  • +
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-next-release.html b/site/trunk/site-publish/sca-java-next-release.html new file mode 100644 index 0000000000..a2d2075fac --- /dev/null +++ b/site/trunk/site-publish/sca-java-next-release.html @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Next Release + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > SCA Java Next Release + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

These are the items that have been worked on since Tuscany SCA Java was last released. If we record things that have been done as we check things into SVN there there are two big advantages.

+
    +
  1. Its a lot easier to write the release notes
  2. +
  3. People can take a look to see what is likely to be in the next release
  4. +
+ + +

The next release is targeted for mid May 2007. The theme is stability and consumability for the runtime core functions. Since the M2 release we have added.

+ +

General

+
    +
  • A clear set of SPIs which we can keep stable over future releases +
      +
    • List???
    • +
    +
  • +
  • Refactored extensions to use new SPIs (see below)
  • +
  • Extensions now loaded via Java service mechanism
  • +
  • Improved Package/Class naming consistency across modules
  • +
  • Tidied Package dependencies
  • +
+ + +

Assembly(Model)

+
    +
  • New assembly model implementation taking into account SCA 1.0 artifacts
  • +
  • Data duplication between assembly model and runtime reduced
  • +
+ + +

Implementation Extensions

+
    +
  • Java
  • +
  • Script +
      +
    • Ruby
    • +
    • Python
    • +
    • Groovy
    • +
    • JavaScript
    • +
    +
  • +
+ + +

Binding Extensions

+
    +
  • Axis2
  • +
  • RMI
  • +
  • JSONRPC
  • +
+ + +

Databinding Extensions

+
    +
  • Axiom
  • +
  • JAXB
  • +
  • SDO
  • +
+ + +

Hosting

+
    +
  • Embedded
  • +
  • Tomcat
  • +
  • Jetty
  • +
  • RMI
  • +
+ + +

Domain and Contribution

+
    +
  • Simple single process domain support
  • +
  • Contributions support to scope items being deployed the runtime +
      +
    • Contribution service to remove the need of import.sdo (rfeng) - Is this now true?
    • +
    +
  • +
+ + +

Samples

+
    +
  • A variety of samples testing most implementation and binding extensions +
      +
    • See /sca/samples
    • +
    +
  • +
  • Maven and Ant base sample builds in the binary distribution
  • +
+ + +

Java Annotations and APIs Spec Coverage

+ +

Annotations

+ +

@AllowsPassByReference
+ Interface
+ Class
+ Method
+@Callback
+ Interface
+ Class
+ Method
+ Field
+@ComponentName
+ Method
+ Field
+@Conversation
+ Interface
+ Class
+@Constructor
+ Constructor
+@Context
+ Field
+ Setter
+@Conversational
+ Interface
+ Class
+@Destroy
+ Method
+@EagerInit
+ Interface
+ Class
+@EndsConversation
+ Method
+@Init
+ Method
+@OneWay
+ Method
+@Property
+ Field
+ Method
+@Reference
+ Field
+ Setter
+ Constructor
+@Remotable
+ Interface
+ Class
+@Scope
+ Interface
+ Class
+ STATELESS
+ REQUEST
+ CONVERSATION
+ COMPOSITE
+@Service
+ Interface
+ Class
+@ConversationAttributes
+ Interface
+ Class
+@ConversationID
+ Field
+ Setter

+ + +

API

+ +

CallableReference<B>
+ B getService();
+ Class<B> getBusinessInterface();
+ boolean isConversational();
+ Conversation getConversation();
+ Object getCallbackID();

+ +

ComponentContext
+ String getURI();
+ <B> B getService(Class<B> businessInterface, String referenceName);
+ <B> ServiceReference<B> getServiceReference(Class<B> businessInterface, String referenceName);
+ <B> ServiceReference<B> createSelfReference(Class<B> businessInterface);
+ <B> ServiceReference<B> createSelfReference(Class<B> businessInterface,String serviceName);
+ <B> B getProperty(Class<B> type, String propertyName);
+ <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException;
+ RequestContext getRequestContext();
+ <B> ServiceReference<B> cast(B target) throws IllegalArgumentException;

+ +

Conversation
+ Object getConversionID();
+ void end();

+ +

ConversationEndedException

+ +

NoRegsiteredCallbackException

+ +

RequestContext
+ Subject getSecuritySubject();
+ String getServiceName();
+ CallbackReference<CB> getCallbackReference();
+ CB getCallback();
+ <B> CallableReference<B> getServiceReference();

+ +

ServiceReference<B>
+ Object getConversationID();
+ void setConversationID(Object conversationId) throws IllegalStateException;
+ void setCallbackID(Object callbackID);
+ Object getCallback();
+ void setCallback(Object callback);

+ +

ServiceRuntimeException

+ +

ServiceUnavailableException

+ + + + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-previous-releases.html b/site/trunk/site-publish/sca-java-previous-releases.html new file mode 100644 index 0000000000..24bb45c216 --- /dev/null +++ b/site/trunk/site-publish/sca-java-previous-releases.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Previous Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java Previous Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + + + + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-releases.data/getting-started-1.0.pdf b/site/trunk/site-publish/sca-java-releases.data/getting-started-1.0.pdf new file mode 100644 index 0000000000..950e4b12cd Binary files /dev/null and b/site/trunk/site-publish/sca-java-releases.data/getting-started-1.0.pdf differ diff --git a/site/trunk/site-publish/sca-java-releases.data/getting_started_06.pdf b/site/trunk/site-publish/sca-java-releases.data/getting_started_06.pdf new file mode 100644 index 0000000000..f1d93a0034 Binary files /dev/null and b/site/trunk/site-publish/sca-java-releases.data/getting_started_06.pdf differ diff --git a/site/trunk/site-publish/sca-java-releases.data/onlineStore.pdf b/site/trunk/site-publish/sca-java-releases.data/onlineStore.pdf new file mode 100644 index 0000000000..f1d93a0034 Binary files /dev/null and b/site/trunk/site-publish/sca-java-releases.data/onlineStore.pdf differ diff --git a/site/trunk/site-publish/sca-java-releases.html b/site/trunk/site-publish/sca-java-releases.html new file mode 100644 index 0000000000..7337242ed0 --- /dev/null +++ b/site/trunk/site-publish/sca-java-releases.html @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + +
Subprojects
+

SDO
+DAS

+
+ +

Tuscany SCA Java Release Downloads and Documentation (Stable releases)

+ +

There are currently two code streams, 1.x which is based on the original SCA specifications first published at OSOA, and 2.x which is based on the latest SCA specifications being developed at OASIS

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Project Release Download Documentation Description
SCA Java 1.x Latest guides here Infrastructure implemented in Java for developing/running SCA applications
SCA Java Travel Sample 1.x See README file Sample SCA Java application for Tuscany SCA Java 1.x
SCA Java 2.x Latest guides here Infrastructure implemented in Java for developing/running SCA applications
+
+ + + +

Tuscany Nightly Build Downloads (Built against trunk, latest code)

+ +

These nightly builds are listed here as an aid for Tuscany developers testing the latest code, they ARE NOT INTENDED FOR USE BY USERS. If you need a recent change thats not yet available in an official release then please do pester us to do a release.

+ +
+ + + + + + + + + + + + + + + + + + + +
Nightly Build Download Build Status Log Win32 bin Win32 src Linux bin Linux src Tomcat WAR
SCA Java 2.x Status Log Win32 bin Win32 src Linux bin Linux src tuscany.war
+
+ + +

Documentation

+ +

Java SCA Documentation Menu
+Tuscany cwiki & Website Structure

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-roadmap.html b/site/trunk/site-publish/sca-java-roadmap.html new file mode 100644 index 0000000000..0108ef997f --- /dev/null +++ b/site/trunk/site-publish/sca-java-roadmap.html @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Roadmap + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Roadmap + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +

+ + + + + + + +
+ +

Web 2.0 Roadmap

+ +

JSON-RPC

+ +

Scenarios:

+
    +
  • A client application invoke a SCA Service using JSON-RPC and the invocation returns a business exception. +
      +
    • e.g Empty catalog throws a Busines Exception. Business Exception should properly propagate and display nicely to client.
    • +
    +
  • +
  • A client application invoke a SCA Service using JSON-RPC and the invocation returns a runtime exception. +
      +
    • e.g Try to retrieve catalog items from a catalog service that is un-available. Runtime exception properly propagate and display nicely to client.
    • +
    +
  • +
  • A client application needs to access a service exposed trough JSON-RPC binding that requires authentication. +
      +
    • e.g make sure if nobody can get to the catalog if it's not authenticated
    • +
    +
  • +
+ + +

Features/JIRAS

+ +
    +
  • Exceptions not properly reported to client by JSONRPC binding (TUSCANY-1961)
  • +
  • Support for security (this will require exploratory work to understand what SCA security policies make sense to implement) (TUSCANY-2394 )
  • +
  • Business Exception reporting, business exceptions raised by a service should be transported to the client through JSON and reported to the client as proper JavaScript business exceptions (TUSCANY-2394 )
  • +
  • Better runtime exception reporting, runtime exceptions occurring as part of a JSON-RPC interaction should be properly reported to the JavaScript client. (TUSCANY-2394)
  • +
  • Complete data binding support, a set of test cases should be written to make sure that the POJO and JAXB patterns supported in Java components have a proper mapping to JSON and that the application developer can easily understand the corresponding representation of these objects in JavaScript. (TUSCANY-2394)
  • +
  • Build some samples that consume publicly available JSON services (e.g from programmableweb, or yahoo)
  • +
+ + + +

ATOM

+ +

Scenarios

+ +

Features/JIRAS

+ +
    +
  • Complete support for ATOM API +
      +
    • Analyze specification gaps
    • +
    • Complete support for location header
    • +
    • Full support for lastmodified in HTTP headers and etags +
        +
      • needs to involve application logic, to properly find the lastmodified data...
      • +
      +
    • +
    +
  • +
  • Support for postMedia and putMedia, including the ability to stream that content in the target application component
  • +
  • Support for security (this will require exploratory work to understand what SCA security policies make sense to implement) +
      +
    • Provide security support for verb actions (e.g. delete)
    • +
    • ATOM pub users often need to login. Google GDATA supports SSO
    • +
    • Provide support for Authentication|Encryption|Signatures ???
    • +
    +
  • +
  • Enhanced error reporting, mapping errors like resource not found to HTTP 404. Other errors might be mapped to HTTP 500 with proper exception in the message body.
  • +
  • Ability to negotiate content types (XML, JSON etc) and use the corresponding Tuscany data bindings to provide data with the requested content type
  • +
  • Enhance performance on low-bandwidth by providing gZipped contents enabled by http headers
  • +
  • Improve the client side programming model by researching available JavaScript Atom API or investigate creating one.
  • +
  • Integrate Atom binding with persistence repository (e.g database and implementation.data.xml) +
      +
    • investigate how to handle relationships (e.g When you have a customer that owns multiple accounts, you can define HREF to a account feed, but how do you handle that sub-set of accounts that the customer owns.)
    • +
    +
  • +
  • ATOM workspace support
  • +
+ + +

References:

+ + + +

Widget

+ +

Scenarios

+ +

Features/JIRAS

+ +
    +
  • Support references wiring to services from multiple hosts/ports (cross domain support using on demand js pattern)
  • +
  • Add support for other bindings (e.g DWR)
  • +
  • Support widget implementation over web-app
  • +
+ + +
    +
  • +
      +
    • Discuss possible deprecation of scaDomain.js
    • +
    +
  • +
  • Enable support for google widgets (using shindig)
  • +
  • Upgrade to latest open ajax (tutorial)
  • +
+ + + +

Sample, Scenarios and Tutorial

+ +
    +
  • Integrate implementation-data-xml to provide data feeds. +
      +
    • Use store tutorial to drive this item
    • +
    +
  • +
+ + +
    +
  • PhotoGallery scenario ?
  • +
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-sandbox.html b/site/trunk/site-publish/sca-java-sandbox.html new file mode 100644 index 0000000000..6cb7cf7346 --- /dev/null +++ b/site/trunk/site-publish/sca-java-sandbox.html @@ -0,0 +1,78 @@ + + + + + + + SCA Java Sandbox : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java Sandbox + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-subproject-menu.html b/site/trunk/site-publish/sca-java-subproject-menu.html new file mode 100644 index 0000000000..fd68dc47d3 --- /dev/null +++ b/site/trunk/site-publish/sca-java-subproject-menu.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Subproject Menu + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > Subproject Menus > SCA Java Subproject Menu + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ + +
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-subproject.data/tuscanylogo.jpg b/site/trunk/site-publish/sca-java-subproject.data/tuscanylogo.jpg new file mode 100644 index 0000000000..2c7a85b0c2 Binary files /dev/null and b/site/trunk/site-publish/sca-java-subproject.data/tuscanylogo.jpg differ diff --git a/site/trunk/site-publish/sca-java-subproject.data/tuscanylogo.jpg.jpeg b/site/trunk/site-publish/sca-java-subproject.data/tuscanylogo.jpg.jpeg new file mode 100644 index 0000000000..bf56a9fcb0 Binary files /dev/null and b/site/trunk/site-publish/sca-java-subproject.data/tuscanylogo.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-subproject.html b/site/trunk/site-publish/sca-java-subproject.html new file mode 100644 index 0000000000..292fa3f0b7 --- /dev/null +++ b/site/trunk/site-publish/sca-java-subproject.html @@ -0,0 +1,130 @@ + + + + + + + SCA Java Subproject : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java Subproject + + User List | Dev List | Issue Tracker   +
+ + + + +
+
+ +
+
+ + +
+ + + + +

Tuscany SCA Java

+ +

Tuscany Java SCA provides the infrastructure to develop and run SCA based applications. At the very high level, Java SCA can be divided into core and extensions. The core supports the SCA assembly model, Tuscany value-add features and simple extension point to add extensions. Tuscany Java SCA is designed to be embedded in, or provisioned to, a number of different host environments.

+ +

Tuscany SCA Java extension points allow any binding type, implementation types(programming model), policy and data binding to be easily added to it. The Tuscany community has contributed the extensions that are shown below. An extension becomes available for the latest Tuscany release as volunteers test and enhance the extension to work with that release.

+ + + + + + + + + + + + + + +
Implementation TypesBindingsData Bindings Interface Types
Java components
+Spring assemblies
+Scripting with JSR 223(JavaScript, Groovy, Ruby, Python & XSLT)
+BPEL (a prototype using Apache ODE)
Webservice using Apache Axis2
+JMS (tested with Apache ActiveMQ)
+JSON-RPC
JAXB
+SDO
+Axiom
+Castor
+XMLBeans
Java
+WSDL 1.1
+ +

SCA Java is integrated with Tomcat, Jetty and Geronimo.

+

Copyright © 2006, The Apache Software Foundation Apache Tuscany is undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Web Services PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-tools-guides.html b/site/trunk/site-publish/sca-java-tools-guides.html new file mode 100644 index 0000000000..89fb33d91c --- /dev/null +++ b/site/trunk/site-publish/sca-java-tools-guides.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Tools Guides + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Tools Guides + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

contrib2wsdl

+ +

Usage

+ +
+
+java org.apache.tuscany.tools.contrib2wsdl.Contrib2WSDL -c ./MyContribution -o ./myOutputDir
+
+
+ +

Description

+ +

When you use binding.ws as a service binding you can ask the runtime to generate a WSDL description of the service endpoint. For example, given the component description...

+ +
+
+<component name="Component1">
+  <implementation.java class="test.ComponentImpl"/>
+  <service name="ComponentService">
+    <binding.ws uri="http://localhost:8080/Component1/ComponentService"/>
+  </service>
+</component>
+
+
+ +

Then when you point your browser at http://localhost:8080/Component1?wsdl you will get the WSDL document that describes the Component1/ComponentService service.

+ +

The contrib2wsdl tool generates WSDL documents for all such service endpoints in the composite at the same time and writes the resulting WSDL documents to the specified directory. Given a contribution of the following structure...

+ +
+
+MyDirectory
+  MyContribution
+    test
+      CompoentImpl.class
+    mycomposite.composite
+      <composite>
+        <component name="Component1">
+          <implementation.java class="test.ComponentImpl"/>
+          <service name="ComponentService">
+            <binding.ws uri="http://localhost:8080/Component1/ComponentService"/>
+          </service>
+       </component>
+        <component name="Component2">
+          <implementation.java class="test.ComponentImpl"/>
+          <service name="ComponentService">
+            <binding.ws uri="http://localhost:8080/Component1/ComponentService"/>
+          </service>
+       </component>
+     </composite>
+
+
+ +

WSDL files can be generated using the commands as follows...

+ +
+
+cd MyDirectory
+java org.apache.tuscany.tools.contrib2wsdl.Contrib2WSDL -c MyContribution -o MyOutput
+
+
+ +

This results in two WSDL files in the MyOutput directory. One for the Component1/ComponentService and one for the Component2/ComponentService.

+ +

Both -c and -o default to the current directory.

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-travel-sample-10.html b/site/trunk/site-publish/sca-java-travel-sample-10.html new file mode 100644 index 0000000000..0de3c89a40 --- /dev/null +++ b/site/trunk/site-publish/sca-java-travel-sample-10.html @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Travel Sample 1.0 + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java Travel Sample 1.0 + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

SCA Java Travel Sample 1.0 (June 2010)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + +
File Signature
apache-tuscany-scatours-1.0.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + +
File Signature
apache-tuscany-scatours-1.0.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-scatours-1.0.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-scatours-1.0.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-scatours-1.0.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-scatours-1.0.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-scatours-1.0.tar.gz.asc
+
+
+ +

+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-travel-sample-1x-releases.html b/site/trunk/site-publish/sca-java-travel-sample-1x-releases.html new file mode 100644 index 0000000000..b5e4138225 --- /dev/null +++ b/site/trunk/site-publish/sca-java-travel-sample-1x-releases.html @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Travel Sample 1.x Releases + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Releases > SCA Java Travel Sample 1.x Releases + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + +

Latest Release

+ +

SCA Java Travel Sample 1.0 (June 2010)

+ +

For full detail about the release please see the RELEASE_NOTES and CHANGES files.

+ +

Windows

+ +
+ + + + + + + + + +
File Signature
apache-tuscany-scatours-1.0.zip ASC MD5
+
+ + +

Linux / Mac OS X / Unix

+ +
+ + + + + + + + + +
File Signature
apache-tuscany-scatours-1.0.tar.gz ASC MD5
+
+ + +

Verifying the downloads

+ +

To ensure the integrity of the release artifacts they are digitally signed. You can find more information about the way that we sign releases here. To verify the integrity of the downloaded files you must use signatures downloaded from our main distribution directory not from the distribution mirrors.

+ +

MD5 checksums can be verified simply by regenerating the checksum and comparing it against the checksum (the md5 file) supplied with the release. There are various utilities that can be used to generate the checksum, for example

+ +
+
+openssl md5 apache-tuscany-scatours-1.0.tar.gz
+
+
+

or

+
+
+md5sum apache-tuscany-scatours-1.0.tar.gz
+
+
+ +

PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from our main distribution directory, rather than from a mirror. Then verify the signatures using, for example

+ +
+
+pgpk -a KEYS
+pgpv apache-tuscany-scatours-1.0.tar.gz.asc
+
+
+

or

+
+
+pgp -ka KEYS
+pgp apache-tuscany-scatours-1.0.tar.gz.asc
+
+
+

or

+
+
+gpg --import KEYS
+gpg --verify apache-tuscany-scatours-1.0.tar.gz.asc
+
+
+ +

+ +

Previous Releases

+ +

There are no previous releases of the SCA Java Travel Sample.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-tutorial.html b/site/trunk/site-publish/sca-java-tutorial.html new file mode 100644 index 0000000000..96844f99c8 --- /dev/null +++ b/site/trunk/site-publish/sca-java-tutorial.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Tutorial + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Tutorial + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

This is a tutorial for SCA sample.

+ + +


+
Apache Tuscany SCA User Guide
+ +
+ +
This page to be filled in
+
+ +

section1
+

+ +

This page will be used for SCA Java Tutorial

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-ug-introduction.html b/site/trunk/site-publish/sca-java-ug-introduction.html new file mode 100644 index 0000000000..7ec9cc4ac9 --- /dev/null +++ b/site/trunk/site-publish/sca-java-ug-introduction.html @@ -0,0 +1,125 @@ + + + + + + + + SCA Java UG - Introduction + + + + + + + +
+  Apache Tuscany > Index > SCA Java > SCA Java User Guide > SCA Java UG - Introduction + +
+ + + + + + +
+
+ +
+ +
+ Added by Shelita Overton, last edited by Dan Murphy on Feb 13, 2007 +  (view change) + +
+ +
+
+

What Is SCA?

+ +

Service Component Architecture (SCA) is a simple model for creating service-oriented applications.

+ +

Service Oriented Architecture (SOA) is an architectural approach driven by the need to overcome the challenges of tightly coupled and department-specific applications. SOA promises benefits such as improved business agility, improved flexibility, cost reduction, and the easy sharing of information in heterogeneous and distributed environments.

+ +

Service Component Architecture (SCA) addresses the complexity of developing an SOA solution through its simple model for creating service-oriented applications for the whole enterprise - from the client to the back-end.

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-ug-obtaining-tuscanys-java-sca-implementation.html b/site/trunk/site-publish/sca-java-ug-obtaining-tuscanys-java-sca-implementation.html new file mode 100644 index 0000000000..d2c2f3578e --- /dev/null +++ b/site/trunk/site-publish/sca-java-ug-obtaining-tuscanys-java-sca-implementation.html @@ -0,0 +1,137 @@ + + + + + + + + SCA Java UG - Obtaining Tuscany's Java SCA Implementation + + + + + + + +
+  Apache Tuscany > Index > SCA Java > SCA Java User Guide > SCA Java UG - Obtaining Tuscany's Java SCA Implementation + +
+ + + + + + +
+
+ +
+ +
+ Added by Dan Murphy, last edited by Dan Murphy on Feb 13, 2007 +  (view change) + +
+ +
+
+

Choosing between a package runtime and building your own

+ +

Downloading and installing a release

+ +
+ +
+ Children + + Show Children + +
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-user-documenations.html b/site/trunk/site-publish/sca-java-user-documenations.html new file mode 100644 index 0000000000..f6161a4554 --- /dev/null +++ b/site/trunk/site-publish/sca-java-user-documenations.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java User Documenations + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Java SCA Documentation TOC > SCA Java User Documenations + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
SCA Java User Documentations
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-user-guide-introduction.html b/site/trunk/site-publish/sca-java-user-guide-introduction.html new file mode 100644 index 0000000000..cdd852a0bd --- /dev/null +++ b/site/trunk/site-publish/sca-java-user-guide-introduction.html @@ -0,0 +1,125 @@ + + + + + + + + SCA Java User Guide - Introduction + + + + + + + +
+  Apache Tuscany > Home > Java SCA > Java SCA Menu > Documentation > Java SCA Documentation Menu > SCA Java User Guide > SCA Java User Guide - Introduction + +
+ + + + + + +
+
+ +
+ +
+ Added by Shelita Overton, last edited by Dan Murphy on Feb 13, 2007 +  (view change) + +
+ +
+
+

What Is SCA?

+ +

Service Component Architecture (SCA) is a simple model for creating service-oriented applications.

+ +

Service Oriented Architecture (SOA) is an architectural approach driven by the need to overcome the challenges of tightly coupled and department-specific applications. SOA promises benefits such as improved business agility, improved flexibility, cost reduction, and the easy sharing of information in heterogeneous and distributed environments.

+ +

Service Component Architecture (SCA) addresses the complexity of developing an SOA solution through its simple model for creating service-oriented applications for the whole enterprise - from the client to the back-end.

+
+ + +
+
+ + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks.jpg b/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks.jpg new file mode 100644 index 0000000000..9cd3252a12 Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks.jpg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks.jpg.jpeg b/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks.jpg.jpeg new file mode 100644 index 0000000000..1b26b264d4 Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks2.jpg b/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks2.jpg new file mode 100644 index 0000000000..0c92c4ed66 Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks2.jpg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks2.jpg.jpeg b/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks2.jpg.jpeg new file mode 100644 index 0000000000..b482732c89 Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/CalculatorBlocks2.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/calculator.png b/site/trunk/site-publish/sca-java-user-guide.data/calculator.png new file mode 100644 index 0000000000..995a57b1fd Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/calculator.png differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/calculator.png.jpeg b/site/trunk/site-publish/sca-java-user-guide.data/calculator.png.jpeg new file mode 100644 index 0000000000..54fee3f7ee Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/calculator.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/calculator1.png b/site/trunk/site-publish/sca-java-user-guide.data/calculator1.png new file mode 100644 index 0000000000..3cf9996360 Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/calculator1.png differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/calculator1.png.jpeg b/site/trunk/site-publish/sca-java-user-guide.data/calculator1.png.jpeg new file mode 100644 index 0000000000..89386ff62e Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/calculator1.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/calculator2.png b/site/trunk/site-publish/sca-java-user-guide.data/calculator2.png new file mode 100644 index 0000000000..69b9027a44 Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/calculator2.png differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/calculator2.png.jpeg b/site/trunk/site-publish/sca-java-user-guide.data/calculator2.png.jpeg new file mode 100644 index 0000000000..c52fe73a5c Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/calculator2.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/calculator3.png b/site/trunk/site-publish/sca-java-user-guide.data/calculator3.png new file mode 100644 index 0000000000..33d13a9ed1 Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/calculator3.png differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/calculator3.png.jpeg b/site/trunk/site-publish/sca-java-user-guide.data/calculator3.png.jpeg new file mode 100644 index 0000000000..7c77067545 Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/calculator3.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/distributed-abstract.png b/site/trunk/site-publish/sca-java-user-guide.data/distributed-abstract.png new file mode 100644 index 0000000000..cb0544939d Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/distributed-abstract.png differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/distributed-abstract.png.jpeg b/site/trunk/site-publish/sca-java-user-guide.data/distributed-abstract.png.jpeg new file mode 100644 index 0000000000..3341fd8a7f Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/distributed-abstract.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/java_imp.jpg b/site/trunk/site-publish/sca-java-user-guide.data/java_imp.jpg new file mode 100644 index 0000000000..597237981d Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/java_imp.jpg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.data/java_imp.jpg.jpeg b/site/trunk/site-publish/sca-java-user-guide.data/java_imp.jpg.jpeg new file mode 100644 index 0000000000..e7a34f439a Binary files /dev/null and b/site/trunk/site-publish/sca-java-user-guide.data/java_imp.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java-user-guide.html b/site/trunk/site-publish/sca-java-user-guide.html new file mode 100644 index 0000000000..36d5aa8f17 --- /dev/null +++ b/site/trunk/site-publish/sca-java-user-guide.html @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java User Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+
Apache Tuscany SCA User Guide
+ +
+
This page is undergoing complete re-write to be more like a user guide than it is today. You are welcome to help review and complete it.
+
+ +

About Tuscany User Guide
+

+

It is assumed that by now you have browsed through the introduction to SCA section or are familiar with SCA. This user guide helps you learn more about SCA through Tuscany. It starts with building a simple application and progresses into more advanced features through references to samples that reside in Tuscany.

+ +

Before we start, let's emphasise that it is Tuscany's goal to provide an implementaiton that avoids imposing rules and requirements on how you write your applications. In fact the goal is to let you write application code without being concerned about the technology you choose or the environment in which it will be used. You focus on your business logic and Tuscany infrastructure will handle the rest.

+ +

Create Your First Application
+

+

This simple exercise provides you with a hands-on experience for creating an SCA calculator application. Although this is a simple application, it will cover the following items:

+
    +
  • Creating SCA POJO-based components
  • +
  • Composing an application
  • +
  • Deploying the application
  • +
  • Modifying the application to use a different binding
  • +
+ + +

Give create a calculator application a try.

+ +

Create a Webservices component
+

+

Learn how to expose your pojo components as webservices. This will cover

+
    +
  • Creating SCA POJO-based component and exposing it as a webservice
  • +
+ + +

Give Building your first web services using Tuscany a try.

+ +

Create a Distributed Application
+

+

A Tuscany application can be run in a single or multi-node environment. Here we introduce the Tuscany node and SCA domain and explain how the calculator example can be distributed across multiple nodes. We will cover the following:

+
    +
  • What is a node?
  • +
  • What is the SCA domain
  • +
  • How to create and application that will run across multiple nodes in a domain
  • +
+ + +

Take a look at Distributed SCA Domain

+ +

Create a Store Enterprise Application
+

+ +

Now that you have created a simple calculator application, let's move on to a more interesting application called store. This application is developed in Eclipse enviromment and uses more advanced features that are offered in Tuscany. You will notice that it is as simple to create this application as it was to create the calculator application.

+ +

Getting Started with Tuscany using a Tuscany Distribution In Eclipse
+This is a quick getting started guide that go trough the steps of building the store scenario using the Tuscany SCA distribution manually installed into Eclipse

+ +

Getting Started with Tuscany using the Tuscany Eclipse Plugin

+ +

This is a quick getting started guide that go trough the steps of building the store scenario using the Tuscany Eclipse plugin.

+ +

Host Environments
+

+ +

Tusncany applications can be run in a Tuscany standalone environment or in multitude of different host environments. You have seen examples of how to run in standalone environments in the previous sections. Here we cover other platforms.

+

Tomcat

+

Running a Tuscany SCA Java enabled webapp in Tomcat is as simple as copying the webapp to the Tomcat webapps directory.

+ +

Geronimo

+ +

TODO ... get link from Vamsi

+ +

WebSphere

+ +

Please see this blog entry to learn how to do this: http://jsdelfino.blogspot.com/2007/10/how-to-use-apache-tuscany-with.html

+ +

WebLogic

+ +

Please see this user's blog to learn how to do this: http://davesowerby.blogspot.com/2008/02/using-tuscany-with-weblogic.html

+ +

Eclipse

+ +

You can develop and run your applications in Eclipse environment.
+Getting Started with Tuscany using a Tuscany Distribution In Eclipse
+Tuscany also provides a Tuscany Eclipse plug-in to facilitate the development of SCA applications on Tuscany in the Eclipse environment.
+Getting Started with Tuscany using the Tuscany Eclipse Plugin

+ +

Using Extensions
+

+

What are extensions? Well, we call these extensions: bindings, implementation types, interface types, policies. Think of SCA Java infrastructure as providing the framework that supports all these pluggable functionality. Bindings provide protocol handling, implementation types provide support for different languages and programming models, interface types allow enable you to define interfaces in different ways for example Java, WSDL and policies enable you to choose which type of policies you want to apply to your application. You can pick and choose what you need based on your requirements and the technologies that you use. For a complete list of available extensions and their documentation please check this link.

+ +

Running Tuscany with Java2 Security Enabled
+

+

Tuscany can be enabled to run with Java2 security on.
+Running Tuscany with Java 2 Security Enabled

+ + +

Do I need all of Tuscany?
+

+

Tuscany SCA has a very modular architecture. Think of it as building blocks. You pick what you need for your particular application. In 1.x, there is one binary distribution. you can get to a smaller subset through building the source with the appropriate modules that you need. In 2.x code line, we are aiming to provide smaller distributions. For more information about how you can build a smaller distribution please see this link

+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-user-reference.html b/site/trunk/site-publish/sca-java-user-reference.html new file mode 100644 index 0000000000..ceb336a408 --- /dev/null +++ b/site/trunk/site-publish/sca-java-user-reference.html @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java User Reference + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Reference + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + +

Implementation Types
implementation.java
Support for SCA components implemented with Java classes
Available from 0.90
implementation.script
Support for SCA components implemented with scripting languages
Available from 0.90
implementation.spring
Support for spring
Available from 0.91
implementation.resource
exposes file resources
Available from 0.91
implementation.bpel
Support for components implemented in BPEL
Available from 1.0
implementation.osgi
Support for osgi
Available from 1.0
implementation.xquery
Support for components implemented in xquery
Available from 1.0
implementation.web
Support JEE web apps as implementation types
Under development
implementation.widget
Support wiring of SCA components in Web 2.0 style applications
Available from 1.0

Protocol Bindings
binding.ajax
Communication with AJAX clients
Available from 0.90
binding.corba
CORBA Binding
Available from 1.4
binding.erlang
Communication with Erlang nodes and clients. Supports Erlang remote procedure calls (RPC) and Erlang messaging, both service and reference side.
Available from 1.6 (source distribution only)
binding.jms
Asynchronous JMS messaging
Available from 1.1
binding.jsonrpc
The JSON-RPC protocol
Available from 0.90
binding.rmi
The Java RMI protocol
Available from 0.90
binding.ws
SOAP/HTTP web services
Available from 0.90
binding.ejb
EJB Binding
Available from 0.90
binding.http
Supports binding of methods over standard Hyper Text Transfer Protocol (HTTP), allowing you to create, retrieve, update, delete items. Also supports conditional creates, retrieves, updates, and deletes using the ETag and LastModified caching protocol described in HTTP.
Available from 0.90. Caching available from 1.3.2.
binding.atom
supports Atom-publishing (a standard REST protocol), allowing you to create, retrieve, update, delete Atom entries
Available from 0.91
binding.rss
Consumes or provides an RSS feed
Available from 0.91

Data Bindings
databinding-axiom
Support for AXIOM databinding
Available from 0.90
databinding-jaxb
Support for JAXB databinding
Available from 0.90
databinding-sdo
Support for SDO databinding 
Available from 0.90
databinding-sdo-axiom
Support optimzed SDO to AXIOM transformation
Available from 0.90

Interfaces
interface-java
Interfaces described with java interfaces
Available from 0.90
interface.wsdl
Interfaces described with WSDL definitions
Available from 0.90

Hosts
host.embedded
The original simple embeddable runtime
Available from 0.90
http-jetty
The integration between Tuscany and the Jetty web container
Available from 0.90
http-tomcat
The integration between Tuscany and the Tomcat web container
Available from 0.90

Policy
definitions.xml
Defined intents, policy sets and binding defaults
Available from 1.0
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-web-applications.html b/site/trunk/site-publish/sca-java-web-applications.html new file mode 100644 index 0000000000..36d2dc61dc --- /dev/null +++ b/site/trunk/site-publish/sca-java-web-applications.html @@ -0,0 +1,248 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Web Applications + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Web Applications + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

Using Tuscany in JEE Web Applications

+ +

This page describes how to use Tuscany in JEE Web Applications.

+ +

You can use a JEE Web application as a container for running Tuscany SCA applications, and this enables building applications which combine both JEE features and SCA features. When running Tuscany in a Web application there is a single SCA domain contained entirely within the web application (see note at bottom of page).

+ +

When using Tuscany in Web applications there are three aspects to consider:

+
    +
  1. Configuring the Web application
  2. +
  3. Configuring the Tuscany SCA domain
  4. +
  5. Accessing the SCA services within the SCA domain
  6. +
+ + +

Configuring the web application

+ +

All the Tuscany jar's and dependencies must be included in the WEB-INF/lib folder. Some configuration in the web.xml file is required - a ContextListener is needed when using non-HTTP based SCA services so that the Tuscany runtime is started when the Web Application starts, a Servlet Filter is required when using HTTP based SCA services. The simplest approach is to always include both ContextListener and Filter definitions in the web.xml so that everything works for all types of SCA configuration.

+ +

The following show the XML snippets show the necessary definitions for the web.xml file:

+
+
+<listener>
+   <listener-class>org.apache.tuscany.sca.host.webapp.TuscanyContextListener</listener-class>
+</listener>
+
+
+ +
+
+<filter>
+    <filter-name>tuscany</filter-name> 
+    <filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class> 
+</filter>
+
+<filter-mapping>
+    <filter-name>tuscany</filter-name> 
+    <url-pattern>/*</url-pattern> 
+</filter-mapping>
+
+
+
+ +

Configuring the Tuscany SCA domain

+ +

Tuscany treats the entire Web application as a single contribution and the deployable composites within the contribution can be configured in three ways:

+
    +
  1. by including a META-INF/sca-contributions.xml
  2. +
  3. by including deployable composite files within a folder named META-INF/sca-deployables
  4. +
  5. by using what is known as an "application composite" which is a single composite file named WEB-INF/web.composite
  6. +
+ + + +

Accessing the SCA services within the SCA domain

+ +

For JSPs you can use an SCA taglib or access the SCADomain directly. To use the taglib, declare it with:

+ +
+
<%@ taglib uri="http://www.osoa.org/sca/sca_jsp.tld" prefix="sca" %>
+
+ +

and then you can define references to services with the sca:reference tag, eg:

+ +
+
<sca:reference name="CalculatorServiceComponent" type="calculator.CalculatorService" />
+
+ +

That treats the domain as one big "virtual" component with every service in the domain being available as a reference in the JSP

+ +

The Tuscany SCADomain object is stored in the Web applications ServletContext object so application code can get hold of that and use the SCADomain just like when running Tuscany applications in a standalone JSE environment. For example, a JSP can do the follow:

+ +
+
+<%
+   SCADomain scaDomain = (SCADomain) application.getAttribute("org.apache.tuscany.sca.SCADomain");
+   CalculatorService calculatorService = (CalculatorService)scaDomain.getService(CalculatorService.class, "CalculatorServiceComponent");
+%>
+
+
+ + +

Samples showing Tuscany in JEE Web Applications

+ +

Tuscany comes with several samples using JEE Web Applications. The simplest is the calculator-webapp which shows a JSP invoking an SCA component. Another is the calculator-ws-webapp which extends the calculator-webapp sample to use SCA Web Services, another is the alert-aggregator demo which shows a more complete application.

+ +
The OASIS SCA JEE specification
What is described on this page is Tuscany support that has been implemented ahead of on going work in the OASIS JEE specification.
+The OASIS JEE specification has now made more progress and Tuscany will be updating the Web application support in line with the specification.
+See the SCA-J JEE Subcommittee page and the Tuscany dev list for more information.
+ +
The Tuscany-Geronimo integration plugin
As one of the steps to supporting the OASIS JEE specification there is ongoing work integrating Tuscany into the Apache Geronimo JEE application server. More information about that is available on the plugin page.
+ +
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-whats-new.html b/site/trunk/site-publish/sca-java-whats-new.html new file mode 100644 index 0000000000..fe5c5896f4 --- /dev/null +++ b/site/trunk/site-publish/sca-java-whats-new.html @@ -0,0 +1,67 @@ + + + + + + + SCA Java Whats New : Apache Tuscany + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Menus > SCA > Java SCA Menu > SCA Java Whats New + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Items of news relating to the SCA Java implementation...

+
+
+
+
+ + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-java-wish-list.html b/site/trunk/site-publish/sca-java-wish-list.html new file mode 100644 index 0000000000..9dfac3acda --- /dev/null +++ b/site/trunk/site-publish/sca-java-wish-list.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Wish List + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > SCA Java Wish List + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

This is a list to capture those things you really want to see in Tuscany SCA Java. Please consider youself invited to help develop content or provide feedback to enhance Apache Tuscany. If there are items that you want that are missing from the list add them. If there is something you want to work on then feel free to do so. If you want to tag your name against the item you are working on that would be great. Putting your name here is just an expression of interest it doesn't mean you have to go and do all the work on your own. If an item is done and finds its way into the code base then you can move it to the Next Release page.

+ + +

General

+
    +
  • Type scoping and contexts
  • +
  • Logging stratergy and better error reporting +
      +
    • in the assembly model (jsdelfino)
    • +
    • in the contribution service (lresende)
    • +
    +
  • +
  • Lifecycle management improvements ?
  • +
+ + +

Core Runtime

+ +

Bindings

+ +

Implementations

+
    +
  • XSLT (we might get some level of function currently from the script extension)
  • +
  • Remove requirement to have .componentType side files for components implemented using scripting languages
  • +
+ + +

Databindings

+
    +
  • Hook the script implementation up to the Tuscany databinding framework
  • +
+ + +

Hosting

+
    +
  • Allow port to be specified on whicto start an http connector
  • +
  • Deeper Tomcat integration?
  • +
+ + +

Domain and Contribution

+
    +
  • SCA domain API improvements ?
  • +
  • Distributed domains (slaws)
  • +
+ + +

Samples

+
    +
  • Provide a version of Aggregator sample as per Tuscany Native SCA (slaws)
  • +
  • JSONRPC version of calculator sample that we can refer to in the user guide
  • +
  • Web services version of calculator sample that we can refer to in the user guide
  • +
+ + +

ITests

+ +

SCA Spec Coverage

+ +

Anything Else You Fancy

+ + +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java-work-in-progress.html b/site/trunk/site-publish/sca-java-work-in-progress.html new file mode 100644 index 0000000000..368a5b3c6d --- /dev/null +++ b/site/trunk/site-publish/sca-java-work-in-progress.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java Work-In-Progress + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-java.data/distributed-abstract smallest.png b/site/trunk/site-publish/sca-java.data/distributed-abstract smallest.png new file mode 100644 index 0000000000..3fa9fab7ab Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/distributed-abstract smallest.png differ diff --git a/site/trunk/site-publish/sca-java.data/distributed-abstract smallest.png.jpeg b/site/trunk/site-publish/sca-java.data/distributed-abstract smallest.png.jpeg new file mode 100644 index 0000000000..4806f70f66 Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/distributed-abstract smallest.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java.data/distributed-abstract.png b/site/trunk/site-publish/sca-java.data/distributed-abstract.png new file mode 100644 index 0000000000..170d590f16 Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/distributed-abstract.png differ diff --git a/site/trunk/site-publish/sca-java.data/distributed-abstract.png.jpeg b/site/trunk/site-publish/sca-java.data/distributed-abstract.png.jpeg new file mode 100644 index 0000000000..21d2977e9c Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/distributed-abstract.png.jpeg differ diff --git a/site/trunk/site-publish/sca-java.data/getting_started_Rest_099_07.pdf b/site/trunk/site-publish/sca-java.data/getting_started_Rest_099_07.pdf new file mode 100644 index 0000000000..3a628e1d6e Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/getting_started_Rest_099_07.pdf differ diff --git a/site/trunk/site-publish/sca-java.data/javasca smaller.jpg b/site/trunk/site-publish/sca-java.data/javasca smaller.jpg new file mode 100644 index 0000000000..78cad38be3 Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/javasca smaller.jpg differ diff --git a/site/trunk/site-publish/sca-java.data/javasca smaller.jpg.jpeg b/site/trunk/site-publish/sca-java.data/javasca smaller.jpg.jpeg new file mode 100644 index 0000000000..cea158aeec Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/javasca smaller.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java.data/javascaSmall2.jpg b/site/trunk/site-publish/sca-java.data/javascaSmall2.jpg new file mode 100644 index 0000000000..6498d08553 Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/javascaSmall2.jpg differ diff --git a/site/trunk/site-publish/sca-java.data/javascaSmall2.jpg.jpeg b/site/trunk/site-publish/sca-java.data/javascaSmall2.jpg.jpeg new file mode 100644 index 0000000000..51b6935845 Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/javascaSmall2.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java.data/tuscanylogo.jpg b/site/trunk/site-publish/sca-java.data/tuscanylogo.jpg new file mode 100644 index 0000000000..2c7a85b0c2 Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/tuscanylogo.jpg differ diff --git a/site/trunk/site-publish/sca-java.data/tuscanylogo.jpg.jpeg b/site/trunk/site-publish/sca-java.data/tuscanylogo.jpg.jpeg new file mode 100644 index 0000000000..bf56a9fcb0 Binary files /dev/null and b/site/trunk/site-publish/sca-java.data/tuscanylogo.jpg.jpeg differ diff --git a/site/trunk/site-publish/sca-java.html b/site/trunk/site-publish/sca-java.html new file mode 100644 index 0000000000..fdff772e62 --- /dev/null +++ b/site/trunk/site-publish/sca-java.html @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + +

Tuscany SCA Java

+ +

Tuscany Java SCA is a lightweight runtime that is designed to run standalone or provisioned to different host environments. The modularized architecture allows users to pick and choose modules that cater to their business needs therefore resulting in small footprint.

+ +

At a high level,Tuscany Java SCA infrastructure can be divided into two categories of modules: core and extensions. The core modules consist of selectable components that provide support for SCA and data handling as well as the core runtime. The core runtime includes functions such as loading system and application services, building and managing composites. The extension category consists of a set of selectable modules that support integration of various technologies that are required in SOA environment. This includes support for various protocols through bindings, programming languages through implementations, data types, security and transaction through policies. This whole thing constitutes an SCA node. An SCA composite application can be spread across multiple nodes in a cloud or be run on a single node. This administrative scope is referred to as the SCA domain.
+
+For a complete list of supported extensions please see extension documentation . The extensible architecture of SCA Java allows any missing extension to be easily added.

+ +

Tuscany SCA Java has implemented SCA specifications 1.0 defined by www.osoa.org in its 1.x code line. Tuscany community is working on compliance with OASIS version of SCA in 2.x code line. To document the work in progress we have created a roadmap page on our wiki Java SCA Roadmap Wiki Page. Please consider yourself invited to get involved in any of these items or suggest new ones that you want to work on.

+ +

Build your first SCA application in 10 minutes! Give it a try

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-jumpstart.html b/site/trunk/site-publish/sca-jumpstart.html new file mode 100644 index 0000000000..b40bc9fb4c --- /dev/null +++ b/site/trunk/site-publish/sca-jumpstart.html @@ -0,0 +1,118 @@ + + + + + + + SCA Jumpstart : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Jumpstart + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Jump-Start Guide

+ +

Note that the 2.0 alpha runtime samples distributions assume you have JDK 5 and Maven 2.04 installed.

+ +

1. Download and unzip the 2.0 alpha runtime distribution
+2. Download and unzip the 2.0 alpha samples
+3. Build the common sample module from the samples root directory by doing:

+ +
+
mvn install
+
+ +

4. Go to standalone under the samples root directory and select the caculator sample
+5. Build the sample by doing:

+ +
+
mvn install
+
+ +

6. Run the sample using the following command:

+ +
+
java -jar <path to launcher bin directory where you downloaded the standalone runtime> calc.jar add 1 2
+
+ +

7. The loan application sample may also be run by building it executing the following:

+ +
+
java -jar <path to launcher bin directory where you downloaded the standalone runtime> loanapplication.jar
+
+ +

Alternatively the samples can be run from the standalone runtime directory using:

+ +
+
java -jar bin/launcher.jar <path to the loanapplication.jar>
+
+ + + +
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-menu.html b/site/trunk/site-publish/sca-menu.html new file mode 100644 index 0000000000..0bb4ddb9f2 --- /dev/null +++ b/site/trunk/site-publish/sca-menu.html @@ -0,0 +1,81 @@ + + + + + + + SCA Menu : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > To Be Deleted > SCA Menu + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

Available

+

Java SCA
+Native SCA
+PHP SCA

+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-native-architecture-guide.html b/site/trunk/site-publish/sca-native-architecture-guide.html new file mode 100644 index 0000000000..0d3e93f1bd --- /dev/null +++ b/site/trunk/site-publish/sca-native-architecture-guide.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Architecture Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Documentation Menu > SCA Native Architecture Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + +
+ +

High level architecture view of SCA Native

+ +

Tuscany SCA Native consists of the kernel and extensions.

+ +

The kernel loads any .composite, .xsd, .wsdl or
+.componentType files found under a directory defined by the
+TUSCANY_SCACPP_ROOT environment variable. The kernel also loads any
+extensions found in the Tuscany extensions directory (found in the
+directory specified by the TUSCANY_SCACPP env variable). The kernel
+inspects the .composite files and checks that any required extensions
+that the SCA app uses are loaded, works out how the components are
+wired together, and then passes the details of the composite to the
+appropriate extensions. E.g. if the SCDL contains a
+<implementation.python> element, the contents of that element are
+passed to the Python extension which will load a defined script, etc.
+When the SCA app is invoked (via a local client call or a SOAP or REST
+service binding being called) the kernel uses the appropriate
+extension to invoke the right methods in the component implementation
+code.

+ +

The language binding extensions (C++, Ruby, Python, PHP) provide
+wrapper and proxy code. The wrapper code wraps the component
+implemented in that language, initialising the component
+implementation, converting method arguments to the correct types and
+invoking the defined method with the converted arguments. The proxy
+code allows the component to call it's references, providing objects
+that look like standard objects in the component language, but which,
+when called, convert the method arguments from the language types and
+invoke the referenced component's wrapper code to invoke the component
+itself.

+ +

The service and reference binding extensions (SOAP/Axis2C, REST)
+provide service and reference code. The service code allows Tuscany to
+run within a container as a service that can be invoked (e.g. as an
+Axis2C SOAP web service). The reference code allows Tuscany to call
+other services (that may or may not be other Tuscany services) using
+that technology to make the call out (e.g. a SOAP call to a Web
+Service).
+See the various samples we have for examples of all this.

+
+
+
+
+ + +
+ + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-developer-guide.html b/site/trunk/site-publish/sca-native-developer-guide.html new file mode 100644 index 0000000000..0bcab1c479 --- /dev/null +++ b/site/trunk/site-publish/sca-native-developer-guide.html @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Developer Guide + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Documentation Menu > SCA Native Developer Guide + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+

+ + +
+ +
How to get involved in development of Java SCA?
+

This document is the development guideline for SCA Native project.

+ + +
+ +

General Guide

+ + +

Getting Source code

+ +

The main Tuscany project repository is located at https://svn.apache.org/repos/asf/incubator/tuscany. You can use SVN to check out the entire project, and you will get both the java and C++ repositories. Alternatively you can check out just the cpp directory at https://svn.apache.org/repos/asf/incubator/tuscany/cpp, to get the SCA and SDO implementations for C++.

+ +
    +
  • From $HOME/tuscany, do svn co http://svn.apache.org/repos/asf/incubator/tuscany/cpp, this will check out all the source code in $HOME/tuscany/cpp.
  • +
  • Configure your environment: +
      +
    • export TUSCANY_SCACPP=$HOME/tuscany/cpp/sca/deploy
    • +
    • export TUSCANY_SDOCPP=$HOME/tuscany/cpp/sdo/deploy
    • +
    • export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TUSCANY_SDOCPP/lib:$TUSCANY_SCACPP/lib
    • +
    +
  • +
+ + +

Setting up your development environment

+ +

Below you can find detailed instructions on how to configure the C++ runtime and tools for Linux or Windows.

+ +

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.

+ +

Prerequisites

+ +

Install the following prerequisites:

+ +
    +
  1. Subversion - SVN version 1.3.0 or later is good (most Linux distros already include SVN).
  2. +
  3. Ant and a Java JDK are required by the SCA code generation tool used to generate proxies and wrappers for C++ components. +
      +
    • Download apache-ant-1.6.5-bin to '$HOME/tuscany' do tar xzf apache-ant-1.6.5-bin.tar.gz.
    • +
    • Configure your environment: +
        +
      • export JAVA_HOME=$HOME/tuscany/jdk1.5.0_06
      • +
      • PATH=$JAVA_HOME/bin:$PATH
      • +
      +
    • +
    • Download JDK 5.0 from java.sun.com.
    • +
    • From $HOME/tuscany run jdk-1_5_0_06-linux-i586.bin, this will extract the JDK in $HOME/tuscany/jdk1.5.0_06.
    • +
    • Configure your environment: +
        +
      • export JAVA_HOME=$HOME/tuscany/jdk1.5.0_06
      • +
      • PATH=$JAVA_HOME/bin:$PATH
      • +
      +
    • +
    +
  4. +
  5. 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
      • +
      +
    • +
    +
  6. +
  7. 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.
    • +
    • Configure your environment: +
        +
      • export AXIS2C_HOME=$HOME/tuscany/axis2c-bin-0.92-linux
      • +
      • export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AXIS2C_HOME/lib
      • +
      +
    • +
    +
  8. +
+ + +

Windows

+ +

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"
  • +
  • Select ok and close the windows.
  • +
+ + + +

System Requirements

+ +

In order to run the Tuscany Native runtimes there are some minimum system requirements:

+ +

Operating System

  • Windows XP SP2
  • Linux
  • Other components

    • Apache Axis2/C verion 0.92
    • Libxml2 Parser version 2.6.20
    • + + +

      Building the source code

      + +

      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
      +
      +
      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-documentation-menu.html b/site/trunk/site-publish/sca-native-documentation-menu.html new file mode 100644 index 0000000000..3bbe2ac0a8 --- /dev/null +++ b/site/trunk/site-publish/sca-native-documentation-menu.html @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Documentation Menu + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Documentation Menu + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      + +

      SCA Native Documentation

      + +

      README
      +Rough guide to the Tuscany SCA C++ source tree.

      + +

      INSTALL
      +How to build and install the Tuscany SCA C++ runtime.

      + +

      OASIS Service Component Architecture / Assembly Specification
      +The latest SCA Assembly specification documents (v1.1 - published drafts)

      + +

      OASIS Service Component Architecture / C and C++ Specifications
      +The latest SCA C and C++ language binding specification documents (v1.1 - published drafts)

      + +

      Open SOA Service Component Architecture Specifications
      +Older SCA specification documents (v1.0)

      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-faq.html b/site/trunk/site-publish/sca-native-faq.html new file mode 100644 index 0000000000..9d2411ea36 --- /dev/null +++ b/site/trunk/site-publish/sca-native-faq.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native FAQ + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native FAQ + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      This page contains frequently asked questions for SCA native project.
      +Please follow use the following template to enhance this page.

      + +

      Question text

      +

      Answer text

      + + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-found-a-bug.html b/site/trunk/site-publish/sca-native-found-a-bug.html new file mode 100644 index 0000000000..4f8c4d1bde --- /dev/null +++ b/site/trunk/site-publish/sca-native-found-a-bug.html @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Found a Bug + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Found a Bug + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      +

      Reporting an Issue or Asking For New Features

      + +

      Please use ApacheJIRA system to report bugs or request new features. First time users need to create a login.

      + +

      Search the existing JIRAs to see if what you want to create is already there. If not, create a new one. Make sure JIRAs are categorized correctly using JIRA categories and are created under the correct component area. Please include as much information as possible in your JIRA to help resolve the issue quicker. This can include version of the software used, platforms running on, steps to reproduce, test case, details of your requirement or even a patch if you have one.

      + +

      Submitting a Patch

      + +

      Please follow the steps below to create a patch. It will be reviewed and committed by a committer in the project.

      + +
        +
      • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
      • +
      • Confirm that the problem is fixed and include a test case where possible to help the person who is applying the patch to verify the fix.
      • +
      • Generate the patch using svn diff File > patchfile
      • +
      • Try to give your patch files meaningful names, including the JIRA number
      • +
      • Add your patch file as an attachment to the associated JIRA issue +
          +
        • Clicking on the 'Patch Available' box in the screen where the patch is being submitted will help identify available patches quicker.
        • +
        +
      • +
      + + +

      How do I get my JIRAs into a release?

      +

      You can always propose a release and drive the release with the content that you want. Another way to get a JIRA into a release is by providing a patch or working with other community members (volunteers) to help you get the problem fixed. You can also help by providing test cases.

      + +

      Each release is managed by a release manager. Make sure that the Release Manager is aware of why a fix to a JIRA is important to your business. In general, the best attempt is made to include as many JIRAs as possible depending on the level of community help. The voting mechanism in the JIRA system can be used to raise the importance of a JIRA to the attention of the release manager. Adding comments in the JIRA would help the release manager understand why a JIRA is important to include in a given release.

      + +

      How is a release done?

      +

      Anyone can volunteer to be a release manager and drive a release. Based on Apache guidelines, a release requires at least three PMC +1 votes and more +1s than -1s. A release can not be vetoed so a -1 does not block a release. The steps for how to create a Tuscany release are documented here

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-get-involved.html b/site/trunk/site-publish/sca-native-get-involved.html new file mode 100644 index 0000000000..d755ef0471 --- /dev/null +++ b/site/trunk/site-publish/sca-native-get-involved.html @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Get Involved + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Get Involved + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      +

      Getting Involved with Apache Tuscany - Welcome!

      + + + +
      +

      Getting involved in the project is easy. First, any help is welcome and we are excited to help you come on board. Here are some suggestions for how you can get involved in Apache Tuscany.

      + +
        +
      • Tuscany consists of several subprojects. Identify what areas you are interested in. Take a look at samples for that area.
      • +
      • Subscribe to the mailing list. If you are interested to get involved at the user level, subscribe to user mailing list. If you are interested to get involved in the development of Tuscany, subscribe to the developer list. Rememer that you can always unsubscribe later.
      • +
      • Help answer questions posted to the user mailing list for areas that you are familiar with. Your real usage experience can be very valueable to other users as well as developers on the project.
      • +
      • Would like to get invovled in development? Have new ideas? Start with the mailing list and share your thoughts.
      • +
      • Contribute to feature developement. Just let the community know what you'd like to work on. It is as easy as that.
      • +
      • Identify JIRAsin the area that you are interested in and provide patches.
      • +
      • Contribute to the user or developer documentation or website. Make your update on the on the Tuscany Wiki, create a JIRA and attach the link for your update.
      • +
      • If in doubt about where to start, send a note to the mailing list and mention your area of interest. Any questions is welcomed. We'd like you to be involved!
      • +
      • If you are new to open source and would like to learn more about how to work in open source, check this page.
      • +
      + + +
        +
      • Provide feedback: What is working well? What is missing? Get involved in creating software that addresses real pain points in SOA. Any help is good. Be part of the community.
      • +
      + + +

      You can get a quick overview of many Tuscany information resources by watching the video "A Tour of the Tuscany Information Resources", Vcasmo site (password tuscany), You Tube.

      + +

      communication

      + +

      The Tuscany community also gets together on IRC. 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:

      + + + +

      If you are not familiar with Apache, you can read more about how Apache works at this link.

      + + +
      + + +

      Open CSA (SCA standards)

      + +

      The SCA specifications which are implemented by Tuscany have moved to OASIS for formal
      +standardization. This is being done as a series of OASIS technical
      +committees, each dealing with one or more of aspects of the SCA specifications.

      + +

      The OASIS activities are carried out in public. You can either observe the activities in the various technical committees, or join one or more of the committees to contribute to.

      + +

      There are 6 SCA technical committees and by clicking on the links below you can find information about how to join as an observer or contributor. You will also have access to the minutes of meetings of the meetings on the same page.

      + + + + +
        +
      • OASIS SCAPolicy TC:Defining an SCA policy framework to simplify SOA application development
      • +
      + + +
        +
      • OASIS SCA Bindings TC:Standardizing bindings for SCA services and references to communication protocols, technologies and frameworks
      • +
      + + + + + + + + +
        +
      • OASIS SCA BPEL TC:Specifying how SCA component implementations for SOA can be written using BPEL
      • +
      + + +

      Each OASIS SCA TC mailing list archives can be found here:

      + + + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-incubator-m2.html b/site/trunk/site-publish/sca-native-incubator-m2.html new file mode 100644 index 0000000000..e239736330 --- /dev/null +++ b/site/trunk/site-publish/sca-native-incubator-m2.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Incubator-M2 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Releases > SCA Native Incubator-M2 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      SCA Native Incubator-M2

      + +

      The SCA Native Incubator-M2 was released in Nov 2006.

      + +

      Windows

      + +
      + + + + + + + + + + + + + + + + + + + +
      Type Description
      File
      Signature
      Binary Tuscany SCA C++ M2 tuscany_sca_cpp-1.0-incubator-M2-bin.zip MD5     PGP
      Source Tuscany SCA C++ M2 tuscany_sca_cpp-1.0-incubator-M2-src.zip MD5     PGP
      +
      + + +

      Linux

      + +
      + + + + + + + + + + + + + + + + + + + +
      Type Description
      File
      Signature
      Binary Tuscany SCA C++ M2
      tuscany_sca_cpp-1.0-incubator-M2-bin.tar.gz MD5     PGP
      Source
      Tuscany SCA C++ M2 tuscany_sca_cpp-1.0-incubator-M2-src.tar.gz MD5     PGP
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-incubator-m3.html b/site/trunk/site-publish/sca-native-incubator-m3.html new file mode 100644 index 0000000000..32b3dd5ef3 --- /dev/null +++ b/site/trunk/site-publish/sca-native-incubator-m3.html @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Incubator-M3 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Releases > SCA Native Incubator-M3 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      SCA Native Incubator-M3

      +

      The SCA Native Incubator-M3 was released in May 2007.

      +

      Windows 

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Type
      Description
      File
      Signature
      Binary
      Tuscany SCA Native M3 tuscany_sca_native-1.0-incubator-M3-bin.zip
      MD5     PGP
      Source Tuscany SCA Native M3 tuscany_sca_native-1.0-incubator-M3-src.zip MD5     PGP




      +
      + + +

      Linux and Mac OS X

      + +
      + + + + + + + + + + + + + +
      Type Description
      File
      Sugnature
      Source Tuscany SCA Native M3
      tuscany_sca_native-1.0-incubator-M3-src.tar.gz
      MD5     PGP
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-previous-releases.html b/site/trunk/site-publish/sca-native-previous-releases.html new file mode 100644 index 0000000000..d567773141 --- /dev/null +++ b/site/trunk/site-publish/sca-native-previous-releases.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Previous Releases + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Releases > SCA Native Previous Releases + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +
      + + + + + + + + + +
        Release Name
      1.
      SCA Native Incubator-M2, (Nov, 2006)
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-releases.html b/site/trunk/site-publish/sca-native-releases.html new file mode 100644 index 0000000000..8d9bb30824 --- /dev/null +++ b/site/trunk/site-publish/sca-native-releases.html @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Releases + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Releases + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + +

      Latest Release

      + +

      SCA Native Incubator-M3

      +

      The SCA Native Incubator-M3 was released in May 2007.

      +

      Windows 

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Type
      Description
      File
      Signature
      Binary
      Tuscany SCA Native M3 tuscany_sca_native-1.0-incubator-M3-bin.zip
      MD5     PGP
      Source Tuscany SCA Native M3 tuscany_sca_native-1.0-incubator-M3-src.zip MD5     PGP




      +
      + + +

      Linux and Mac OS X

      + +
      + + + + + + + + + + + + + +
      Type Description
      File
      Sugnature
      Source Tuscany SCA Native M3
      tuscany_sca_native-1.0-incubator-M3-src.tar.gz
      MD5     PGP
      +
      + + +

      Previous Releases

      +
      + + + + + + + + + +
        Release Name
      1.
      SCA Native Incubator-M2, (Nov, 2006)
      +
      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-subproject-menu.html b/site/trunk/site-publish/sca-native-subproject-menu.html new file mode 100644 index 0000000000..e66685b87e --- /dev/null +++ b/site/trunk/site-publish/sca-native-subproject-menu.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Subproject Menu + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > Subproject Menus > SCA Native Subproject Menu + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + + +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native-subproject.html b/site/trunk/site-publish/sca-native-subproject.html new file mode 100644 index 0000000000..0d76ddf25e --- /dev/null +++ b/site/trunk/site-publish/sca-native-subproject.html @@ -0,0 +1,119 @@ + + + + + + + SCA Native Subproject : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native Subproject + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + + +
      + + + + + +

      Tuscany SCA Native

      + +

      Tuscany SCA native is an extesible SCA runtime implementation written in C++ that supports component implementations written in:

      + + + +

      Bindings - used for services and references
      +Apache SOAP/Axis2c
      +REST

      + +

      Data Bindings - for handling data
      +SDO
      +Axiom

      + + +

      To try it out, we recommend using the latest SCA Native Milestone release available from our downloads page.

      + +
      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-native-user-guide.html b/site/trunk/site-publish/sca-native-user-guide.html new file mode 100644 index 0000000000..00a6f6974f --- /dev/null +++ b/site/trunk/site-publish/sca-native-user-guide.html @@ -0,0 +1,78 @@ + + + + + + + SCA Native User Guide : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native Subproject > SCA Native Documentation Menu > SCA Native User Guide + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-native-work-in-progress.html b/site/trunk/site-publish/sca-native-work-in-progress.html new file mode 100644 index 0000000000..4baace80dc --- /dev/null +++ b/site/trunk/site-publish/sca-native-work-in-progress.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native Work-in-progress + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Work-in-progress + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-native.html b/site/trunk/site-publish/sca-native.html new file mode 100644 index 0000000000..4cd6c564f3 --- /dev/null +++ b/site/trunk/site-publish/sca-native.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Native + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + + +

      Tuscany SCA Native

      + +

      Tuscany SCA Native is an SCA runtime implementation written in C++.

      + +

      It supports SCA components written in C++ and Python (other languages under construction.)

      + +

      SCA bindings are available for REST, JSON-RPC, ATOM Pub and SOAP.

      + +

      Releases can be dowloaded from our Downloads page.

      + +

      Source code can be found in our Subversion repository.

      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-overview-sandbox.html b/site/trunk/site-publish/sca-overview-sandbox.html new file mode 100644 index 0000000000..2eeecd7839 --- /dev/null +++ b/site/trunk/site-publish/sca-overview-sandbox.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Overview - sandbox + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Trash > old-Sandbox > SCA Overview - sandbox + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      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.
      • +
      + + +

      Tuscany implements SCA in Java and C++. For more information about each implementation or to get involved please refer to the following links.
      +SCA Java
      +<link to C++ SCA>

      + +

      A PHP implementation for SCA is also available at <link for PECL>.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-overview.data/Tuscany-Overview-0407.pdf b/site/trunk/site-publish/sca-overview.data/Tuscany-Overview-0407.pdf new file mode 100644 index 0000000000..464204178f Binary files /dev/null and b/site/trunk/site-publish/sca-overview.data/Tuscany-Overview-0407.pdf differ diff --git a/site/trunk/site-publish/sca-overview.data/getting_started_Rest_099_07.pdf b/site/trunk/site-publish/sca-overview.data/getting_started_Rest_099_07.pdf new file mode 100644 index 0000000000..3a628e1d6e Binary files /dev/null and b/site/trunk/site-publish/sca-overview.data/getting_started_Rest_099_07.pdf differ diff --git a/site/trunk/site-publish/sca-overview.html b/site/trunk/site-publish/sca-overview.html new file mode 100644 index 0000000000..463f10e072 --- /dev/null +++ b/site/trunk/site-publish/sca-overview.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Overview + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +
      + + + +
      Subprojects
      +

      SDO
      +DAS

      +
      + +

      What is SCA?

      + +

      SCA is a programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology.

      + +

      SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.

      + +

      SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes.

      + +

      Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled applications.

      + +

      Apache Tuscany SCA is implemented in Java and C++ (referred to as Native) .

      + +

      SCA is in the process of becoming a standard through OASIS open CSA.
      +Build your first SCA application in 10 minutes! Give it a try

      + +

      SCA business values?

      + + +

      Learn More about SCA

      + + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca-releases.html b/site/trunk/site-publish/sca-releases.html new file mode 100644 index 0000000000..cee4a3fcf8 --- /dev/null +++ b/site/trunk/site-publish/sca-releases.html @@ -0,0 +1,102 @@ + + + + + + + SCA Releases : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Releases + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + + +
      + + + + + +

      SCA Java Releases

      + +
        +
      1. 0.90-incubating (June 1st, 2007)
      2. +
      +
      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-subproject-menu.html b/site/trunk/site-publish/sca-subproject-menu.html new file mode 100644 index 0000000000..f056998b28 --- /dev/null +++ b/site/trunk/site-publish/sca-subproject-menu.html @@ -0,0 +1,81 @@ + + + + + + + SCA Subproject Menu : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Menus > SCA Subproject Menu + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + + +
      +
      +
      +
      + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sca-videos.html b/site/trunk/site-publish/sca-videos.html new file mode 100644 index 0000000000..f96c702b8f --- /dev/null +++ b/site/trunk/site-publish/sca-videos.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Videos + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Videos + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + + + + + + +
      + +

      SCA Video Series

      + +

      On this web site, look for the symbol for Tuscany topics with video.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sca.data/SCA_AssemblyModel_V100???.pdf b/site/trunk/site-publish/sca.data/SCA_AssemblyModel_V100???.pdf new file mode 100644 index 0000000000..3c8881fff8 Binary files /dev/null and b/site/trunk/site-publish/sca.data/SCA_AssemblyModel_V100???.pdf differ diff --git "a/site/trunk/site-publish/sca.data/SCA_AssemblyModel_V100\344\270\255\346\226\207\347\211\210.pdf" "b/site/trunk/site-publish/sca.data/SCA_AssemblyModel_V100\344\270\255\346\226\207\347\211\210.pdf" new file mode 100644 index 0000000000..3c8881fff8 Binary files /dev/null and "b/site/trunk/site-publish/sca.data/SCA_AssemblyModel_V100\344\270\255\346\226\207\347\211\210.pdf" differ diff --git a/site/trunk/site-publish/sca.data/SCA_JavaAnnotationsAndAPIs???.pdf b/site/trunk/site-publish/sca.data/SCA_JavaAnnotationsAndAPIs???.pdf new file mode 100644 index 0000000000..0398ec6d3d Binary files /dev/null and b/site/trunk/site-publish/sca.data/SCA_JavaAnnotationsAndAPIs???.pdf differ diff --git "a/site/trunk/site-publish/sca.data/SCA_JavaAnnotationsAndAPIs\344\270\255\346\226\207\347\211\210.pdf" "b/site/trunk/site-publish/sca.data/SCA_JavaAnnotationsAndAPIs\344\270\255\346\226\207\347\211\210.pdf" new file mode 100644 index 0000000000..0398ec6d3d Binary files /dev/null and "b/site/trunk/site-publish/sca.data/SCA_JavaAnnotationsAndAPIs\344\270\255\346\226\207\347\211\210.pdf" differ diff --git a/site/trunk/site-publish/sca.data/SCA_JavaComponentImplementation_V100???.pdf b/site/trunk/site-publish/sca.data/SCA_JavaComponentImplementation_V100???.pdf new file mode 100644 index 0000000000..733a343bba Binary files /dev/null and b/site/trunk/site-publish/sca.data/SCA_JavaComponentImplementation_V100???.pdf differ diff --git "a/site/trunk/site-publish/sca.data/SCA_JavaComponentImplementation_V100\344\270\255\346\226\207\347\211\210.pdf" "b/site/trunk/site-publish/sca.data/SCA_JavaComponentImplementation_V100\344\270\255\346\226\207\347\211\210.pdf" new file mode 100644 index 0000000000..733a343bba Binary files /dev/null and "b/site/trunk/site-publish/sca.data/SCA_JavaComponentImplementation_V100\344\270\255\346\226\207\347\211\210.pdf" differ diff --git a/site/trunk/site-publish/sca.html b/site/trunk/site-publish/sca.html new file mode 100644 index 0000000000..36a91ede9a --- /dev/null +++ b/site/trunk/site-publish/sca.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA规范中文版 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > General Info > Chinese Portal > SCA规范中文版 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

       SCA相关规范的中文文档经过大家的努力,终于完成了,会陆续发布。

      + +

      本次翻译活动由满江红开放技术研究组织 (http://www.redsaga.com) 和 SOA 中文社区 ( O http://www.osoa.org/pages/viewpage.action?pageId=416)  共同发起、组织,并得到goCom社区(http://www.gocom.cc/)的赞助,在此感谢大家的辛勤劳动。

      + +

       相关下载:
      +AssemblyModel 装配模型规范
      +JavaComponentImplementation JAVA构件实现规范
      +JavaAnnotationsAndAPIs JAVA通用注解和API规范

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/scajava-tutorial.html b/site/trunk/site-publish/scajava-tutorial.html new file mode 100644 index 0000000000..85fe3c86f1 --- /dev/null +++ b/site/trunk/site-publish/scajava-tutorial.html @@ -0,0 +1,80 @@ + + + + + + + SCAJava-Tutorial : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCAJava-Tutorial + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +

      This page will be used for SCA Java Tutorial

      +
      +
      +
      +
      + + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/scajavabusinessexceptions.html b/site/trunk/site-publish/scajavabusinessexceptions.html new file mode 100644 index 0000000000..f5a3e45b87 --- /dev/null +++ b/site/trunk/site-publish/scajavabusinessexceptions.html @@ -0,0 +1,141 @@ + + + + + + + + SCAJavaBusinessExceptions + + + + + + + +
      +  Apache Tuscany > Index > SCA Java > SCAJavaBusinessExceptions + +
      + + + + + + +
      +
      + +
      + +
      + Added by Rick R., last edited by Raymond Feng on Feb 02, 2007 +  (view change) + +
      + +
      +
      +

      Supporting Business Exceptions

      +
        +
      1. How to declare business exceptions.
        + What defines business exception on each interface type. (ie Java wsdl)
        + In Java interface, business exceptions are declared checked exceptions specified on the operations of the services interface.
        + Note declared unchecked (runtime) exceptions are not considered business exceptions.
        + WSDL need to determine if all WSDL defined faults are business exceptions. Need to in investigate JAX-WS mapping of exceptions JAX-B databinding..
        + SDO has no similar specification. Need to determine a similar means for SDO to provide reliable transforms between JAX-B and SDO.
      2. +
      3. How to represent business exceptions.
        + In Java business exception are represented as non runtime exceptions. But not all runtime exceptions delivered in a message maybe a Business exception.
        + If a non runtime exceptions is delivered to a component that is does not declare the exception the exception will be wrappered in a specified runtime exception.
        + Jax-b need to further investigate the JAX-B specification and follow how it models business exceptions as objects.
        + SDO there are no specific mappings provided for. May need to wrapper complex parts of an exception as SDO objects in a specific Java exception.
      4. +
      5. How to transform business exceptions.
        + Provide in the data binding transformations between Axiom OMElement, SDO represented faults and JAX-B exceptions.
        + How to identify as business exceptions during the transforms.
      6. +
      7. How to propagate business exceptions.
        + Determine how to propagate exception in the Tuscany runtime message in local interactions. Make sure TargetInvocation exceptions become unwrappered
        + How in the case of webservice's binding propagate the message through web service binding.
      8. +
      + + +

      BACK

      +
      + + +
      +
      + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sdo-10-incubating.html b/site/trunk/site-publish/sdo-10-incubating.html new file mode 100644 index 0000000000..e68669c0ef --- /dev/null +++ b/site/trunk/site-publish/sdo-10-incubating.html @@ -0,0 +1,131 @@ + + + + + + + SDO 1.0-incubating : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO 1.0-incubating + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +

      What's new in this Release

      + +

      Apache Tuscany's SDO Java Release 1.0-incubating is the first such release
      +with full coverage of the SDO 2.1 specification.

      + +

      In addition to adding the few remaining SDO 2.1 features not included in the
      +1.0-incubating-beta1 release and fixing a number of bugs
      +there are a number of new features relating to XML serialization, and new
      +support for handling dynamic derivation from static classes. There has also
      +been significant focus on making the SDO sample programs more accessible.

      + +

      For the full change history take a look here

      + +

      Windows

      + + + + + + + + + + + + + + + + + +
      Type File Signature
      Binary apache-tuscany-sdo-1.0-incubating.zip ASC MD5
      Source apache-tuscany-sdo-1.0-incubating-src.zip ASC MD5
      + +

      Linux / Mac OS X / Unix

      + + + + + + + + + + + + + + + + + +
      Type File Signature
      Binary apache-tuscany-sdo-1.0-incubating.tar.gz ASC MD5
      Source apache-tuscany-sdo-1.0-incubating-src.tar.gz ASC MD5
      +
      +
      +
      +
      + + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sdo-c-documentation-menu.html b/site/trunk/site-publish/sdo-c-documentation-menu.html new file mode 100644 index 0000000000..35f41a3801 --- /dev/null +++ b/site/trunk/site-publish/sdo-c-documentation-menu.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO C++ Documentation Menu + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > Subproject Menus > SDO C++ Subproject Menu > SDO C++ Documentation Menu + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      + +

      SDO C++ Documents

      +

      SDO Specification for C++ V2.01
      +The Service Data Objects specification for C++ Describes the data programming interfaces of SDO in the C++ language.

      + +

      SDO White Paper
      +A white paper that explains the SDO programming model

      + +

      Introducing SDO for C++
      +An article introducing the SDO for C++ API

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-c-get-involved.html b/site/trunk/site-publish/sdo-c-get-involved.html new file mode 100644 index 0000000000..9117c1bb4a --- /dev/null +++ b/site/trunk/site-publish/sdo-c-get-involved.html @@ -0,0 +1,118 @@ + + + + + + + SDO C++ Get Involved : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Menus > SDO > SDO C++ Get Involved + + User List | Dev List | Issue Tracker   +
      + + + +
      +
      + +
      +
      + +
      + + + +

      Getting Involved

      + +

      A successful project requires many people to play many roles, for example write code, documentation, test, provide suggestions or feedback. If you would like to become involved, join the mailing list.

      + +

      Here are some suggestions for getting started and welcome to the project.

      + +

      Read the overview pages for each subproject and decide where you'd like to get involved.

      + +
        +
      • Contribute new ideas for improving Tuscany subprojects.
      • +
      • Answer questions posted to the mailing list.
      • +
      • Contribute to the FAQ under each subproject or to the wiki website.
      • +
      • Contribute to the user or developer documentation for each subproject on the wiki.
      • +
      • Investigate bugs that have been reported and provide patches.
      • +
      • Help with development for the next release of Apache Tuscany subprojects.
      • +
      + + +

      If in doubt about where to start, send a note to the mailing list and mention your area of interest.

      + +

      Please note that a single mailing list is used for all the subprojects.

      + +

      If you are not familiar with Apache, you can read more about how Apache works at this link.

      + +
      + + + + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sdo-c-releases.html b/site/trunk/site-publish/sdo-c-releases.html new file mode 100644 index 0000000000..4af1c096c6 --- /dev/null +++ b/site/trunk/site-publish/sdo-c-releases.html @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO C++ Releases + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO CPP > SDO C++ Releases + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + +

      Latest Release

      +

      Add M3 info

      + +

      Previous Releases

      +

      Here is a complete list of all Apache Tuscany SCA downloads:
      +Add previous releases info

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-c-subproject-menu.html b/site/trunk/site-publish/sdo-c-subproject-menu.html new file mode 100644 index 0000000000..2386a8dee6 --- /dev/null +++ b/site/trunk/site-publish/sdo-c-subproject-menu.html @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO C++ Subproject Menu + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > Subproject Menus > SDO C++ Subproject Menu + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + + + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-cpp-documentation-menu.html b/site/trunk/site-publish/sdo-cpp-documentation-menu.html new file mode 100644 index 0000000000..59f9143151 --- /dev/null +++ b/site/trunk/site-publish/sdo-cpp-documentation-menu.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO CPP Documentation Menu + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO CPP > SDO CPP Documentation Menu + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      + +

      SDO C++ Documentation

      + +

      Please help add documentation.

      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-cpp-faq.html b/site/trunk/site-publish/sdo-cpp-faq.html new file mode 100644 index 0000000000..481f90a7d8 --- /dev/null +++ b/site/trunk/site-publish/sdo-cpp-faq.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO CPP FAQ + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO CPP > SDO CPP FAQ + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + +

      Tuscany SDO - Frequently Asked Questions

      + + +
        +
      1. Does SDO for C++ provide a static interface as the Java implementation does?
        +No. It is not clear that this is a useful feature in a language like C++ so we have no plans to implement it.
      2. +
      3. How do I load an XML file using SDO static type?
        +The basic pattern is fairly simple. +
        +
          // Get hold of a helper context. This holds an XMLHelper instance
        +  HelperContext scope = SDOUtil.createHelperContext();
        +   
        +  // Register all of the types we have generated into the HelperContext
        +  GenerateFactory.INSTANCE.register(scope);
        +
        +  // A normal input stream to read the XML file
        +  fis = new FileInputStream("some.xml");
        + 
        +  // Use the HelperContext to get and XMLHelper and use this to load the XML
        +  XMLDocument xmlDoc = scope.getXMLHelper().load(fis);
        +
        +  // Now we have a document we can get the root object and cast it to the expected type
        +  GenerateType generateType = (GenerateType)xmlDoc.getRootObject();
        +
        +
        +

        There are some unit tests that show how to do this. You have to look in the tools tests cases as the Java static generator is in the tools project. Try looking in sdo\tools\src\test\java\org\apache\tuscany\sdo\test*.java.

      4. +
      + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-cpp-found-a-bug.html b/site/trunk/site-publish/sdo-cpp-found-a-bug.html new file mode 100644 index 0000000000..2f2c95c45d --- /dev/null +++ b/site/trunk/site-publish/sdo-cpp-found-a-bug.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO CPP Found A Bug + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO CPP > SDO CPP Found A Bug + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      +

      Reporting an Issue or Asking For New Features

      + +

      Please use ApacheJIRA system to report bugs or request new features. First time users need to create a login.

      + +

      Search the existing JIRAs to see if what you want to create is already there. If not, create a new one. Make sure JIRAs are categorized correctly using JIRA categories and are created under the correct component area. Please include as much information as possible in your JIRA to help resolve the issue quicker. This can include version of the software used, platforms running on, steps to reproduce, test case, details of your requirement or even a patch if you have one.

      + +

      Submitting a Patch

      + +

      Please follow the steps below to create a patch. It will be reviewed and committed by a committer in the project.

      + +
        +
      • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
      • +
      • Confirm that the problem is fixed and include a test case where possible to help the person who is applying the patch to verify the fix.
      • +
      • Generate the patch using svn diff File > patchfile
      • +
      • Try to give your patch files meaningful names, including the JIRA number
      • +
      • Add your patch file as an attachment to the associated JIRA issue +
          +
        • Clicking on the 'Patch Available' box in the screen where the patch is being submitted will help identify available patches quicker.
        • +
        +
      • +
      + + +

      How do I get my JIRAs into a release?

      +

      You can always propose a release and drive the release with the content that you want. Another way to get a JIRA into a release is by providing a patch or working with other community members (volunteers) to help you get the problem fixed. You can also help by providing test cases.

      + +

      Each release is managed by a release manager. Make sure that the Release Manager is aware of why a fix to a JIRA is important to your business. In general, the best attempt is made to include as many JIRAs as possible depending on the level of community help. The voting mechanism in the JIRA system can be used to raise the importance of a JIRA to the attention of the release manager. Adding comments in the JIRA would help the release manager understand why a JIRA is important to include in a given release.

      + +

      How is a release done?

      +

      Anyone can volunteer to be a release manager and drive a release. Based on Apache guidelines, a release requires at least three PMC +1 votes and more +1s than -1s. A release can not be vetoed so a -1 does not block a release. The steps for how to create a Tuscany release are documented here

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-cpp-get-involved.html b/site/trunk/site-publish/sdo-cpp-get-involved.html new file mode 100644 index 0000000000..3f7f44663c --- /dev/null +++ b/site/trunk/site-publish/sdo-cpp-get-involved.html @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO CPP Get Involved + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO CPP > SDO CPP Get Involved + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      +

      Getting Involved with Apache Tuscany - Welcome!

      + + + +
      +

      Getting involved in the project is easy. First, any help is welcome and we are excited to help you come on board. Here are some suggestions for how you can get involved in Apache Tuscany.

      + +
        +
      • Tuscany consists of several subprojects. Identify what areas you are interested in. Take a look at samples for that area.
      • +
      • Subscribe to the mailing list. If you are interested to get involved at the user level, subscribe to user mailing list. If you are interested to get involved in the development of Tuscany, subscribe to the developer list. Rememer that you can always unsubscribe later.
      • +
      • Help answer questions posted to the user mailing list for areas that you are familiar with. Your real usage experience can be very valueable to other users as well as developers on the project.
      • +
      • Would like to get invovled in development? Have new ideas? Start with the mailing list and share your thoughts.
      • +
      • Contribute to feature developement. Just let the community know what you'd like to work on. It is as easy as that.
      • +
      • Identify JIRAsin the area that you are interested in and provide patches.
      • +
      • Contribute to the user or developer documentation or website. Make your update on the on the Tuscany Wiki, create a JIRA and attach the link for your update.
      • +
      • If in doubt about where to start, send a note to the mailing list and mention your area of interest. Any questions is welcomed. We'd like you to be involved!
      • +
      • If you are new to open source and would like to learn more about how to work in open source, check this page.
      • +
      + + +
        +
      • Provide feedback: What is working well? What is missing? Get involved in creating software that addresses real pain points in SOA. Any help is good. Be part of the community.
      • +
      + + +

      You can get a quick overview of many Tuscany information resources by watching the video "A Tour of the Tuscany Information Resources", Vcasmo site (password tuscany), You Tube.

      + +

      communication

      + +

      The Tuscany community also gets together on IRC. 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:

      + + + +

      If you are not familiar with Apache, you can read more about how Apache works at this link.

      + + +
      + + +

      Open CSA (SCA standards)

      + +

      The SCA specifications which are implemented by Tuscany have moved to OASIS for formal
      +standardization. This is being done as a series of OASIS technical
      +committees, each dealing with one or more of aspects of the SCA specifications.

      + +

      The OASIS activities are carried out in public. You can either observe the activities in the various technical committees, or join one or more of the committees to contribute to.

      + +

      There are 6 SCA technical committees and by clicking on the links below you can find information about how to join as an observer or contributor. You will also have access to the minutes of meetings of the meetings on the same page.

      + + + + +
        +
      • OASIS SCAPolicy TC:Defining an SCA policy framework to simplify SOA application development
      • +
      + + +
        +
      • OASIS SCA Bindings TC:Standardizing bindings for SCA services and references to communication protocols, technologies and frameworks
      • +
      + + + + + + + + +
        +
      • OASIS SCA BPEL TC:Specifying how SCA component implementations for SOA can be written using BPEL
      • +
      + + +

      Each OASIS SCA TC mailing list archives can be found here:

      + + + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-cpp.html b/site/trunk/site-publish/sdo-cpp.html new file mode 100644 index 0000000000..198c82850a --- /dev/null +++ b/site/trunk/site-publish/sdo-cpp.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO CPP + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO CPP + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      + + +

      Tuscany SDO C++ subproject

      + +

      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 latest SDO C++ Milestone release 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.

      + +

      Getting Started with the SDO C++ Milestone release

      + +

      If you haven't already done so, the first step is to download the latest SDO C++ Milestone release of Apache Tuscany from our downloads page.
      +Please follow the Getting Started information found within the download packages to begin using Tuscany SDO C++

      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-cts-overview.html b/site/trunk/site-publish/sdo-cts-overview.html new file mode 100644 index 0000000000..97a7176eb1 --- /dev/null +++ b/site/trunk/site-publish/sdo-cts-overview.html @@ -0,0 +1,163 @@ + + + + + + + + SDO CTS Overview + + + + + + + +
      +  Apache Tuscany > Home > SDO CTS Overview + +
      + + + + + + +
      +
      + +
      + +
      + Added by Dan Murphy, last edited by haleh mahbod on Apr 12, 2007 +  (view change) + +
      + +
      +
      +

      What is Service Data Object Community Test Suite (SDO CTS)?

      + +

      The SDO CTS provides a set of test that exercise any SDO 2.1 implementation. The tests validate an SDO implementation behaves as expected, according to the community's understanding of the SDO specification.

      + +

      The SDO CTS enables developers to choose or switch SDO implementations without the concern of having to re-code a significant proportion of their application due to differences between implementations. This community test suite is initially focues on areas seen as important to developers of SDO applications.

      + +

      Over time this will grow to include a larger proportion of the SDO specification according to the community's desire. The SDO CTS does not claim to be a validation or compliancy suite, nor does it endorse any specific implementation.

      + +

      If the SDO specification appears ambiguous or unclear then the community may decide what to do; it could decide to test the area with an agreed expected behaviour, or decide not to test this area. Ambiguities will be fed back to the specification group for clarification.

      + +

      How to get involved?

      +

      SDO users feedback and involvement would be greatly appreciated. Tell us what is important to you, and if you can provide test cases.

      + +

      Start by sending an email to the Tuscany Users <tuscany-user at ws.apache.org> mailing list, if possible add a [SDO CTS] at the start of the subject line to make it easier to spot.

      + +

      If you already have suitable test cases that you'd like to contribute, then go ahead and open an improvement in our tracking system.

      + +

      Obtaining and using the CTS

      + +

      Currently the SDO CTS is only available in source form from the subversion repository. You will need the following:

      + + + +

      The code can be down loaded from the subversion repository using :

      +
      +
      svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/cts/
      +
      + +

      The SDO CTS project currently contains two sub-projects:

      +
        +
      • cts/sdo2.1 contains the acutal test cases
      • +
      • cts/sdo2.1-tuscany executes the test cases against the current Tuscany Implementation
      • +
      + + +

      To build the CST and run it against the Tuscany implementation all you need do is:

      +
      +
      me@mine:~$ cd cts
      +me@mine:~/cts$  mvn
      +
      + +

      If you would like to execute the SDO CTS against a different implementation then you will need to provide a helper class. For more info on this see the Contributing section.

      +
      + + +
      +
      + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sdo-cts.html b/site/trunk/site-publish/sdo-cts.html new file mode 100644 index 0000000000..a6a09300a5 --- /dev/null +++ b/site/trunk/site-publish/sdo-cts.html @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO CTS + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO CTS + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      + + + +

      What is SDO Community Test Suite (SDO CTS)
      +

      + +

      The SDO CTS provides a set of test that exercise SDO 2.1 implementations. The tests validate an SDO implementation behaves as expected, according to the community's understanding of the SDO specification.

      + +

      The SDO CTS enables developers to choose or switch SDO implementations without the concern of having to re-code a significant proportion of their application due to differences between implementations. This community test suite is initially focused on areas seen as important to developers of SDO applications.

      + +

      Over time this will grow to include a larger proportion of the SDO specification according to the community's desire. The SDO CTS does not claim to be a validation or compliance suite, nor does it endorse any specific implementation.

      + +

      If the SDO specification appears ambiguous or unclear then the community may decide what to do; it could decide to test the area with an agreed expected behavior, or decide not to test this area. Ambiguities will be fed back to the specification group for clarification.

      + +

      How to get involved?
      +

      +

      SDO users feedback and involvement would be greatly appreciated. Tell us what is important to you, and if you can provide test cases.

      + +

      Start by sending an email to the Tuscany Users' <tuscany-user@ws.apache.org> mailing list, if possible add a [SDO CTS] at the start of the subject line to make it easier to spot.

      + +

      If you already have suitable test cases that you'd like to contribute, then go ahead and open an improvement in our tracking system.

      + +

      Obtaining and using the CTS
      +

      + +

      Currently the SDO CTS is only available in source form from the subversion repository. You will need the following:

      + + + +

      The code can be downloaded from the subversion repository using :

      +
      +
      +svn co http://svn.apache.org/repos/asf/tuscany/sdo-java/trunk-cts/
      +
      +
      + +

      The SDO CTS project currently contains two sub-projects:

      +
        +
      • cts/sdo2.1 contains the actual test cases
      • +
      • cts/sdo2.1-tuscany executes the test cases against the current Tuscany Implementation
      • +
      + + +

      To build the CTS and run it against the Tuscany implementation all you need to do is:

      +
      +
      +me@mine:~$ cd cts
      +me@mine:~/cts$  mvn
      +
      +
      +

      Note that some users report that 0 tests are executed when performing these instructions. This is reported in Jira TUSCANY-1249. If you see these symptoms and have any insights please report them in the Jira. An alternative means of running the tests is to run them from within the Eclipse platform as described below.

      + +

      If you would like to execute the SDO CTS against a different implementation then you will need to provide a helper class.

      + +

      Running the CTS against Tuscany in Eclipse
      +

      + +

      Within the Tuscany svn repository there are two distinct source code hierarchies related to the CTS. The first, under the directory sdo2.1 is the real community test suite, and the second, sdo2.1-tuscany is the code that Tuscany uses to exercise the CTS. Another SDO implementation wishing to use the CTS would need to produce code similar to the Tuscany specific code to run the CTS tests against itself. It is important to maintain the separation of these two source hierarchies, so that no Tuscany code leaks into the generic CTS code, otherwise other SDO implementations would see compile failures in the core CTS because of the absence of the Tuscany code from their environment.

      + +

      If you are running and perhaps modifying the CTS in Eclipse then you can get help from Eclipse to ensure that this separation is maintained by setting up two Eclipse projects. By ensuring that there is a one way dependency of the Tuscany specific eclipse project on the CTS generic Eclipse project you will benefit from Eclipse signalling compile failures when an attempt is made to create an inappropriate dependency.

      + +
        +
      • In a command window in the root folder, issue the command "mvn" to compile the CTS artifacts and install them into your local maven repository
      • +
      • Change directory to the sdo2.1 directory and issue the command "mvn eclipse:eclipse"
      • +
      • Change directory to the sdo2.1-tuscany directory and issue the command "mvn eclipse:eclipse"
      • +
      • Open eclipse and import the two projects into your existing workspace +
          +
        • Switch to the Java perspective
        • +
        • Execute "File => Import ... => General => Existing project into workspace
        • +
        • Click "Browse ..." Navigate to the CTS/sdo2.1 directory and click OK
        • +
        • Select the sdo2.1-cts project and click OK
        • +
        +
      • +
      • After Eclipse has built the project you may see that there are compile errors. This is because Maven has created build dependencies for the project on the contents of your maven repository, but Eclipse doesn't yet know where that repository is. If you see this, you must create and assign a value to the M2_REPO variable within eclipse to resolve these dependencies +
          +
        • Right click in the Package Explorer frame on the root of the newly created project and select Properties => Java Build Path
        • +
        • Click on the "Libraries" tab and select "Add Variable...", "Configure Variables ...", "New ..."
        • +
        • Set Name to M2_REPO and Click on "Folder..."
        • +
        • Navigate to the "repository" folder/directory (on Windows this is \Documents and Settings\<user>\.m2\repository, on Linux it is ~/.m2/repository) and click OK
        • +
        • Accept the request for doing a full rebuild
        • +
        • Cancel away from the "Configure Variables" dialog
        • +
        • Click "OK" on the Project Properties Window
        • +
        • When building is complete the project should now have no errors
        • +
        +
      • +
      • Now you need to import the Tuscany specific CTS project in the same way, by navigating to the sdo2.1-tuscany folder and importing the sdo2.1-tuscany project
      • +
      • Next, add a dependency for the Tuscany specific Eclipse project on the generic CTS Eclipse project +
          +
        • Right click on the sdo2.1-tuscany project in the Package Explorer frame of the Eclipse Java perspective, and select "Properties"
        • +
        • Click on the "Java Build Path" option, and then the "Projects" tab
        • +
        • Click "Add.." and select the sdo2.1-cts project (Note that if you are also developing the tuscany implementation then you may wish to also select your sdo implementation and api projects at this point)
        • +
        • Click OK twice, and wait for the Eclipse compilation operation to complete
        • +
        +
      • +
      + + +

      Now you can edit the CTS generic code, and the Tuscany harness, and any inadvertent attempt to introduce Tuscany dependencies on the generic CTS project will result in red flags from Eclipse due to compilation failures.

      + +

      To execute the two main suites of tests in the CTS against Tuscany you must run either

      +
        +
      • test.sdo21.vendor.tuscany.tests.AdoptedCtsTestSuite or
      • +
      • test.sdo21.vendor.tuscany.tests.OptionalCtsTestSuite
        +in the Tuscany specific project.
      • +
      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-das-menu.html b/site/trunk/site-publish/sdo-das-menu.html new file mode 100644 index 0000000000..4928b0eaed --- /dev/null +++ b/site/trunk/site-publish/sdo-das-menu.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO-DAS Menu + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > Subproject Menus > SDO-DAS Menu + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + + + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-downloads.html b/site/trunk/site-publish/sdo-downloads.html new file mode 100644 index 0000000000..67c1774890 --- /dev/null +++ b/site/trunk/site-publish/sdo-downloads.html @@ -0,0 +1,735 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Downloads + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Trash > To Be Deleted > Main Menu > SDO Downloads + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + + + + + +
      + + + +

      +This section provides information on downloads related to Tuscany SDO +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      SDO Java - + Releases
      The distribution of Tuscany SDO 1.0-incubator-beta1 is made + in 4 archives, available in two formats, one suitable for unpacking on + Linux and the other on Windows. The source distributions are split into the SDO 2.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.
      >Incubating-beta1 + (May 16th 2007)
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + DescriptionDownload linkMD5PGP
      Linux
      + + Binary
      Tuscany SDO 1.0 beta1 tuscany-sdo-1.0-incubating-beta1-bin.tar.gzMD5PGP
      Linux
      + Source
      Tuscany SDO 1.0 beta1 APItuscany-sdo-api-1.0-incubating-beta1-src.tar.gzMD5PGP
      Linux
      + Source
      Tuscany SDO 1.0 beta1 Implementationtuscany-sdo-impl-1.0-incubating-beta1-src.tar.gzMD5PGP
      Linux
      + Source
      Tuscany 1.0 SDO beta1 Sampletuscany-sdo-sample-1.0-incubating-beta1-src.tar.gzMD5PGP
      Windows
      + Binary
      Tuscany 1.0 SDO beta1tuscany-sdo-1.0-incubating-beta1-bin.zipMD5PGP
      Windows
      + Source
      Tuscany SDO 1.0 beta1 APItuscany-sdo-api-1.0-incubating-beta1-src.zip + MD5PGP
      Windows
      + + Source
      Tuscany SDO 1.0 beta1 Implementationtuscany-sdo-impl-1.0-incubating-beta1-src.zip + MD5PGP
      Windows
      + Source
      Tuscany SDO 1.0 beta1 Sampletuscany-sdo-sample-1.0-incubating-beta1-src.zipMD5PGP
      +
      The distribution of Tuscany SDO is made in 4 + archives, and in two formats, one suitable for unpacking on Linux and the other + on Windows. The source distributions are split into the SDO 2.0.1 API and the + Tuscany implementation of that API. The binary distribution contains the result + of building those two source distributions. The sample distribution contains + sample source code which may be used to experiment with the binary distribution + (Note that the samples are already included in the implementation source + distribution).
      >Incubating-M2 + (Nov 14th, 2006)
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DescriptionDownload linkMD5PGP
      Linux +
      + Binary
      Tuscany M2 SDO tuscany-sdo-1.0-incubator-M2-bin.tar.gzMD5PGP
      Linux +
      + Source
      Tuscany M2 SDO APItuscany-sdo-api-1.0-incubator-M2-src.tar.gzMD5PGP
      Linux +
      + Source
      Tuscany M2 SDO Implementationtuscany-sdo-impl-1.0-incubator-M2-src.tar.gzMD5PGP
      Linux +
      + + Source
      Tuscany M2 SDO Sampletuscany-sdo-sample-1.0-incubator-M2-src.tar.gzMD5PGP
      Windows +
      + Binary
      Tuscany M2 SDOtuscany-sdo-1.0-incubator-M2-bin.zipMD5PGP
      Windows +
      + Source
      Tuscany M2 SDO APItuscany-sdo-api-1.0-incubator-M2-src.zipMD5PGP
      Windows +
      + Source
      Tuscany M2 SDO Implementationtuscany-sdo-impl-1.0-incubator-M2-src.zipMD5PGP
      Windows +
      + Source
      Tuscany M2 SDO Sampletuscany-sdo-sample-1.0-incubator-M2-src.zipMD5PGP
      +
      >Incubating-M1 (June 7th, 2006) +
      + Note : This is a single package release containing SCA and DAS besides + SDO.
      + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DescriptionDownload linkMD5PGP
      Linux +
      + Binary
      Tuscany M1 SDOtuscany-incubating-M1.tar.gzMD5PGP
      Linux +
      + Source
      Tuscany M1 SDOtuscany-incubating-M1-src.tar.gzMD5PGP
      Windows +
      + Binary
      Tuscany M1 SDOtuscany-incubating-M1.zipMD5PGP
      Windows +
      + Source
      Tuscany M1 SDOtuscany-incubating-M1-src.zipMD5PGP
      + + +
      +
      SDO Java - + Development
      Apache Tuscany source code, documentation and web site are managed under + version control using Subversion in + + Tuscany + Subversion Repository . The source for the SDO Java project can be found at http://svn.apache.org/repos/asf/incubator/tuscany/java/sdo + + .
      SDO C++ - + Releases
      >Incubator-M3 (May, 2007) +
      + Win32 binary distribution is built on Windows XP with Microsoft VCExpress and + is a Release build. + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DescriptionDownload linkMD5PGP
      Linux and
      + Mac OS X
      + Source
      Tuscany SDO C++ M3 Source Release for linux and + Mac OS Xtuscany_sdo_cpp-1.0-incubator-M3-src.tar.gzMD5PGP
      Windows +
      + Binary
      Tuscany SDO C++ M3 Binary Release for Windowstuscany_sdo_cpp-1.0-incubator-M3-bin.zipMD5PGP
      Windows +
      + Source
      Tuscany SDO C++ M3 Source Release for Windowstuscany_sdo_cpp-1.0-incubator-M3-src.zipMD5PGP
      +
      >Incubator-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. + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DescriptionDownload linkMD5PGP
      Linux +
      + Binary
      Tuscany SDO C++ M2tuscany_sdo_cpp-1.0-incubator-M2-bin.tar.gzMD5PGP
      Linux +
      + Source
      Tuscany SDO C++ M2tuscany_sdo_cpp-1.0-incubator-M2-src.tar.gzMD5PGP
      Windows +
      + Binary
      Tuscany SDO C++ M2tuscany_sdo_cpp-1.0-incubator-M2-bin.zipMD5PGP
      Windows +
      + Source
      Tuscany SDO C++ M2tuscany_sdo_cpp-1.0-incubator-M2-src.zipMD5PGP
      +
      >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. + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DescriptionDownload linkMD5PGP
      Linux +
      + Binary
      Tuscany SDO C++ M1tuscany_sdo_cpp-0.1.incubating-M1-bin.tar.gzMD5PGP
      Linux +
      + Source
      Tuscany SDO C++ M1tuscany_sdo_cpp-0.1.incubating-M1-src.tar.gzMD5PGP
      Windows +
      + + Binary
      Tuscany SDO C++ M1tuscany_sdo_cpp-0.1.incubating-M1-bin.zipMD5PGP
      Windows +
      + Source
      Tuscany SDO C++ M1tuscany_sdo_cpp-0.1.incubating-M1-src.zipMD5PGP
      +
      SDO C++ - + Development
      Apache Tuscany source code, documentation and web site are managed under + version control using Subversion in + + Tuscany + Subversion Repository . The source for the SDO C++ project can be found at http://svn.apache.org/repos/asf/incubator/tuscany/cpp/sdo/.
      + + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-general-menu.html b/site/trunk/site-publish/sdo-general-menu.html new file mode 100644 index 0000000000..10c95ce7f8 --- /dev/null +++ b/site/trunk/site-publish/sdo-general-menu.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO General Menu + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > General > SDO General Menu + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-general.html b/site/trunk/site-publish/sdo-general.html new file mode 100644 index 0000000000..31ab62787a --- /dev/null +++ b/site/trunk/site-publish/sdo-general.html @@ -0,0 +1,83 @@ + + + + + + + SDO General : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Menus > SDO General + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sdo-java-10-incubating-beta1.html b/site/trunk/site-publish/sdo-java-10-incubating-beta1.html new file mode 100644 index 0000000000..793a49fbaf --- /dev/null +++ b/site/trunk/site-publish/sdo-java-10-incubating-beta1.html @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java 1.0-incubating-beta1 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO Java 1.0-incubating-beta1 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      SDO Java 1.0-incubating-beta

      + +

      SDO Java Beta1 is a superset of previous SDO Java M2 release.  Anything in M2 is also in Beta1, but Beta1 contains features and bugfixes not present in M2 release. SDOJava Beta1 is an implementation of the SDO 2.1 specification.

      + +

      There are 3 SDO 2.1 features which do not have an implementation in this release, those being 

      + +

      XMLHelper load/save with Source/Result (TUSCANY-1214) DataHelper.convert (TUSCANY-1213)
      +Property.isNullable() and
      +Property.isOpenContent()(TUSCANY-1212)

      + +

      Windows

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Type Description
      File
      Signature
      Binary Tuscany SDO 1.0 beta1 tuscany-sdo-1.0-incubating-beta1-bin.zip MD5     PGP
      Source Tuscany SDO 1.0 beta1 API tuscany-sdo-api-1.0-incubating-beta1-src.zip MD5     PGP
      Source Tuscany SDO 1.0 beta1 Implementation tuscany-sdo-impl-1.0-incubating-beta1-src.zip MD5     PGP
      Source Tuscany SDO 1.0 beta1 Sample tuscany-sdo-sample-1.0-incubating-beta1-src.zip MD5     PGP
      +
      + + +

      Linux

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Type Description
      File
      Signature
      Binary Tuscany SDO 1.0 beta1 tuscany-sdo-1.0-incubating-beta1-bin.tar.gz MD5     PGP
      Source Tuscany SDO 1.0 beta1 API tuscany-sdo-api-1.0-incubating-beta1-src.tar.gz MD5     PGP
      Source Tuscany SDO 1.0 beta1 Implementation tuscany-sdo-impl-1.0-incubating-beta1-src.tar.gz MD5     PGP
      Source Tuscany SDO 1.0 beta1 Sample tuscany-sdo-sample-1.0-incubating-beta1-src.tar.gz MD5     PGP
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-10-incubating-release-summary.html b/site/trunk/site-publish/sdo-java-10-incubating-release-summary.html new file mode 100644 index 0000000000..87bee14aae --- /dev/null +++ b/site/trunk/site-publish/sdo-java-10-incubating-release-summary.html @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java 1.0-incubating Release Summary + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO Java 1.0-incubating > SDO Java 1.0-incubating Release Summary + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      What's new in this Release

      + +

      Apache Tuscany's SDO Java Release 1.0-incubating is the first release with full coverage of the SDO 2.1 specification.

      + +

      In addition to adding the few remaining SDO 2.1 features not included in the
      +1.0-incubating-beta1 release and fixing a number of bugs
      +there are a number of new features relating to XML serialization, and new
      +support for handling dynamic derivation from static classes. There has also
      +been significant focus on making the SDO sample programs more accessible.

      + +

      For the full change history take a look here

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-10-incubating.html b/site/trunk/site-publish/sdo-java-10-incubating.html new file mode 100644 index 0000000000..d85528179c --- /dev/null +++ b/site/trunk/site-publish/sdo-java-10-incubating.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java 1.0-incubating + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO Java 1.0-incubating + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      What's new in this Release

      + +

      Apache Tuscany's SDO Java Release 1.0-incubating is the first release with full coverage of the SDO 2.1 specification.

      + +

      In addition to adding the few remaining SDO 2.1 features not included in the
      +1.0-incubating-beta1 release and fixing a number of bugs
      +there are a number of new features relating to XML serialization, and new
      +support for handling dynamic derivation from static classes. There has also
      +been significant focus on making the SDO sample programs more accessible.

      + +

      For the full change history take a look here

      + +

      Windows

      + +
      + + + + + + + + + + + + + + + + +
      Type File Signature
      Binary apache-tuscany-sdo-1.0-incubating.zip ASC MD5
      Source apache-tuscany-sdo-1.0-incubating-src.zip ASC MD5
      +
      + + +

      Linux / Mac OS X / Unix

      + +
      + + + + + + + + + + + + + + + + +
      Type File Signature
      Binary apache-tuscany-sdo-1.0-incubating.tar.gz ASC MD5
      Source apache-tuscany-sdo-1.0-incubating-src.tar.gz ASC MD5
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-11-incubating-release-summary.html b/site/trunk/site-publish/sdo-java-11-incubating-release-summary.html new file mode 100644 index 0000000000..77420c1519 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-11-incubating-release-summary.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java 1.1-incubating Release Summary + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO Java 1.1-incubating > SDO Java 1.1-incubating Release Summary + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      What's new in this Release

      + +

      Apache Tuscany's SDO Java Release 1.1-incubating is the first update afer the 1.0 release where full coverage for SDO 2.1 specification was provided.
      +This release includes new features, improvements and many bug fixes, please see release notes for more detalil.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-11-incubating.html b/site/trunk/site-publish/sdo-java-11-incubating.html new file mode 100644 index 0000000000..9f2460eb7f --- /dev/null +++ b/site/trunk/site-publish/sdo-java-11-incubating.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java 1.1-incubating + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO Java 1.1-incubating + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      What's new in this Release

      + +

      Apache Tuscany's SDO Java Release 1.1-incubating is the first update afer the 1.0 release where full coverage for SDO 2.1 specification was provided.
      +This release includes new features, improvements and many bug fixes, please see release notes for more detalil.

      + +

      Windows

      + +
      + + + + + + + + + + + + + + + + +
      Type File Signature
      Binary apache-tuscany-sdo-1.1-incubating.zip ASC MD5
      Source apache-tuscany-sdo-1.1-incubating-src.zip ASC MD5
      +
      + + +

      Linux / Mac OS X / Unix

      + +
      + + + + + + + + + + + + + + + + +
      Type File Signature
      Binary apache-tuscany-sdo-1.1-incubating.tar.gz ASC MD5
      Source apache-tuscany-sdo-1.1-incubating-src.tar.gz ASC MD5
      +
      + + +

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-111-release-summary.html b/site/trunk/site-publish/sdo-java-111-release-summary.html new file mode 100644 index 0000000000..3aab8205e3 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-111-release-summary.html @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java 1.1.1 Release Summary + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO Java 1.1.1 > SDO Java 1.1.1 Release Summary + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      What's new in this Release

      + +

      Apache Tuscany's SDO Java Release 1.1.1 represents a minor fix level above the 1.1-incubating release, but is the first SDO release to be made since Tuscany became a top level Apache project (hence the absence of the incubating postfix). Please see release notes for more detail.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-111.html b/site/trunk/site-publish/sdo-java-111.html new file mode 100644 index 0000000000..c3ad4ed222 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-111.html @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java 1.1.1 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO Java 1.1.1 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      What's new in this Release

      + +

      Apache Tuscany's SDO Java Release 1.1.1 represents a minor fix level above the 1.1-incubating release, but is the first SDO release to be made since Tuscany became a top level Apache project (hence the absence of the incubating postfix). Please see release notes for more detail.

      +

      Windows

      + +
      + + + + + + + + + + + + + + + + +
      Type File Signature
      Binary apache-tuscany-sdo-1.1.1.zip ASC MD5
      Source apache-tuscany-sdo-1.1.1-src.zip ASC MD5
      +
      + + +

      Linux / Mac OS X / Unix

      + +
      + + + + + + + + + + + + + + + + +
      Type File Signature
      Binary apache-tuscany-sdo-1.1.1.tar.gz ASC MD5
      Source apache-tuscany-sdo-1.1.1-src.tar.gz ASC MD5
      +
      + + +

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-architecture-guide.html b/site/trunk/site-publish/sdo-java-architecture-guide.html new file mode 100644 index 0000000000..fb032e076f --- /dev/null +++ b/site/trunk/site-publish/sdo-java-architecture-guide.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Architecture Guide + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Architecture Guide + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      To be done

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-documentation-menu.html b/site/trunk/site-publish/sdo-java-documentation-menu.html new file mode 100644 index 0000000000..f57748fd77 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-documentation-menu.html @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Documentation Menu + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Documentation Menu + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      + +

      SDO Java Documentation

      + +

      The following guides are available for SDO Java.

      + +
        +
      • User Guide
        +This introduces you to SDO concepts and walks you through a simple example.
      • +
      + + +
        +
      • Developer Guide
        +If you would like to contribute to the project, this guide explains how to build Java SDO and how to contribute code back to the project.
      • +
      + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-documents.html b/site/trunk/site-publish/sdo-java-documents.html new file mode 100644 index 0000000000..2d2313e82d --- /dev/null +++ b/site/trunk/site-publish/sdo-java-documents.html @@ -0,0 +1,162 @@ + + + + + + + + SDO Java Documents + + + + + + + +
      +  Apache Tuscany > Home > SDO Java > SDO Java Documents + +
      + + + + + + +
      +
      + +
      + +
      + Added by kelvin goodson, last edited by haleh mahbod on Apr 18, 2007 +  (view change) + +
      + +
      +
      +
      Apache Tuscany SDO Java User Guide
      +

      This page is work in progress. Thanks for your contribution

      + + + +


      +
      + +

      Getting Started

      +

      As an SDO user, you have (at least) three ways of establishing a Tuscany SDO runtime environment on your machine. In decreasing order of likelihood, you can either

      +
        +
      • download a binary distribution of a Tuscany Java SDO milestone release, and follow the instructions in the release archive
      • +
      • Or you can download a Tuscany source distribution, and follow the instruction in the release archive to recreate the corresponding binary release
      • +
      • or you can build from the svn repository source code, giving you the flexibility to base your runtime on the most recent code, or a particular level of your choice.
      • +
      + + +

      If you are going to take either of the latter two approaches you will need to establish a development environment.

      + +

      For examples of how to use SDO, you can look at the documents or at the samples. If you have downloaded the source distribution, the sample code will be part of that distribution. If however you have downloaded a binary distribution, you'll need to go and download the sample source code as a separate archive.

      + +

      Other sources of inspiration might come from the use of SDO within the Tuscany DAS and SCA code. When you come across issues, please look at and/or post to the Tuscany mailing lists.

      + + + +

      Specification

      + +

      The SDO Specification 2.1 for Java describes the data programming interface for Java language.

      + +

      Sample Walkthrough

      + +

      The following articles published by Tuscany committers, Kelvin Goodson and Geoffrey Winn, in Java Developer Journal provide a quick view of SDO concepts accompanied by a sample code for a real scenario.

      + + + + +
      + + +
      +
      + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sdo-java-download.html b/site/trunk/site-publish/sdo-java-download.html new file mode 100644 index 0000000000..ae1603d04d --- /dev/null +++ b/site/trunk/site-publish/sdo-java-download.html @@ -0,0 +1,419 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Download + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Download + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      The distribution of Tuscany SDO 1.0-incubator-beta1 is made + in 4 archives, available in two formats, one suitable for unpacking on + Linux and the other on Windows. The source distributions are split into the SDO 2.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.
      >Incubating-beta1 + (May 16th 2007)
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + DescriptionDownload linkMD5PGP
      Linux
      + + Binary
      Tuscany SDO 1.0 beta1 tuscany-sdo-1.0-incubating-beta1-bin.tar.gzMD5PGP
      Linux
      + Source
      Tuscany SDO 1.0 beta1 APItuscany-sdo-api-1.0-incubating-beta1-src.tar.gzMD5PGP
      Linux
      + Source
      Tuscany SDO 1.0 beta1 Implementationtuscany-sdo-impl-1.0-incubating-beta1-src.tar.gzMD5PGP
      Linux
      + Source
      Tuscany SDO 1.0 beta1 Sampletuscany-sdo-sample-1.0-incubating-beta1-src.tar.gzMD5PGP
      Windows
      + Binary
      Tuscany SDO 1.0 beta1tuscany-sdo-1.0-incubating-beta1-bin.zipMD5PGP
      Windows
      + Source
      Tuscany SDO 1.0 beta1 APItuscany-sdo-api-1.0-incubating-beta1-src.zip + MD5PGP
      Windows
      + + Source
      Tuscany SDO 1.0 beta1 Implementationtuscany-sdo-impl-1.0-incubating-beta1-src.zip + MD5PGP
      Windows
      + Source
      Tuscany SDO 1.0 beta1 Sampletuscany-sdo-sample-1.0-incubating-beta1-src.zipMD5PGP
      +
      The distribution of Tuscany SDO is made + in 4 archives, and in two formats, one suitable for unpacking on + Linux and the other on Windows. The source distributions are split into the SDO 2.0.1 API and the + Tuscany implementation of that API. The binary distribution contains the result of building those two source distributions. The sample + distribution contains sample source code which may be used to experiment with the binary distribution (Note that the + samples are already included in the implementation source + distribution).
      >Incubating-M2 + (Nov 14th, 2006)
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + DescriptionDownload linkMD5PGP
      Linux
      + + Binary
      Tuscany M2 SDO tuscany-sdo-1.0-incubator-M2-bin.tar.gzMD5PGP
      Linux
      + Source
      Tuscany M2 SDO APItuscany-sdo-api-1.0-incubator-M2-src.tar.gzMD5PGP
      Linux
      + Source
      Tuscany M2 SDO Implementationtuscany-sdo-impl-1.0-incubator-M2-src.tar.gzMD5PGP
      Linux
      + Source
      Tuscany M2 SDO Sampletuscany-sdo-sample-1.0-incubator-M2-src.tar.gzMD5PGP
      Windows
      + Binary
      Tuscany M2 SDOtuscany-sdo-1.0-incubator-M2-bin.zipMD5PGP
      Windows
      + Source
      Tuscany M2 SDO APItuscany-sdo-api-1.0-incubator-M2-src.zip + MD5PGP
      Windows
      + + Source
      Tuscany M2 SDO Implementationtuscany-sdo-impl-1.0-incubator-M2-src.zip + MD5PGP
      Windows
      + Source
      Tuscany M2 SDO Sampletuscany-sdo-sample-1.0-incubator-M2-src.zipMD5PGP
      +
      >Incubating-M1 (June 7th, + 2006)
      + + Note + : This is a single package release containing SCA and DAS besides + SDO. +
      + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + DescriptionDownload linkMD5PGP
      Linux
      + Binary
      Tuscany M1 SDOtuscany-incubating-M1.tar.gzMD5PGP
      Linux
      + Source
      Tuscany M1 SDOtuscany-incubating-M1-src.tar.gzMD5PGP
      Windows
      + Binary
      Tuscany M1 SDOtuscany-incubating-M1.zipMD5PGP
      Windows
      + Source
      Tuscany M1 SDOtuscany-incubating-M1-src.zip + MD5PGP
      + + +
      +
      + + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-found-a-bug.html b/site/trunk/site-publish/sdo-java-found-a-bug.html new file mode 100644 index 0000000000..63449b763e --- /dev/null +++ b/site/trunk/site-publish/sdo-java-found-a-bug.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Found a Bug + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > Subproject Menus > SDO Java Subproject Menu > SDO Java Found a Bug + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      +

      Reporting an Issue or Asking For New Features

      + +

      Please use ApacheJIRA system to report bugs or request new features. First time users need to create a login.

      + +

      Search the existing JIRAs to see if what you want to create is already there. If not, create a new one. Make sure JIRAs are categorized correctly using JIRA categories and are created under the correct component area. Please include as much information as possible in your JIRA to help resolve the issue quicker. This can include version of the software used, platforms running on, steps to reproduce, test case, details of your requirement or even a patch if you have one.

      + +

      Submitting a Patch

      + +

      Please follow the steps below to create a patch. It will be reviewed and committed by a committer in the project.

      + +
        +
      • Perform a full build with all tests enabled for the module the fix is for. Specific build procedures vary by sub-project.
      • +
      • Confirm that the problem is fixed and include a test case where possible to help the person who is applying the patch to verify the fix.
      • +
      • Generate the patch using svn diff File > patchfile
      • +
      • Try to give your patch files meaningful names, including the JIRA number
      • +
      • Add your patch file as an attachment to the associated JIRA issue +
          +
        • Clicking on the 'Patch Available' box in the screen where the patch is being submitted will help identify available patches quicker.
        • +
        +
      • +
      + + +

      How do I get my JIRAs into a release?

      +

      You can always propose a release and drive the release with the content that you want. Another way to get a JIRA into a release is by providing a patch or working with other community members (volunteers) to help you get the problem fixed. You can also help by providing test cases.

      + +

      Each release is managed by a release manager. Make sure that the Release Manager is aware of why a fix to a JIRA is important to your business. In general, the best attempt is made to include as many JIRAs as possible depending on the level of community help. The voting mechanism in the JIRA system can be used to raise the importance of a JIRA to the attention of the release manager. Adding comments in the JIRA would help the release manager understand why a JIRA is important to include in a given release.

      + +

      How is a release done?

      +

      Anyone can volunteer to be a release manager and drive a release. Based on Apache guidelines, a release requires at least three PMC +1 votes and more +1s than -1s. A release can not be vetoed so a -1 does not block a release. The steps for how to create a Tuscany release are documented here

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-get-involved.html b/site/trunk/site-publish/sdo-java-get-involved.html new file mode 100644 index 0000000000..1b19eaa2a9 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-get-involved.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Get Involved + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > Subproject Menus > SDO Java Subproject Menu > SDO Java Get Involved + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + +

      + + +
      +

      Getting Involved

      + +

      Apache Tuscany

      +

      A successful project requires many people to play many roles, for example write code, documentation, test, provide suggestions or feedback. If you would like to become involved, join the mailing list.

      + +

      Here are some suggestions for getting started and welcome to the project.

      + +

      Read the overview pages for each subproject and decide where you'd like to get involved.

      + +
        +
      • Contribute new ideas for improving Tuscany subprojects.
      • +
      • Answer questions posted to the mailing list.
      • +
      • Contribute to the FAQ under each subproject or to the wiki website.
      • +
      • Contribute to the user or developer documentation for each subproject on the Tuscany wiki.
      • +
      • Investigate bugs that have been reported and provide patches.
      • +
      • Help with development for the next release of Apache Tuscany subprojects. For example, the Java developer guide is here
      • +
      + + +

      If in doubt about where to start, send a note to the mailing list and mention your area of interest.

      + +

      Please note that a single mailing list is used for all the subprojects.

      + +

      The Tuscany community also gets together on IRC. 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:

      + + + +

      If you are not familiar with Apache, you can read more about how Apache works at this link.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-incubating-m1.html b/site/trunk/site-publish/sdo-java-incubating-m1.html new file mode 100644 index 0000000000..058ebccc5f --- /dev/null +++ b/site/trunk/site-publish/sdo-java-incubating-m1.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Incubating-M1 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO Java Incubating-M1 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      SDO Java Incubating-M1

      + +

      The SDO Java Incubating-M1 was released in June 2006.

      + +

      Windows

      + +
      + + + + + + + + + + + + + + + + + + + +
      Type Description
      File
      Signature
      Binary Tuscany M1 SDO tuscany-incubating-M1.zip MD5    PGP
      Source Tuscany M1 SDO tuscany-incubating-M1-src.zip MD5    PGP
      +
      + + +

      Linux

      + +
      + + + + + + + + + + + + + + + + + + + +
      Type Description
      File
      Signature
      Binary Tuscany M1 SDO tuscany-incubating-M1.tar.gz MD5    PGP
      Source Tuscany M1 SDO tuscany-incubating-M1-src.tar.gz MD5    PGP
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-incubating-m2.html b/site/trunk/site-publish/sdo-java-incubating-m2.html new file mode 100644 index 0000000000..4a708a8a74 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-incubating-m2.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Incubating-M2 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO Java Incubating-M2 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      SDO Java Incubating-M2

      + +

      The SDO Java Incubating-M2 was released in Nov, 2006.

      + +

      Windows

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Type Description
      File
      Signature
      Binary Tuscany M2 SDO
      tuscany-sdo-1.0-incubator-M2-bin.zip MD5     PGP
      Source Tuscany M2 SDO API tuscany-sdo-api-1.0-incubator-M2-src.zip MD5     PGP
      Source Tuscany M2 SDO Implementation tuscany-sdo-impl-1.0-incubator-M2-src.zip MD5     PGP
      Source Tuscany M2 SDO Sample tuscany-sdo-sample-1.0-incubator-M2-src.zip MD5     PGP
      +
      + + +

      Linux

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Type Description
      File
      Signature
      Binary Tuscany M2 SDO tuscany-sdo-1.0-incubator-M2-bin.tar.gz MD5     PGP
      Source Tuscany M2 SDO API tuscany-sdo-api-1.0-incubator-M2-src.tar.gz MD5     PGP
      Source Tuscany M2 SDO Implementation tuscany-sdo-impl-1.0-incubator-M2-src.tar.gz MD5     PGP
      Source Tuscany M2 SDO Sample tuscany-sdo-sample-1.0-incubator-M2-src.tar.gz MD5     PGP
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-issue-tracking.html b/site/trunk/site-publish/sdo-java-issue-tracking.html new file mode 100644 index 0000000000..70a29d2d7c --- /dev/null +++ b/site/trunk/site-publish/sdo-java-issue-tracking.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Issue Tracking + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > Developing SDO Java > SDO Java Issue Tracking + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      To be completed (KG 12th March 07)

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-m3.html b/site/trunk/site-publish/sdo-java-m3.html new file mode 100644 index 0000000000..2a2b0fc97e --- /dev/null +++ b/site/trunk/site-publish/sdo-java-m3.html @@ -0,0 +1,453 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java M3 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java M3 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      Work for this release is being tracked under TUSCANY-1171
      +Using my M2 post mortem notes to drive the process and updating them here

      + +

      Here are the issues fixed in Milestone 3 (so far)

      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TestTUSCANY-1100Dynamic Type tests are needed to ensure that all XSD datatypes are supportedJava SDO ImplementationMajor
      New FeatureTUSCANY-1101Support mixed Sequence and any Sequence in Change SummaryJava SDO ImplementationMajor
      New FeatureTUSCANY-1082Change Summary XML deserializationJava SDO ImplementationMajor
      New FeatureTUSCANY-930Add new SDOUtil.createHelperContext() methodJava SDO ImplementationMajor
      New FeatureTUSCANY-929Move to SDO 2.1 spec APIsJava SDO ImplementationMajor
      New FeatureTUSCANY-713Discover and regiester new SDO types during the time of loading the XML instance documentJava SDO ImplementationMajor
      New FeatureTUSCANY-684Generated SDO classes should be able to register the static types to a given TypeHelperJava SDO ImplementationMajor
      ImprovementTUSCANY-1113Extensible namespaces and types that changeJava SDO ImplementationMajor
      ImprovementTUSCANY-1107Multiple calls to getNamespaceContextJava SDO ImplementationMajor
      ImprovementTUSCANY-1091DataObjectXMLStreamReader doesn't have to repeat NameSpace declaration which impacts performanceJava SDO ImplementationMajor
      ImprovementTUSCANY-1088SDO should tolerate malformed XMLJava SDO ImplementationMajor
      ImprovementTUSCANY-1086Scope defined java serialiazation/deserialization of SDOJava SDO ImplementationMajor
      ImprovementTUSCANY-1083Shorter NameSpace prefix to speed up XML processing and reduce communication bandwidthJava SDO ImplementationMajor
      ImprovementTUSCANY-928Define Tuscany SDO options for XMLHelper load and save operationsJava SDO ImplementationMajor
      ImprovementTUSCANY-521Hide special Sequence-type properties from SDO TypesJava SDO ImplementationMajor
      ImprovementTUSCANY-709Loads DataGraph in designated scope(TypeHelper)Java SDO ImplementationMinor
      BugTUSCANY-1093"isSet returning false when boolean set to false, or int set to 0"Java SDO ImplementationCritical
      BugTUSCANY-1132SDO Java serialization/deserialization throws an exception when the serialized data object is not the root and its container is of AnyTypeDataObjectJava SDO ImplementationMajor
      BugTUSCANY-1130Concurrent access to SDOUtil.createHelperContext() results in exceptionJava SDO ImplementationMajor
      BugTUSCANY-1099fix for TUSCANY-1083 used lookupPrefix method of Node not available to Java 1.4.2 usersJava SDO ImplementationMajor
      BugTUSCANY-1097DataObjectXMLStreamReader shouldn't have ignored (transient Properties in) SequenceJava SDO ImplementationMajor
      BugTUSCANY-1085schemaLocation attribute in the <xsd:import> should be only a hintJava SDO ImplementationMajor
      BugTUSCANY-1062DataGraph.createRootObject implementation does not match 2.1 spec and also is not helpful when given bad parametersJava SDO ImplementationMajor
      BugTUSCANY-1044DataHelperImpl.toDateTime() is not compliant with spec.Java SDO ImplementationMajor
      BugTUSCANY-972commonj.sdo/xml namespace should be supported by SDO runtime by defaultJava SDO ImplementationMajor
      BugTUSCANY-958NPE generated during a property set of a static SDOJava SDO ImplementationMajor
      BugTUSCANY-956SDOFactory instance lookup is using the wrong namespace URIJava SDO ImplementationMajor
      BugTUSCANY-935"SDO path accessors need to support names that contain ""."""Java SDO ImplementationMajor
      BugTUSCANY-932Invoking DataObject.isSet(String path) with invalid path would result in NPEJava SDO ImplementationMajor
      BugTUSCANY-931"Sequence.add(int index, String propertyName, Object value) is not functioning correctly"Java SDO ImplementationMajor
      BugTUSCANY-894SDO (and indirectly DAS) may not now depend on CPL if EMF has completed migration to EPLJava SDO ImplementationMajor
      BugTUSCANY-887TypeHelper.define() should create an accompanying global property per typeJava SDO ImplementationMajor
      BugTUSCANY-859ChangeSummary#isCreated cache is not updated while changes are still going onJava SDO ImplementationMajor
      BugTUSCANY-836doubleValue() may be inaccurate for LongJava SDO ImplementationMajor
      BugTUSCANY-396Cardinality of wildcard element not respectedJava SDO ImplementationMajor
      BugTUSCANY-1055DataFactory.create(abstract_type) should throw an IllegalArgumentExceptionJava SDO ImplementationMinor
      BugTUSCANY-885Property DataObject.getProperty(String propertyName) should return null if the property cannot be foundJava SDO ImplementationMinor
      BugTUSCANY-701Conversion to date types which do not include month can give incorrect resultsJava SDO ImplementationMinor
      New FeatureTUSCANY-1102Support EMF 2.2.2Java SDO Implementation, Java SDO ToolsMajor
      BugTUSCANY-1123test case generated code and metadata access is anachronistic"Java SDO Implementation, Java SDO Tools"Major
      ImprovementTUSCANY-1155Java SDO static code generation tool java doc and usage hints need updating.Java SDO ToolsMinor
      BugTUSCANY-1141The dependency/imported package was not initialized if the codegen tool was provided with -javaPackage option for the target codegen packageJava SDO ToolsMajor
      BugTUSCANY-1120Static code generator template bugsJava SDO ToolsMajor
      BugTUSCANY-1050"For some schemas, the code generated will not compile (notication and settable problems)"Java SDO ToolsMajor
      BugTUSCANY-934XSD2JavaGenerator -noEMF option does not work with abstract classes.Java SDO ToolsMajor
      BugTUSCANY-933XSD2Java Generator still generates EMF codes with -noEMF option onJava SDO ToolsMajor
      BugTUSCANY-718make -noEMF code generation the defaultJava SDO ToolsMinor
      +
      + + +

      Here are the release process steps harvested from the M2 release

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-news.html b/site/trunk/site-publish/sdo-java-news.html new file mode 100644 index 0000000000..cf310f1f80 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-news.html @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java News + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java News + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + +

      This page can be updated by anyone wanting to share information on Tuscany SDO Java. Thanks!

      + +
      +
      SDO Java News
      +
        +
      • 1.0-incubating version released in August, See the announcement.
      • +
      • Formulating plans for the next release Now is the time to express opinions on what happens next with SDO Java.
      • +
      • There are plans for reorganising the code base to add Java Generator tests see discussions here.
      • +
      • Community looking at adding multi-threaded testing spurred on by discussions here.
      • +
      +
      +
      Users Sharing News
      +
        +
      • Please share information that you think will benefit other users or the project. link the information to this page.
      • +
      + + + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-previous-releases.html b/site/trunk/site-publish/sdo-java-previous-releases.html new file mode 100644 index 0000000000..10aaa09c12 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-previous-releases.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Previous Releases + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases > SDO Java Previous Releases + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + + + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-releases.html b/site/trunk/site-publish/sdo-java-releases.html new file mode 100644 index 0000000000..422c25f8d8 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-releases.html @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Releases + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Releases + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + +

      Latest Release

      +

      What's new in this Release

      + +

      Apache Tuscany's SDO Java Release 1.1.1 represents a minor fix level above the 1.1-incubating release, but is the first SDO release to be made since Tuscany became a top level Apache project (hence the absence of the incubating postfix). Please see release notes for more detail.

      +

      Windows

      + +
      + + + + + + + + + + + + + + + + +
      Type File Signature
      Binary apache-tuscany-sdo-1.1.1.zip ASC MD5
      Source apache-tuscany-sdo-1.1.1-src.zip ASC MD5
      +
      + + +

      Linux / Mac OS X / Unix

      + +
      + + + + + + + + + + + + + + + + +
      Type File Signature
      Binary apache-tuscany-sdo-1.1.1.tar.gz ASC MD5
      Source apache-tuscany-sdo-1.1.1-src.tar.gz ASC MD5
      +
      + + +

      +

      Previous Releases

      + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-source-code.html b/site/trunk/site-publish/sdo-java-source-code.html new file mode 100644 index 0000000000..4d3fa1bf2a --- /dev/null +++ b/site/trunk/site-publish/sdo-java-source-code.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Source Code + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Source Code + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      The SDO Java Source Code can be found in the Apache svn repository.

      + +

      The code for the SDO API is housed in this repository at http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/sdo-api/

      + +

      The code for the current implementation can be found at  http://svn.apache.org/repos/asf/incubator/tuscany/java/sdo/

      + +

      Source code for previous releases can be found at http://svn.apache.org/repos/asf/incubator/tuscany/tags/java/sdo/

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-subproject-menu.html b/site/trunk/site-publish/sdo-java-subproject-menu.html new file mode 100644 index 0000000000..aab9559cc6 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-subproject-menu.html @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Subproject Menu + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > Subproject Menus > SDO Java Subproject Menu + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + + + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-user-guide.html b/site/trunk/site-publish/sdo-java-user-guide.html new file mode 100644 index 0000000000..2c23e921fb --- /dev/null +++ b/site/trunk/site-publish/sdo-java-user-guide.html @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java User Guide + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java User Guide + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + +
      Apache Tuscany SDO Java User Guide
      +

      This page is work in progress. Thanks for your contribution

      + + + +


      +
      + +

      Getting Started

      + +

      As an SDO user, you have (at least) three ways of establishing a Tuscany SDO runtime environment on your machine. In decreasing order of likelihood, you can either

      +
        +
      • download a binary distribution of a Tuscany Java SDO milestone release, and follow the instructions in the release archive
      • +
      • Or you can download a Tuscany source distribution, and follow the instruction in the release archive to recreate the corresponding binary release
      • +
      • or you can build from the svn repository source code, giving you the flexibility to base your runtime on the most recent code, or a particular level of your choice.
      • +
      + + +

      If you are going to take either of the latter two approaches you will need to establish a development environment.

      + +

      For examples of how to use SDO, you can look at the documents or at the samples. If you have downloaded the source distribution, the sample code will be part of that distribution. If however you have downloaded a binary distribution, you'll need to go and download the sample source code as a separate archive.

      + +

      Other sources of inspiration might come from the use of SDO within the Tuscany DAS and SCA code. When you come across issues, please look at and/or post to the Tuscany mailing lists.

      + +

      Example Walk-through

      + +

      The following articles published by Tuscany committers, Kelvin Goodson and Geoffrey Winn, in Java Developer Journal provide a quick view of SDO concepts accompanied by a sample code for a real scenario.

      + + + +

      Also, the detailed documentation about the Samples is available at Sample Program Contents

      + +

      Service Data Object Specification 2.1

      + +

      The SDO Specification 2.1 for Java describes the data programming interface for Java language.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-whats-new.html b/site/trunk/site-publish/sdo-java-whats-new.html new file mode 100644 index 0000000000..5903b14403 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-whats-new.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java Whats New + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java Whats New + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      May 16th, 2007, SDO Java releases its 1.0-incubating-beta1 release.

      + +

      May 9th, 2007, SDO Java achieves state of being a functionally complete implementation of the SDO 2.1 specification
      +This was achieved at code revision level 536331. The community is working towards a new SDO release after a period
      +of enhancing the test suite and making bug fixes.

      + +

      May 2nd, 2007, SDO Java beta1 release requests ratification from the Incubator Project Management Committee as a final stage before announcement.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java-whats-to-be-done.html b/site/trunk/site-publish/sdo-java-whats-to-be-done.html new file mode 100644 index 0000000000..fb4f34c507 --- /dev/null +++ b/site/trunk/site-publish/sdo-java-whats-to-be-done.html @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java - What's to be done + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > SDO Java - What's to be done + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      DRAFT DOCUMENT

      + +

      for now just a stream of consciousness list of things that could be done,  in no particular order

      + +

      fix copy and equality helper to handle change summaries
      +take on board some of the 2.1.1 spec resolutions
      +create a parallel API source tree for the 1.2.1 API (javax.sdo instead of commonj.sdo)
      +create an ecmascript / javascript version of SDO
      +generate from annotated java interfaces
      +SDO databinding for Axis2
      +ensure appropriate edits to 1.1.1 branch and tag are applied to trunk

      + +

      Current list of features, improvements and wishes

      + + + +

      more to come ... 

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-java.data/do_uml.png b/site/trunk/site-publish/sdo-java.data/do_uml.png new file mode 100644 index 0000000000..4cd5e5d190 Binary files /dev/null and b/site/trunk/site-publish/sdo-java.data/do_uml.png differ diff --git a/site/trunk/site-publish/sdo-java.data/do_uml.png.jpeg b/site/trunk/site-publish/sdo-java.data/do_uml.png.jpeg new file mode 100644 index 0000000000..d7f7470b0d Binary files /dev/null and b/site/trunk/site-publish/sdo-java.data/do_uml.png.jpeg differ diff --git a/site/trunk/site-publish/sdo-java.data/meta.png b/site/trunk/site-publish/sdo-java.data/meta.png new file mode 100644 index 0000000000..f99464f4ab Binary files /dev/null and b/site/trunk/site-publish/sdo-java.data/meta.png differ diff --git a/site/trunk/site-publish/sdo-java.data/meta.png.jpeg b/site/trunk/site-publish/sdo-java.data/meta.png.jpeg new file mode 100644 index 0000000000..3a2d6f1db1 Binary files /dev/null and b/site/trunk/site-publish/sdo-java.data/meta.png.jpeg differ diff --git a/site/trunk/site-publish/sdo-java.data/meta2.png b/site/trunk/site-publish/sdo-java.data/meta2.png new file mode 100644 index 0000000000..9c9b25f892 Binary files /dev/null and b/site/trunk/site-publish/sdo-java.data/meta2.png differ diff --git a/site/trunk/site-publish/sdo-java.data/meta2.png.jpeg b/site/trunk/site-publish/sdo-java.data/meta2.png.jpeg new file mode 100644 index 0000000000..9972fdcfa6 Binary files /dev/null and b/site/trunk/site-publish/sdo-java.data/meta2.png.jpeg differ diff --git a/site/trunk/site-publish/sdo-java.html b/site/trunk/site-publish/sdo-java.html new file mode 100644 index 0000000000..57258ca833 --- /dev/null +++ b/site/trunk/site-publish/sdo-java.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Java + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + +
      + +

      Tuscany SDO Java

      + +

      Tuscany SDO Java implements SDO 2.1 specification and is complemented with utility APIs that further extend the functionality.

      + +

      The project's code base includes the following:

      + +
        +
      • Dynamic data object support
      • +
      • Static code generation (recently updated to remove the externalised EMF dependency aspects)
      • +
      • Scoping of Types using XMLHelper, XSDHelper, DataFactory, CopyHelper, EqualityHelper implementations.
      • +
      • ChangeSummary support for both the DataGraphs and DataObjects
      • +
      • Example programs
      • +
      + + +

      Tuscany provides a relational data access service (RDB DAS) that works with SDO Java. More DAS implementations are underway.

      + +

      SDO Community Test Suite

      + +

      The SDO community test suite stands separately from the Tuscany Implementation of SDO subproject. It is a collaborative effort by SDO community to provide a set of tests that exercise any SDO 2.1 implementation. Learn more about SDO CTS and how to get involved at this link

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-overview-menu.html b/site/trunk/site-publish/sdo-overview-menu.html new file mode 100644 index 0000000000..9d111b1ce5 --- /dev/null +++ b/site/trunk/site-publish/sdo-overview-menu.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SDO Overview menu : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +   + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + +
      + +  Apache Tuscany > Home > Menus > Subproject Menus > SDO Overview menu + + + + User List | Dev List | Issue Tracker   + +
      + + + + + + + + + + + + +
      + + + + + +
      + + + + + + + + + + + + + website stats + + + + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sdo-overview-sandbox.html b/site/trunk/site-publish/sdo-overview-sandbox.html new file mode 100644 index 0000000000..97588201d0 --- /dev/null +++ b/site/trunk/site-publish/sdo-overview-sandbox.html @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Overview - sandbox + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Trash > old-Sandbox > SDO Overview - sandbox + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      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.

      + +

      Unable to render embedded object: File (sdocontext_sm.jpg) not found.

      + +

      SDO is a natural format for representing data on the wire in an SOA environment.

      + +

      Unable to render embedded object: File (sdo_soa_sm.jpg) not found.

      + +

      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.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-overview.data/sdo_soa_sm.jpg b/site/trunk/site-publish/sdo-overview.data/sdo_soa_sm.jpg new file mode 100644 index 0000000000..dca26660d7 Binary files /dev/null and b/site/trunk/site-publish/sdo-overview.data/sdo_soa_sm.jpg differ diff --git a/site/trunk/site-publish/sdo-overview.data/sdo_soa_sm.jpg.jpeg b/site/trunk/site-publish/sdo-overview.data/sdo_soa_sm.jpg.jpeg new file mode 100644 index 0000000000..41d5906646 Binary files /dev/null and b/site/trunk/site-publish/sdo-overview.data/sdo_soa_sm.jpg.jpeg differ diff --git a/site/trunk/site-publish/sdo-overview.data/sdocontext_sm.jpg b/site/trunk/site-publish/sdo-overview.data/sdocontext_sm.jpg new file mode 100644 index 0000000000..b7f0061f7f Binary files /dev/null and b/site/trunk/site-publish/sdo-overview.data/sdocontext_sm.jpg differ diff --git a/site/trunk/site-publish/sdo-overview.data/sdocontext_sm.jpg.jpeg b/site/trunk/site-publish/sdo-overview.data/sdocontext_sm.jpg.jpeg new file mode 100644 index 0000000000..cb26c1d5d7 Binary files /dev/null and b/site/trunk/site-publish/sdo-overview.data/sdocontext_sm.jpg.jpeg differ diff --git a/site/trunk/site-publish/sdo-overview.html b/site/trunk/site-publish/sdo-overview.html new file mode 100644 index 0000000000..d50add550c --- /dev/null +++ b/site/trunk/site-publish/sdo-overview.html @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Overview + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + + +
      + + + +

      What is Service Data Object?

      +

      SOA creates an environment where different types of data must work together. This makes application development complex. Service Data Object(SDO), provides a very simple programming model that addresses this issue. The key high level advantages of SDO are:

      + +
        +
      • Uniform access to data from heterogeneous sources which could be XML, RDB, POJO, SOAP, etc.
      • +
      • SDO provides both a static (or strongly typed) programming model and a dynamic (or loosely typed) programming model. This provides a simple programming model without sacrificing the dynamic model needed by tools and frameworks.
      • +
      • Provides Meta-data for easy introspection of data types
      • +
      • Supports a disconnected model, whereby data can be retrieved from a data source via Data Access Service. The data can be modified by a client with change tracking, and applied back to the data source.
      • +
      • SDO programming model is language neutral
      • +
      + + +

      Tuscany implements SDO in Java and in C++. A PHP version of SDO is also available.

      + +

      SDO specification can be found at the Open Service Oriented Architecture website.

      + +

      Learn more about SDO

      + + + + + + + +
        +
      • Varous white papers and presentations about SDO can be found on www.osoa.org SDO resoruces page.
      • +
      + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-php.html b/site/trunk/site-publish/sdo-php.html new file mode 100644 index 0000000000..ae3f5cd9f9 --- /dev/null +++ b/site/trunk/site-publish/sdo-php.html @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO PHP + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO PHP + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      A PHP implementation of SDO is available outside of Apache in PECL.php. This implementation is based on the Apache Tuscany C++. This information is provided here as a reference for those interested in a PHP open source implementation of SDO.

      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-project-code-structure.data/do_uml.png b/site/trunk/site-publish/sdo-project-code-structure.data/do_uml.png new file mode 100644 index 0000000000..103a4bddcc Binary files /dev/null and b/site/trunk/site-publish/sdo-project-code-structure.data/do_uml.png differ diff --git a/site/trunk/site-publish/sdo-project-code-structure.data/do_uml.png.jpeg b/site/trunk/site-publish/sdo-project-code-structure.data/do_uml.png.jpeg new file mode 100644 index 0000000000..a066ee20ce Binary files /dev/null and b/site/trunk/site-publish/sdo-project-code-structure.data/do_uml.png.jpeg differ diff --git a/site/trunk/site-publish/sdo-project-code-structure.data/meta.png b/site/trunk/site-publish/sdo-project-code-structure.data/meta.png new file mode 100644 index 0000000000..f99464f4ab Binary files /dev/null and b/site/trunk/site-publish/sdo-project-code-structure.data/meta.png differ diff --git a/site/trunk/site-publish/sdo-project-code-structure.data/meta.png.jpeg b/site/trunk/site-publish/sdo-project-code-structure.data/meta.png.jpeg new file mode 100644 index 0000000000..3a2d6f1db1 Binary files /dev/null and b/site/trunk/site-publish/sdo-project-code-structure.data/meta.png.jpeg differ diff --git a/site/trunk/site-publish/sdo-project-code-structure.data/meta2.png b/site/trunk/site-publish/sdo-project-code-structure.data/meta2.png new file mode 100644 index 0000000000..9c9b25f892 Binary files /dev/null and b/site/trunk/site-publish/sdo-project-code-structure.data/meta2.png differ diff --git a/site/trunk/site-publish/sdo-project-code-structure.data/meta2.png.jpeg b/site/trunk/site-publish/sdo-project-code-structure.data/meta2.png.jpeg new file mode 100644 index 0000000000..9972fdcfa6 Binary files /dev/null and b/site/trunk/site-publish/sdo-project-code-structure.data/meta2.png.jpeg differ diff --git a/site/trunk/site-publish/sdo-project-code-structure.html b/site/trunk/site-publish/sdo-project-code-structure.html new file mode 100644 index 0000000000..b77999d6d2 --- /dev/null +++ b/site/trunk/site-publish/sdo-project-code-structure.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + Apache Tuscany : SDO Project Code Structure + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > Developing SDO Java > SDO Project Code Structure + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + +

      SDO Project Code Structure

      + +

      The code for the Tuscany Java SDO implementation may be found at http://svn.apache.org/repos/asf/incubator/tuscany/java/

      + +

      The SDO project is divided into seven parts, denoted here by the subdirectories of the above link where the code for the projects may be found:

      + +
        +
      • sdo/sdo-api contains the SDO (commonj) interfaces defined and provided by the SDO 2.1 specification.
      • +
      • sdo/lib contains the SDO implementation library
      • +
      • sdo/impl provides the runtime implementation of the SDO interfaces.
      • +
      • sdo/tools contains import and generator tools.
      • +
      • sdo/tools-test contains the tests for the SDO Generator Tools and Tool Outputs
      • +
      • sdo/sample contains sample sdo code.
      • +
      • sdo/plugin contains code to configure the way in which SDO is build by maven.
      • +
      + + +

      For each of these projects the implementation source code is located in a sub-directory of the project directory named 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.

      + +

      sdo/sdo-api

      + +

      This project contains the interfaces provided with the SDO 2.1 specification. It is essentially an unzipped copy of the SDO Java API sources zip file available at http://osoa.org/download/attachments/36/SDO_2.1.0_Java_source_FINAL.zip?version=1, 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.

      + +

      sdo/lib

      + +

      This project contains the library APIs for Tuscany's SDO Implementation and some utility/helper packages. The actual implementation resides in sdo/impl. The user is supposed to use the APIs from sdo/lib instead of making direct references to sdo/impl. Unlike sdo/impl this projest does not reference EMF packages anywhere.

      + +

      sdo/impl

      + +

      The sdo.impl subproject contains a test package under src/test/java (see the section below entitled Static Code Generator for details) and the following implementation packages under src/main/java:

      + +

      package org.apache.tuscany.sdo

      + +

      Contains a few interfaces used by some of the implementation classes in org.apache.tuscany.sdo.impl. (Note: this package is subject to further cleanup.)

      + +

      package org.apache.tuscany.sdo.helper

      + +

      This package contains implementations of the "helper" interfaces defined in the commonj.sdo.helper package (in the sdo.spec project). Each helper interface in commonj.sdo.helper has a corresponding implementation class in this package. The name of each helper class is the same as the corresponding interface, only with the suffix "Impl" appended. For example class org.apache.tuscany.sdo.helper.TypeHelperImpl implements the interface commonj.sdo.TypeHelper.

      + +

      The implementation class org.apache.tuscany.sdo.helper.HelperProviderImpl is used to bootstrap an implementation of the default INSTANCEs of the SDO helper (see class commonj.sdo.impl.HelperProvider in sdo.spec). This implementation creates instances of the other helper implementation classes in this package and is registered using the services file src/main/resources/META-INF/services/commonj.sdo.impl.HelperProvider.

      + +

      package org.apache.tuscany.sdo.impl

      + +

      This package contains the majority of the SDO runtime implementation code. This includes implementations of all of the commonj.sdo interfaces (see sdo.spec), including several implementations of the DataObject interface. The design and implementation of the most important classes in this package are described below).

      + +

      package org.apache.tuscany.sdo.util

      + +

      Contains some utility classes used by the implementation. One class, SDOUtil, is particularly important. It provides some useful static utility functions which are not included in the SDO specification itself. Although these are not "standard" APIs, use of them is recommended, as opposed to resorting to low-level implementation-specific APIs. The intent of this class is to encapsulate, in a relatively clean way, common functions that are needed, and can potentially be proposed for addition to the specification in a future version of SDO.

      + +

      sdo/tools

      + +

      This project contains (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).

      + +

      Dependent 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-2.2.1-SNAPSHOT.jar - template-based codegen framework (JET - Java Emitter Templates)
      +emf-codegen-ecore-2.2.1-SNAPSHOT.jar - the EMF code generator
      +emf-common-2.2.1-SNAPSHOT.jar - some common framework utility and base classes
      +emf-ecore-2.2.1-SNAPSHOT.jar - the EMF core runtime implementation classes (the Ecore metamodel)
      +emf-ecore-change-2.2.1-SNAPSHOT.jar - the EMF change recorder and framework
      +emf-ecore-xmi-2.2.1-SNAPSHOT.jar - EMF's default XML (and XMI) serializer and loader
      +xsd-2.2.1-SNAPSHOT.jar - the XML Schema model

      + +

      These are simply Maven-friendly versions of corresponding jar files/plugins obtained from Eclipse. SNAPSHOT maps to an EMF weekly integration build (for example, I200602160000). Note that if you are building SDO for a released source code distribution then the dependency jars will not be snapshot jars, but will instead themselves be released versions of the dependencies.

      + + +

      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:
      +
      +Usage arguments:
      +
      + [ -targetDirectory <target-root-directory> ]
      + [ -javaPackage <base-package-name> ]
      + [ -prefix <prefix-string> ]
      + [ -sparsePattern | -storePattern ]
      + [ -noInterfaces ] [ -noContainment ] [ -noNotification ] [ -arrayAccessors ] [ -noUnsettable ] [ -noEMF ]
      + <xsd-file> | <wsdl-file>

      +For example:
      +
      +java XSD2JavaGenerator somedir/somefile.xsd

      + +

      Options:

      + +

      -targetDirectory Generates the Java source code in the specified directory. By default, the code is generated in the same directory as the input xsd or wsdl file.

      + +

      -javaPackage Overrides the Java package for the generated classes. If not specified, a default package or one specified with an sdoJava:package annotation on the <schema> element in the xsd file (see SDO specification for details) is used for the java package.

      + +

      -prefix Specifies the prefix string to use for naming the generated factory. For example "-prefix Foo" will result in a factory interface with the name "FooFactory".

      + +

      -sparsePattern For SDO metamodels that have classes with many properties of which only a few are typically set at runtime, this option can be used to produce a space-optimized implementation (at the expense of speed).

      + +

      -storePattern This option can be used to generate static classes that work with a Store-based DataObject implementation. It changes the generator pattern to generate accessors which delegate to the reflective methods (as opposed to the other way around) and changes the DataObject base class to org.apache.tuscany.sdo.impl.StoreDataObjectImpl. Note that this option generates classes that require a Store implementation to be provided before they can be run.

      + +

      -noInterfaces By default, each DataObject generates both a Java interface and a corresponding implementation class. If an SDO metamodel does not use multiple inheritance (which is always the case for XML Schema derived models), then this option can be used to eliminate the interface and to generate only an implementation class.

      + +

      -noNotification This option eliminates all change notification overhead in the generated classes. Changes to DataObjects generated using this option cannot be recorded, and consequently the classes cannot be used with an SDO ChangeSummary or DataGraph.

      + +

      -noContainment Turns off container management for containment properties. DataObject.getContainer() will always return null for data objects generated with this option, even if a containment reference is set. Setting a containment reference will also not automatically remove the target object from its previous container, if it had one, so it will need to be explicitly removed by the client. Use of this option is only recommended for scenarios where this kind of container movement/management is not necessary.

      + +

      -arrayAccessors Note: this is prototype code and is not fully implemented. Generates Java array getters/setters for multiplicity-many properties. With this option, the set of "standard" JavaBean array accessor methods (e.g., Foo[] getFoo(), Foo getFoo(int), int getFooLength(), setFoo(Foo[]), and void setFoo(int, Foo)) are generated. The normal List-returning accessor is renamed with the suffix "List" (e.g., List getFooList()). The array returned by the generated method is not a copy, but instead a pointer to the underlying storage array, so directly modifying it can have undesirable consequences and should be avoided.

      + +

      -noUnsettable By default, some XML constructs result in SDO property implementations that maintain additional state information to record when the property has been set to the "default value", as opposed to being truly unset (see DataObject.isSet() and DataObject.unset()). The SDO specification allows an implementation to choose to provide this behavior or not. With this option, all generated properties will not record their unset state. The generated isSet() methods simply returns whether the current value is equal to the property's "default value".

      + +

      -noEMF By default, the generated java implementation source files directly import the Eclipse EMF classes which they depend upon. This can lead to a discrepancy in EMF library level dependencies between the generated classes and the environment into which they are deployed. The -noEmf option provides an early level of function to avoid this situation. Classes generated using this option access EMF function indirectly via inherited behaviour, thereby allowing packaging of these generated classes into jar files which do not directly depend on EMF.

      + +

      This early implementation of this option is limited in the subset of XML Schema it is known to handle, and is subject to change. The generator is known to be able to deal with Complex content (including content models which map to SDO Sequence), and Mixed content for example .

      + +

      <xsd:complexType mixed="true" name="Sequence">
      + <xsd:sequence>
      + <xsd:choice maxOccurs="unbounded" minOccurs="0">
      + <xsd:element name="a" type="xsd:string" />
      + <xsd:element name="b" type="xsd:int" />
      + </xsd:choice>
      + <xsd:element name="split" type="xsd:string" />
      + <xsd:choice maxOccurs="unbounded" minOccurs="0">
      + <xsd:element name="y" type="xsd:string" />
      + <xsd:element name="z" type="xsd:int" />
      + </xsd:choice>
      + </xsd:sequence>
      + </xsd:complexType>
      +Generator Patterns

      + +

      The DataObject interface generation pattern is as described in the SDO specification (see Java Interface Specification section). The SDO specification does not define a factory pattern for efficient construction of static SDOs, which is however provided by the Tuscany implementation. The generated SDO Factory interface conforms to the following pattern:
      + +

      +
      public interface <prefix>Factory {
      +  <Type1> create<Type1>();
      +  <Type2> create<Type2>();
      +  ...
      +  <prefix>Factory INSTANCE = <default_factory_impl>;
      +}
      +
      +

      + + +

      A generated factory corresponds to an SDO Type namespace uri (see commonj.sdo.Type.getURI) with one create() method for each SDO Type in the namespace. The <prefix> of the factory name is derived from the uri. An instance of the factory is available using the INSTANCE field in the interface.

      + +

      Using the static factory, a DataObject might be created as follows:

      + +

      Quote aQuote = StockFactory.INSTANCE.createQuote();
      +... // do something with aQuote
      +The generated implementation of each create() method simply constructs an instance of the corresponding type like this:

      + +

      +

      +
        public Quote createQuote() {
      +    QuoteImpl quote = new QuoteImpl();
      +    return quote;
      +  }
      +
      +

      +In addition to these generated type-specific create<Type>() methods, the generated factory implementation class also includes a generated reflective create() method that, given an SDO Type, efficiently dispatches to the correct type-specific create() method. The reflective create() method is called by the implementation of the SDO commonj.sdo.helper.DataFactory interface.

      + + +

      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.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/sdo-releases.html b/site/trunk/site-publish/sdo-releases.html new file mode 100644 index 0000000000..feeaec8c7e --- /dev/null +++ b/site/trunk/site-publish/sdo-releases.html @@ -0,0 +1,78 @@ + + + + + + + SDO Releases : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Releases + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/sdo.html b/site/trunk/site-publish/sdo.html new file mode 100644 index 0000000000..ef60260c62 --- /dev/null +++ b/site/trunk/site-publish/sdo.html @@ -0,0 +1,83 @@ + + + + + + + SDO : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Menus > SDO + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/security-aware-programming-in-tuscany.data/VideoIcon.jpg b/site/trunk/site-publish/security-aware-programming-in-tuscany.data/VideoIcon.jpg new file mode 100644 index 0000000000..a599e54f0a Binary files /dev/null and b/site/trunk/site-publish/security-aware-programming-in-tuscany.data/VideoIcon.jpg differ diff --git a/site/trunk/site-publish/security-aware-programming-in-tuscany.data/VideoIcon.jpg.jpeg b/site/trunk/site-publish/security-aware-programming-in-tuscany.data/VideoIcon.jpg.jpeg new file mode 100644 index 0000000000..bdfc0ccabc Binary files /dev/null and b/site/trunk/site-publish/security-aware-programming-in-tuscany.data/VideoIcon.jpg.jpeg differ diff --git a/site/trunk/site-publish/security-aware-programming-in-tuscany.data/apache-feather.gif b/site/trunk/site-publish/security-aware-programming-in-tuscany.data/apache-feather.gif new file mode 100644 index 0000000000..5bfc2fc5ee Binary files /dev/null and b/site/trunk/site-publish/security-aware-programming-in-tuscany.data/apache-feather.gif differ diff --git a/site/trunk/site-publish/security-aware-programming-in-tuscany.data/apache-feather.gif.jpeg b/site/trunk/site-publish/security-aware-programming-in-tuscany.data/apache-feather.gif.jpeg new file mode 100644 index 0000000000..fe4e2455c9 Binary files /dev/null and b/site/trunk/site-publish/security-aware-programming-in-tuscany.data/apache-feather.gif.jpeg differ diff --git a/site/trunk/site-publish/security-aware-programming-in-tuscany.html b/site/trunk/site-publish/security-aware-programming-in-tuscany.html new file mode 100644 index 0000000000..14d9dfd2cd --- /dev/null +++ b/site/trunk/site-publish/security-aware-programming-in-tuscany.html @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + Apache Tuscany : Security Aware Programming in Tuscany + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Security Aware Programming in Tuscany + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      Security Aware Programming in Tuscany.

      +


      +Java Security is available in Video, use tuscany passcode

      + +

      Introduction to Java Security

      + +

      As you develop software for the Apache Tuscany project, it is important to be aware and maintain the security features of the Java platform. Java's success is promoted by its security architecture and relative absence from security problems. Similarly, Tuscany will benefit as a platform if the developers take care to keep it secure and free from ill-intentioned users.

      + +

      This article focuses on the security manager and access control mechanisms in the Java platform and the Tuscany code base. The focus here is not on SCA applications and samples, but rather contributions that affect the Tuscany runtime including any contributions or additions such as new bindings, implementations, or data bindings. Taking advantage of the security manager and limiting access to secure areas of the code base are the primary defense against unsafe operation of Tuscany's SCA platform. And since Tuscany code is available for anyone to read, it is important to prevent any unprivileged access to the system on which Tuscany is running. This requires that developers understand application runtime and server policies and how to guard the system resources. Here is a good overview of Java Security.

      + +

      By default, Java application code and the Tuscany code base run in an unsecure environment with no security manager. This gives the Java application access to all system resources. The application may read and write all system properties, open and read any system files, and do all sorts of unprotected actions. All Tuscany code will run unhindered in this environment. And all malicious Tuscany users will also run unhindered in this environment.

      + +

      You may turn security on by running your Tuscany application with the -Djava.security.manager option on the command line. The default security manager delegates access control decisions to java.security.AccessController. The AccessController determines access authority for your Java code by consulting the permissions in a java.security.Policy class usually specified in the default security.policy file.

      + +

      There is only one Policy object installed into a Java runtime at any given time. The default behavior for Java is to load the authorization data from one or more security policy files, but Tuscany users may add to or replace the policy by running with additional policy information on the command line. For instance "-Djava.security.manager -Djava.security.policy=tuscany.policy -Dpolicy.allowSystemProperty=true" will add the permissions in the tuscany.policy file to the default Java permissions. If you specify "-Djava.security.policy==tuscany.policy" you replace the default policy with those specified in the Tuscany policy file. When Tuscany is run by an application server (whether it be WebSphere, Geronimo, or other), the policy of the server will form the starting point for Tuscany's security policy.

      + +

      Each policy file will contain a list of grant statements. A grant tells the runtime where the code came from (a URL specifying the code base), who signed the code (a list of signer certificates), and what permissions are given. The permissions can be read write permissions to the file system, access to system properties, or class loading privileges.
      +An example of a granting all permission to an unsigned Tuscany code base is given here:

      +
      security.policy example
      +
      +grant codeBase "file:$/{{user.home}}/tuscany/java/sca/-" {
      +  permission java.security.AllPermission;
      +};
      +
      +
      + +

      This example grant statement is quite a broad bludgeon. Namely it says that all Tuscany code has been granted all permissions. This is not much different that running without a security manager. In practice, a user policy will want much finer-grained permissions towards the Tuscany code and allow only specific pieces of the code to have privileged access. The remainder of this article shows how to locate those permissions and how to enable secure checks for them.

      + +

      In summary, with security on, Tuscany class XYZ can access a secured resource only if the security manager's AccessController has determined the proper permissions are available in the security policy. Tuscany code that calls a protected Java API will only work with an AccessController doPrivileged block and the proper permissions in place. Otherwise, the Tuscany code will not run properly with security on, and it will throw SecurityExceptions left and right. Many times these SecurityExceptions will be passed back to the Tuscany runtime and then be wrappered in a ServiceRuntimeException and presented to the user. Not good.

      + +

      Common Java APIs That Require Security Enablement

      + +

      What are some of the Java APIs that might cause your Tuscany code to produce a SecurityException? In the Java API Reference, any Java API that throws a SecurityException is a candidate.
      +For instance, notice that java.lang.System.getProperty(String) may throw a security exception. With security on, you are allowed to read some System properties (such as java.version or os.name) but by default you will get a SecurityException on other properties (such as user.home or java.home). In general, this makes sense because we do not want any intruders to have a map of the file system. A concise list of APIs with security checks is located at Methods and the Permissions They Require.

      + +

      Whenever you use one of these security enabled Java APIs (any API with a "throws SecurityException" suffix), you must do two things to ensure your code will run with security on:

      +
        +
      1. Add the required permission to your Tuscany or application sever security policy.
      2. +
      3. Add an AccessController.doPrivileged call block around your code.
        +This section discusses identifying any necessary security permissions, and the next session shows how to write AccessController call blocks.
      4. +
      + + +

      To be a little more concrete to Tuscany developers, let's go through some common API groups that they are likely to use.

      +
        +
      1. System.getProperty(String). This is quite a common item to check to make operating system or Java version specific code. If you use this API you need to add java.util.PropertyPermission to the security policy. For example, this permission allows the Tuscany code base to read two system properties: +
        security.policy property read example
        +
        +grant codeBase "file:$/{{user.home}}/tuscany/java/sca/-" {
        +  permission java.util.PropertyPermission "user.home", "read";
        +  permission java.util.PropertyPermission "java.home", "read";
        +};
        +
        +
      2. +
      3. File IO. If you create a file stream, or attempt to check if a File exists or is a directory, or can read or write, you will have to add java.io.FilePermissions.
      4. +
      5. ClassLoader. Anytime you access the ClassLoader via getClassLoader() (which is common if you want to load a resource), you will have to add a java.lang.RuntimePermission.
      6. +
      7. Introspection. Whenever you do any sort of dynamic class loading and execution, say you want to check for methods in a business interface, or you want to instantiate a data object, you are going to add a java.lang.RuntimePermission.
      8. +
      9. URLS and sockets. Any sort of network access via URL streams or sockets will have to be checked by the security manager. You will have to add java.lang.RuntimePermission or java.net.SocketPermission.
      10. +
      11. Threads. Any starting or stopping or checking for threads is going to be guarded and you will have to have the proper java.lang.RuntimePermission.
      12. +
      13. The Security stack. Need it be said, but if you attempt to access the SecurityManager, AccessController, Policies, or other parts of the security architecture you are going to need java.security.SecurityPermission. In other words, hands off the security system.
      14. +
      + + +

      This list is just a general overview. Once again, any API that throws a SecurityException is something that your Tuscany code should be privileged and permitted to use.

      + +

      How to Write Access Control Blocks.

      + +

      The final step of making your code security enabled is to add AccessController privileged blocks around your enabled code. You must be careful here. You cannot put a privileged block with a wide scope. That is similar to running with security turned off. You also must be careful not to grant privilege code that a malicious user could use. Be very careful of granting privilege to any public API that a user can use with malicious parameters. Here is a more in-depth article.

      + +

      The type of coding pattern you use is based primarily on three considerations:

      +
        +
      • the return type of the checked call
      • +
      • the input parameters to the checked call
      • +
      • the exceptions thrown by the checked call.
      • +
      + + +

      In the simplest case, let's say you use a checked Java API that throws no exceptions other than SecurityException. (Recall that SecurityException is thrown by all of these APIs.) For instance, your brand new Tuscany "Blatz" extension needs to load the "blatz" library before it runs.
      +This is how you security enable the loading of the library.

      +
      AccessController doPrivileged block - No parameters
      +
      +   // ... unchecked code here...
      +   AccessController.doPrivileged(new PrivilegedAction<Object>() {
      +       public Object run() {
      +           System.loadLibrary("blatz");
      +           return null;
      +         }
      +   });      
      +   // ... more unchecked code here                         
      +
      +
      +

      Notice that the code is using the Java type safe syntax to ensure the proper casting of the method run return type. The class in the <class specification> should always match the return type class type.

      + +

      In the next example, let us examine how a Java API with a boolean return type is handled. Notice that we are using the autoboxing feature of Java to convert from boolean to Boolean.

      +
      AccessController doPrivileged block - With Return Type
      +
      +   boolean isDirectory = AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
      +   	public Boolean run() {
      +   		return rootFolder.isDirectory();
      +   	}
      +   });           
      +
      +
      +

      Using this succinct anonymous class, you must make sure any input parameters are final instances. This is a requirement of the Java syntax. If you have a parameter that has undergone multiple assignments, you can easily create a final version of that input parameter and pass it into the block.

      +
      AccessController doPrivileged block - Input Parameters
      +
      +   URL constructedURL = protocol;
      +   constructedURL += pathName;
      +   constructedURL += parameters;
      +
      +   final URL xsdURL = constructedURL;        
      +   URL definitionsFileUrl = AccessController.doPrivileged(new PrivilegedAction<URL>() {
      +       public URL run() {
      +           return getClass().getClassLoader().getResource(definitionsFile);
      +        }
      +   });           
      +
      +
      +

      Finally, if your checked Java API throws an exception, such as the IOException shown here, you need to catch it and cast it to match any checked exceptions on your method, or you need to add the PrivilegedActionException to the throws signature of your method.

      +
      AccessController doPrivileged block - With Exceptions
      +
      +   InputStream is;
      +   try {       	
      +   is = AccessController.doPrivileged(new PrivilegedExceptionAction<InputStream>() {
      +       public InputStream run() throws IOException {
      +          return url.openStream();
      +      }
      +   });
      +   } catch ( PrivilegedActionException e ) {
      +      throw (IOException) e.getException();
      +   }
      +
      +
      + +

      This article shows just a few techniques that cover many of the security issues that arise in the Tuscany code base. If you are aware of the Java security architecture and how to control access to guarded resources, you can guard against malicious users who might use the Tuscany code base for no good.

      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/set-up-sdo-development-environment.html b/site/trunk/site-publish/set-up-sdo-development-environment.html new file mode 100644 index 0000000000..10a407b3c5 --- /dev/null +++ b/site/trunk/site-publish/set-up-sdo-development-environment.html @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + Apache Tuscany : Set up SDO Development Environment + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > Delete This Page - Using SDO Java > Set up SDO Development Environment + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      Establishing a Development Environment

      + +

      There are two well established development environments that the SDO community use, Maven and Eclipse. To use the Eclipse IDE you must first establish a maven environment.

      + +

      Getting Setup for Development (prerequisites)

      +

      Download the following:

      + + + + + +

      Setting up for Maven Development

      + +
        +
      • Get your source tree set up locally
      • +
      • Ensure that maven (mvn) is on your execution path
      • +
      • Ensure that you have network connectivity (Maven has the capacity to retrieve dependencies from the internet while executing a build instruction)
      • +
      • In a shell or command prompt ensure that you are in the <sdo-source-root> directory
      • +
      • Issue the command "mvn", this will build the SDO API interface, implementation, tools, samples, plugin source code , run any tests, package the class files in appropriate jars and install the jars in a repository on your computer.
      • +
      • You can now use the tools of your choice to explore, use and modify the SDO source code. If you have extracted your source tree using SVN you will be able to submit patches arising from your modifications to the SDO project by attaching patch files to JIRAs.
      • +
      + + +

      Setting up for Eclipse Development

      +

      Follow the instructions above for setting up a maven development environment
      +Having ensured you have network access to the internet, in <sdo-source-root> directory

      + +

      execute the command mvn -Peclipse eclipse:eclipse

      + +

      Then

      +
        +
      • Start up eclipse
      • +
      • Switch to the Java perspective
      • +
      • Right click in the Package Explorer frame on the root of the newly created project and select Properties => Java Build Path
      • +
      • Click on the "Libraries" tab and select "Add Variable...", "Configure Variables ...", "New ..."
      • +
      • Set Name to M2_REPO and Click on "Folder..."
      • +
      • Navigate to the "repository" folder/directory (on Windows this is \Documents and Settings\<user>\.m2\repository, on Linux it is ~/.m2/repository) and click OK
      • +
      • Now execute "File => Import ... => General => Existing project into workspace
      • +
      • Click "Browse ..." Navigate to the <sdo-source-root> directory and click OK
      • +
      • Select all projects and click OK
      • +
      • When building is complete the projects should now have no errors
      • +
      + + +

      At this point you have seven separate projects each dependent on binary artifacts in your maven repository. Don't be tricked into thinking that
      +if you modify the sdo-impl project, that those changes will be picked up by the sdo-tools project. If you want this behavior then follow these steps

      + +
        +
      • In the package explorer pane of the Java perspective, Right Click on Properties and select the libraries tab
      • +
      • Select the M2_REPO/org/apache/tuscany/sdo/sdo-api* library entry and click "remove"
      • +
      • Select the Projects tab and click "Add..."
      • +
      • Select the SDO API project and click OK
      • +
      • If you plan to work in the tools project +
          +
        • Select the "Order and Export" tab and select the sdo-api project and click OK (this means that the sdo-impl project will expose the interfaces of the sdo-api project, so that you don't have to import them into projects which depend on the sdo-impl project)
        • +
        • Repeat the above instructions, removing the sdo-api and sdo-impl library dependencies from the tools project, and adding a project dependency for the sdo-tools project on the sdo-impl project
        • +
        +
      • +
      + + +

      Digging into EMF

      +

      With EMF being such an integral part of SDO development, its often necessary to debug into the EMF code to understand what's going on. To do this you need to download an EMF SDK (runtime, source, docs) for EMF, SDO and XSD (Don't be confused by the presence of SDO; the version 1 API used to be developed at Eclipse, and it is this that is being downloaded, you can safely ignore it). You'll need the corresponding EMF version to the Tuscany SDO source code (Currently EMF 2.2.3 as at January 2008). Take a look for the <emfVersion> tag in the sdo/pom.xml file to discover the current version dependency. Extract the downloaded archive to somewhere on your computer.

      + +
        +
      • When eclipse opens up a .class file and presents you with an "Attach Source..." button, click it and the click "Variable ...", "New..."
      • +
      • Create a variable, e.g. EMF_SRC and set the value to a folder within your extracted EMF archive, e.g. C:/Development/downloads/emf-sdo-xsd-SDK-2.2.3/eclipse/plugins
      • +
      • Click OK to close the "Variable Selection" dialog
      • +
      • In the "Source Attachment Configuration" Dialog, click "Extension ..."
      • +
      • Navigate to the src.zip file corresponding to the class you are interested in. This will take a little bit of thought. Look at the package name for the class you are interested in and navigate to a zip file that would seem to correspond to that class, e.g. org.eclipse.emf.source_2.2.3.v200702131851/src/org.eclipse.emf.ecore_2.2.3.v200702131851/src.zip
      • +
      • You should now be able to set breakpoints and observe execution behavior of the EMF code in the eclipse debugger
      • +
      + + + + + + + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/setting-up-an-sca-developer-environment.html b/site/trunk/site-publish/setting-up-an-sca-developer-environment.html new file mode 100644 index 0000000000..8f5722629a --- /dev/null +++ b/site/trunk/site-publish/setting-up-an-sca-developer-environment.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Setting up an "SCA Developer" environment + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Setting up an "SCA Developer" environment + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/setting-up-ssh.html b/site/trunk/site-publish/setting-up-ssh.html new file mode 100644 index 0000000000..56cfc62297 --- /dev/null +++ b/site/trunk/site-publish/setting-up-ssh.html @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + Apache Tuscany : Setting up ssh + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > General Info > Making releases > Setting up ssh + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + + + + + +
      + +

      Setup mvn to work with your apache account

      + +

      Generate a authorised dsa key:

      + +

      logon to minotaur.apache.org using your apache id and run:

      + +

      ssh-keygen -t dsa

      + +

      give it some file name eg mysshkey and a pass phrase. This should create two files, a private key and a public key (mysshkey, mysshkey.pub). Copy mysshkey.pub to ~/.ssh/authorised_keys. (you may need to create the .ssh directory), and ftp the private key to you local machine. (i use WINSCP).

      + +

      (Note that if you are already using ssh to authenticate with apache servers, and have followed the instructions to create a key using putty on windows, then your key is OK but your file format may not be OK for maven.  Maven does not recognise the putty ppk file format private keys. Use puttygen to load your ppk file and convert it to an open ssh file.)

      + +

      In your maven settings.xml file (located in the .m2 folder in your home dir, eg C:\Documents and Settings\ant\.m2) add servers for the servers you use and specify you apachi id, the location of the sshkay you just ftp'd and the pass phrase you used when creating that key, eg:

      + +

      <servers>
      +<server>
      +<id>apache.incubator</id>
      +<username>antelder</username>
      +<privateKey>\ant\mysshkey</privateKey>
      +<passphrase>xxx</passphrase>
      +<directoryPermissions>775</directoryPermissions>
      +<filePermissions>664</filePermissions>
      +</server>
      +<server>
      +<id>me.people</id>
      +<username>antelder</username>
      +<privateKey>\ant\mysshkey</privateKey>
      +<passphrase>xxx</passphrase>
      +<directoryPermissions>775</directoryPermissions>
      +<filePermissions>664</filePermissions>
      +</server>
      +<server>
      +<id>apache.snapshots</id>
      +<username>antelder</username>
      +<privateKey>\ant\mysshkey</privateKey>
      +<passphrase>xxx</passphrase>
      +<directoryPermissions>775</directoryPermissions>
      +<filePermissions>664</filePermissions>
      +</server>
      +<server>
      +<id>apache.rsync</id>
      +<username>antelder</username>
      +<privateKey>\ant\mysshkey</privateKey>
      +<passphrase>xxx</passphrase>
      +<directoryPermissions>775</directoryPermissions>
      +<filePermissions>664</filePermissions>
      +</server>
      +</servers>

      + +

      Keep the ssh key and pass phrase safe and secure. Its a good idea to only add the key and passphrase to the settings.xml file while you're actually using it and delete form the file at other times. Also you MUST delete the private ssh key from your Apache directory once you've ftp'd it to your local machine.

      + + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/simplemenu.html b/site/trunk/site-publish/simplemenu.html new file mode 100644 index 0000000000..7e5629db4f --- /dev/null +++ b/site/trunk/site-publish/simplemenu.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + Apache Tuscany : SimpleMenu + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > SimpleMenu + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + + + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/spring.html b/site/trunk/site-publish/spring.html new file mode 100644 index 0000000000..ad20770391 --- /dev/null +++ b/site/trunk/site-publish/spring.html @@ -0,0 +1,86 @@ + + + + + + + Spring : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Spring + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +

      Spring Extension

      + +

      The Spring extension allows users to create services using the Spring programming model according to the SCA 1.0 Spring Specification found here.

      + +

      Status

      + +

      The extension is under development against the current version of kernel in trunk.

      + +

      Installing

      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/standalone-sca-domain.data/calculator-standalone.png b/site/trunk/site-publish/standalone-sca-domain.data/calculator-standalone.png new file mode 100644 index 0000000000..9e8cb2c248 Binary files /dev/null and b/site/trunk/site-publish/standalone-sca-domain.data/calculator-standalone.png differ diff --git a/site/trunk/site-publish/standalone-sca-domain.data/calculator-standalone.png.jpeg b/site/trunk/site-publish/standalone-sca-domain.data/calculator-standalone.png.jpeg new file mode 100644 index 0000000000..08e2b9531c Binary files /dev/null and b/site/trunk/site-publish/standalone-sca-domain.data/calculator-standalone.png.jpeg differ diff --git a/site/trunk/site-publish/standalone-sca-domain.data/single-node-abstract.png b/site/trunk/site-publish/standalone-sca-domain.data/single-node-abstract.png new file mode 100644 index 0000000000..ca259702b4 Binary files /dev/null and b/site/trunk/site-publish/standalone-sca-domain.data/single-node-abstract.png differ diff --git a/site/trunk/site-publish/standalone-sca-domain.data/single-node-abstract.png.jpeg b/site/trunk/site-publish/standalone-sca-domain.data/single-node-abstract.png.jpeg new file mode 100644 index 0000000000..e1f89dd97e Binary files /dev/null and b/site/trunk/site-publish/standalone-sca-domain.data/single-node-abstract.png.jpeg differ diff --git a/site/trunk/site-publish/standalone-sca-domain.html b/site/trunk/site-publish/standalone-sca-domain.html new file mode 100644 index 0000000000..501ae5c096 --- /dev/null +++ b/site/trunk/site-publish/standalone-sca-domain.html @@ -0,0 +1,303 @@ + + + + + + + + + + + + + + + Apache Tuscany : Standalone SCA Domain + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > Standalone SCA Domain + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + + + + + + + + +
      Resources
      +
      + +
      This page is under construction- You are welcome to help and complete it
      +
      + +

      Standalone SCA Domain

      +

      + +

      Creating A Standalone Domain

      +

      Using a domain in a single JVM is very easy. You simply create an instance of

      + +
      +
      +org.apache.tuscany.sca.host.embedded.SCADomain.
      +
      +
      + +

      Using one of the provided newInstance() methods. Note the package name. You will see a different package name when we look at the multiple JVM case. For now this indicates that the SCA Domain is going to be completely embedded in the Java application that you write.

      + +

      This is what the different newInstance() operations mean.

      + +
      +
      +public static SCADomain newInstance() 
      +
      +
      + +

      Starts a standalone domain with a default domain URI and will treat the classpath as the contribution to this domain. All .composite files on the classpath will be read and any deployable components will be made available in the domain.

      + +

      Deployable components are defined by either

      + +

      1 placing the .composite file in the META-INF/sca-deployables/directory
      +2 By specifying the composite as deployable in the META-INF/sca-contribution.xml file

      + +
      +
      +public static SCADomain newInstance(String composite)
      +
      +
      + +

      Starts a standalone domain with a default domain URI and will try and find the named composite file in the classpath and use it's location as the contribution location. It will deploy the named composite.

      + +
      +
      +public static SCADomain newInstance(String domainURI, String contributionLocation, String... composites) 
      +
      +
      + +

      Will start a standalone domain with the specified domain URI and will load the contribution at the contributionLocation. Any named composites will be deployed. As there are both contributionLocation and composite name parameters there are some rules about what happens when you specifier one the other, both or neither as follows.

      + + +

      contributionLocation - an absolute path to a contribution in URL form, e.g

      + +

      file://C:/mydirA
      + jar:file://C:/myjar.jar

      + +

      composite(s) - the name of a composite file(s) e.g.

      + +

      mycomposite.composite
      + somedir/mycomposite.composite

      + +

      So the various combinations give rise to

      + +

      contributionLocation set / composite null
      + loads all contributions under the contribution location identified

      + +

      contributionLocation null / composite set
      + finds the location of your compsite on the classpath and uses that as the contribution location. It loads the named composite from there

      + +

      contributionLocation set / composite set
      + loads the named composite from the specified contribution path

      + +

      contributionLocation null / composite null
      + This option is also used if the above rules don't identify a contribution URL for whatever reason.

      + +

      No contribution has been specified so look for the following in order and use the location of the first one found as the contribution location

      + +

      META-INF/sca-contribution.xml
      + META-INF/sca-contribution-generated.xml
      + META-INF/sca-deployables directory

      + +

      For example, in our calculator sample we could do

      + +
      +
      +scaDomain = SCADomain.newInstance("Calculator.composite");
      +
      +
      + +

      Once created the SCA Domain will have loaded a contribution based on the rules set out above.

      + +

      + +

      Locating Services In The Domain

      + +

      You can now use services in the domain either directly from your Java application or remotely over the service instance that the SCA application exposes.

      + +

      To use services directly you can use the following SCA Domain interfaces to create a service proxy

      + +
      +
      +public abstract <B> B getService(Class<B> businessInterface, String serviceName);
      +
      +
      + +

      Returns a type safe reference to the named service

      + +
      +
      +public abstract <B> ServiceReference<B> getServiceReference(Class<B> businessInterface, String referenceName);
      +
      +
      + +

      returns an SCA service reference to the named service. You can use the SCA service reference to manipulate various aspects of the referece.

      + +
      +
      +public abstract <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException;
      +
      +
      + +

      Casts a service (callable) reference to a typesafe reference .

      + +

      For example, in our calculator sample we could do

      + +
      +
      +calculatorService = scaDomain.getService(CalculatorService.class, "CalculatorServiceComponent");
      +
      +
      + +

      Once you have a service proxy you can call methods on it like any other Java object.

      + +
      +
      +Double result = calculatorService.add(3, 2)
      +
      +
      + +

      Closing The Domain

      + +

      When you a finished with the domain you need to close it down.

      + +
      +
      +scaDomain.close();
      +
      +
      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/starting-with-das.html b/site/trunk/site-publish/starting-with-das.html new file mode 100644 index 0000000000..2a19d69aea --- /dev/null +++ b/site/trunk/site-publish/starting-with-das.html @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + Apache Tuscany : Starting with DAS + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > Starting with DAS + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + +

      Starting with DAS

      + +

      This page provides links to DAS samples and explains a simple "how to" and gives step-by-step instructions to check one of the DAS features - ColumnConverter. Other DAS features can be tried on similar lines.

      + +

      Many sample examples demonstrating different DAS features are available on +https://svn.apache.org/repos/asf/incubator/tuscany/java/das/samples e.g.

      + +
        +
      1. companyweb-webapp - tomcat based web sample
      2. +
      3. customer - J2SE based standalone application
      4. +
      + + +

      Check readme files e.g. For companyweb +https://svn.apache.org/repos/asf/incubator/tuscany/java/das/samples/company-webapp/readme.htm
      +for basic steps on how to get the sample running.

      + +

      Once the sample is running, parts of sample can be modified based on the requirement or new code can be added from-scratch. Many features supported by DAS are listed in User Guide - +http://incubator.apache.org/tuscany/rdb-das-user-guide.html

      + +

      This document details the changes needed to different part of the web sample (companyweb) to experiment with more features of DAS than just basic CRUD.Let us take example of checking how to use ColumnConverters. For details on feature testing, check Tests under https://svn.apache.org/repos/asf/incubator/tuscany/java/das/rdb/src/test/

      + +

      1> As a first step you need to implement Converter interface in a class to achieve the required
      +column conversion. Check org.apache.tuscany.das.rdb.test.mappings.StringObfuscationConverter from the svn repository for example of converter. Make your converter class available in (Tomcat root)webapps/companyweb-webapp/WEB-INF/classes.

      + +

      2> DAS functions based on external Configuration, e.g. CompanyConfig.xml file in companyweb sample. The purpose of this Config file to supply information for DataSource connection, Commands (SQL) (that DAS can execute against Database) and Database schema like - Table/Columns, Relationship and so forth. Please check Architecture Guide for complete details about Config.xsd ()
      +at http://incubator.apache.org/tuscany/rdb-das-architecture-guide.html. Modify Config to get converter working. The <ConnectionInfo> element should match the resource name from server.xml for DataSource.Add a <Table> which has a column with converter class name of the class you just created. Add a <Command> with kind="Select" for this table/column e.g.

      +
      +
      <Command name="getFirstCustomer" SQL="Select * from CUSTOMER where ID = 1" kind="Select"/>
      +
      +<Table tableName="CUSTOMER">
      +<Column columnName="ID" primaryKey="true"/>
      +<Column columnName="LASTNAME" converterClassName="org.apache.tuscany.das.rdb.test.mappings.StringObfuscationConverter"/>
      +</Table>
      +
      +
      +

      3> Now the code and config setup is complete. What remains is calling the new command from .jsp and
      +servlet. Follow the technique similar to CompanyClient.java and Company.jsp to call the new command. The returned results will verify that the converter is called and the column value from database is converted based on converter logic.
      +4> For more details check the test cases from ConverterTests in https://svn.apache.org/repos/asf/incubator/tuscany/java/das/rdb/src/test/.

      + +

      Assumption: Tomcat version 5.5.* or 6.0.10 , Derby version 10.1.2.1.

      + +

      Troubleshooting Checkpoints: Check the following and if still having issues , report at +http://incubator.apache.org/tuscany/issue-tracking.html

      +
        +
      1. All libraries are present in (Tomcat root)/webapps/companyweb/WEB-INF/lib (these libs can
        +be taken from companyweb sample or can be downloaded from web)
        +i) common-(latest version).jar
        +ii) ecore-(latest version).jar
        +iii) ecore-change-(latest version).jar
        +iv) ecore-xmi-(latest version).jar
        +v) log4j-(latest version).jar
        +vi) sdo-api-xxx.jar
        +vii) tuscany-das-rdb-xxx.jar
        +viii) tuscany-sdo-xxx.jar
        +ix) xsd-(latest version).jar
        +x) derby driver jar - or whichever database you are planning to use
      2. +
      3. The Database exists with required tables and data.
      4. +
      5. WEB-INF/web.xml has entry under welcome-file-list for required .jsp like - +
        +
        <web-app>
        +    <display-name>Tuscany DAS sample Company  WEB</display-name>
        +
        +    <welcome-file-list id="WelcomeFileList">
        +        <welcome-file>Company.jsp</welcome-file>
        +    </welcome-file-list>
        +</web-app>
        +
        +
      6. +
      7. META-INF/context.xml has entry for the datasource the sample is using like - +
        +
        <?xml version="1.0" encoding="UTF-8"?>
        +<Context path="/DAS Stand alone app" debug="5" reloadable="true" crossContext="true">
        +   <Manager pathname=""/>
        +   <ResourceLink name="jdbc/dastest" global="jdbc/dastest" type="javax.sql.DataSource" />                     
        +</Context>
        +
        +
      8. +
      9. (Tomcat root)/conf server.xml has entry similar to below for the datasource - +
        +
        <Resource name="jdbc/dastest"
        +      type="javax.sql.DataSource"  auth="Container"
        +      description="Derby database for DAS Company sample"
        +      maxActive="100" maxIdle="30" maxWait="10000"
        +      username="" password=""
        +      driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
        +      url="jdbc:derby:c:\apache-tomcat-5.5.20\Databases/dastest;create=true"/>
        +
        +
      10. +
      + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/subproject-menus.html b/site/trunk/site-publish/subproject-menus.html new file mode 100644 index 0000000000..02c451db81 --- /dev/null +++ b/site/trunk/site-publish/subproject-menus.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Subproject Menus + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > Subproject Menus + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/subprojects.html b/site/trunk/site-publish/subprojects.html new file mode 100644 index 0000000000..bd584aa879 --- /dev/null +++ b/site/trunk/site-publish/subprojects.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + Apache Tuscany : subprojects + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > General > subprojects + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +
      Subprojects
      +

      SDO
      +DAS

      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/survey.html b/site/trunk/site-publish/survey.html new file mode 100644 index 0000000000..ccf7067dc7 --- /dev/null +++ b/site/trunk/site-publish/survey.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + Apache Tuscany : Survey + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > General Info > Survey + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + + + + + +
      +

      Apache Tuscany User Feedback Survey

      + +

      During November 5th - 19th 2008 Tuscany conducted a user survey to better learn how Tuscany is helping you with SOA solutions or how it can further be enhanced.

      + +

      The survey has now closed, the results will be presented shortly.

      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/surveythanks.html b/site/trunk/site-publish/surveythanks.html new file mode 100644 index 0000000000..70f1a178d9 --- /dev/null +++ b/site/trunk/site-publish/surveythanks.html @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + Apache Tuscany : SurveyThanks + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > General Info > SurveyThanks + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + + + + + +
      +

      Thanks for taking the survey

      + +

      Your input is appreciated and will help us make Apache Tuscany better!

      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/technology-release.html b/site/trunk/site-publish/technology-release.html new file mode 100644 index 0000000000..85d7b4ae07 --- /dev/null +++ b/site/trunk/site-publish/technology-release.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + Apache Tuscany : Technology & Release + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > General Info > Index > Technology & Release + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      +

      Tuscany is based on specifications defined by the OASIS Open CSAMember Section and the Open SOACollaboration:

      + +
        +
      • Service Component Architecture (SCA) - An essential characteristic of SOA is the ability to assemble new and existing services to create brand new applications that may consist of different technologies. Service Component Architecture defines a simple, service-based model for construction, assembly and deployment of a network of services (existing and new ones) that are defined in a language-neutral way. Tuscany implements the SCA Version 1.0specifications. Learn more about SCA
      • +
      + +
      +
      + + + +
      +
        +
      • Service Data Objects (SDO) provides a uniform interface for handling different forms of data, including XML documents, that can exist in a network of services and provides the mechanism for tracking changes. Tuscany implements the SDO Version 2.1specifications. Learn more about SDO
      • +
      + + +
        +
      • Data Access Service (DAS) provides a simple SDO interface to relational databases. Learn more about DAS
      • +
      +
      + + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/temp-technology-release.html b/site/trunk/site-publish/temp-technology-release.html new file mode 100644 index 0000000000..b31155ae75 --- /dev/null +++ b/site/trunk/site-publish/temp-technology-release.html @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + Apache Tuscany : Temp Technology & Release + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Trash > To Be Deleted > Temp Technology & Release + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      +

      Tuscany is based on specifications defined by the Open SOA Collaboration:

      +
        +
      • Service Component Architecture (SCA) defines technologies for creating services and assembling them into higher-order service networks. SCA provides a language-independent way to compose and deploy service networks. SCA also defines language-specific programming models for service authoring including Java, Spring, C++ , and PHP. There are currently Tuscany SCA runtimes written in Java and C++. Learn more about SCA.
      • +
      +
      +
      +
        +
      • Service Data Object (SDO) provides a uniform interface for handling different forms of data, including XML documents, that can exist in a network of services and provides the mechanism for tracking changes. Apache Tuscany provides Java and C++ implementations for SDO. Learn more about SDO.
      • +
      + + +
        +
      • Data Access Service (DAS) provides a simple SDO interface to relational databases. Apache Tuscany provides a Java implementation for DAS. Learn more about DAS.
      • +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/test-home-2.html b/site/trunk/site-publish/test-home-2.html new file mode 100644 index 0000000000..9825894b70 --- /dev/null +++ b/site/trunk/site-publish/test-home-2.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + Apache Tuscany : Test Home 2 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Trash > To Be Deleted > Test Home 2 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + + + + + +

      Overview

      + +

      Welcome to the Apache Tuscany project! The Tuscany community is working to create a robust and easy to use infrastructure that simplifies the development of service-based application networks and addresses real business problems posed in SOA.

      + + + +
      +

      Tuscany is based on specifications defined by the Open SOA Collaboration:

      +
        +
      • Service Component Architecture (SCA) defines technologies for creating services and assembling them into higher-order service networks. SCA provides a language-independent way to compose and deploy service networks. SCA also defines language-specific programming models for service authoring including Java, Spring, C++ , and PHP. There are currently Tuscany SCA runtimes written in Java and C+. Learn more about SCA.
      • +
      • Service Data Object (SDO) provides a uniform interface for handling different forms of data, including XML documents, that can exist in a network of services and provides the mechanism for tracking changes. Apache Tuscany provides Java and C+ implementations for SDO. Learn more about SDO.
      • +
      • Data Access Service (DAS) provides a simple SDO interface to relational databases. Apache Tuscany provides a Java implementation for DAS. Learn more about DAS.
      • +
      +
      +


      +
      Tuscany Releases
      + +

      The above mentioned technologies provide a full infrastructure for developing and running SOA based applications. They are not dependent on one another and can be used independently.
      +Please join us to create a simple, practical, extensible SOA infrastructure to address the problems that large-scale applications and service networks are faced with. We look forward to your participation.

      + +

      News

      + + +
      +

      Copyright © 2006, The Apache Software Foundation Apache Tuscany is undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Web Services PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/test-home.html b/site/trunk/site-publish/test-home.html new file mode 100644 index 0000000000..0dbfbe58f1 --- /dev/null +++ b/site/trunk/site-publish/test-home.html @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + Apache Tuscany : Test Home + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Trash > To Be Deleted > Test Home + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + + + + + +

      Overview

      + +

      Welcome to the Apache Tuscany project! The Tuscany community is working to create a robust and easy to use infrastructure that simplifies the development of service-based application networks and addresses real business problems posed in SOA.

      + + + +
      +

      Tuscany is based on specifications defined by the OASIS Open CSAMember Section and the Open SOACollaboration:

      + +
        +
      • Service Component Architecture (SCA) - An essential characteristic of SOA is the ability to assemble new and existing services to create brand new applications that may consist of different technologies. Service Component Architecture defines a simple, service-based model for construction, assembly and deployment of a network of services (existing and new ones) that are defined in a language-neutral way. Tuscany implements the SCA Version 1.0specifications. Learn more about SCA
      • +
      + +
      +
      + + + +
      +
        +
      • Service Data Objects (SDO) provides a uniform interface for handling different forms of data, including XML documents, that can exist in a network of services and provides the mechanism for tracking changes. Tuscany implements the SDO Version 2.1specifications. Learn more about SDO
      • +
      + + +
        +
      • Data Access Service (DAS) provides a simple SDO interface to relational databases. Learn more about DAS
      • +
      +
      + + +
      + +

      The above mentioned technologies provide a full infrastructure for developing and running SOA based applications. They are not dependent on one another and can be used independently.

      + +

      Please join us to create a simple, practical, extensible SOA infrastructure to address the problems that large-scale applications and service networks are faced with. We look forward to your participation.

      + +

      News

      + + +
      +

      Copyright © 2006, The Apache Software Foundation Apache Tuscany is undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Web Services PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/testhome2table.html b/site/trunk/site-publish/testhome2table.html new file mode 100644 index 0000000000..b58ed0abd2 --- /dev/null +++ b/site/trunk/site-publish/testhome2table.html @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + Apache Tuscany : TestHome2Table + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Trash > To Be Deleted > Test Home 2 > TestHome2Table + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      +

      Tuscany is based on specifications defined by the Open SOA Collaboration:

      +
        +
      • Service Component Architecture (SCA) defines technologies for creating services and assembling them into higher-order service networks. SCA provides a language-independent way to compose and deploy service networks. SCA also defines language-specific programming models for service authoring including Java, Spring, C++ , and PHP. There are currently Tuscany SCA runtimes written in Java and C+. Learn more about SCA.
      • +
      • Service Data Object (SDO) provides a uniform interface for handling different forms of data, including XML documents, that can exist in a network of services and provides the mechanism for tracking changes. Apache Tuscany provides Java and C+ implementations for SDO. Learn more about SDO.
      • +
      • Data Access Service (DAS) provides a simple SDO interface to relational databases. Apache Tuscany provides a Java implementation for DAS. Learn more about DAS.
      • +
      +
      +


      +
      Tuscany Releases
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/to-be-deleted.html b/site/trunk/site-publish/to-be-deleted.html new file mode 100644 index 0000000000..74b4a39c7a --- /dev/null +++ b/site/trunk/site-publish/to-be-deleted.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : To Be Deleted + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Trash > To Be Deleted + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tools-install-the-latest-tuscany-eclipse-plugin.html b/site/trunk/site-publish/tools-install-the-latest-tuscany-eclipse-plugin.html new file mode 100644 index 0000000000..fba2006464 --- /dev/null +++ b/site/trunk/site-publish/tools-install-the-latest-tuscany-eclipse-plugin.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tools - Install the Latest Tuscany Eclipse Plugin + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Tools - Install the Latest Tuscany Eclipse Plugin + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      Install the Latest Tuscany Eclipse Plugin

      + +

      "Installing the Apache Tuscany Eclipse Plugins video"

      + +

      A quick Step by Step walk through of downloading, installing, and verifying the Tuscany Eclipse Plugins.

      + +

      This section shows you how to install the lastest Tuscany Eclipse plugin. The plugin gives you the ability to run an SCA composite file from the Package Explorer. You will see a "Run As Tuscany" menu item when you bring up the context menu on composite files.

      + +

      Start Eclipse and go to Help -> Software Updates -> Find and Install. Select "Search for new features to install" and then click next

      + +

      Create a new Remote Site. On the next dialog, click on "New Remote Site..." to create a new site entry. Give it a name such as
      +"Tuscany" and add the site URL from the latest Tuscany release (e.g http://www.apache.org/dist/tuscany/java/sca/1.5.1/tuscany-sca-1.5.1-updatesite/.

      + +

      Select the "Remote Site" you just created, and click "Finish"

      + +

      Select the "Apache Tuscany SCA Tools" and click "Next", and then, on the next dialog, click "Finish". Accept the "Plugin License" and next click on "Install All".

      + +

      When asked to "restart eclipse", click the "yes" button.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update.jpg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update.jpg new file mode 100644 index 0000000000..0357e5a253 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update.jpg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update.jpg.jpeg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update.jpg.jpeg new file mode 100644 index 0000000000..d71bfe84b1 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update.jpg.jpeg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_license.jpg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_license.jpg new file mode 100644 index 0000000000..457b4e7983 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_license.jpg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_license.jpg.jpeg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_license.jpg.jpeg new file mode 100644 index 0000000000..e488e74fd2 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_license.jpg.jpeg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_verification.jpg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_verification.jpg new file mode 100644 index 0000000000..23ded64414 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_verification.jpg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_verification.jpg.jpeg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_verification.jpg.jpeg new file mode 100644 index 0000000000..8e88737cea Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_feature_verification.jpg.jpeg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_finish.jpg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_finish.jpg new file mode 100644 index 0000000000..190036e382 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_finish.jpg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_finish.jpg.jpeg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_finish.jpg.jpeg new file mode 100644 index 0000000000..bbb6a5ef56 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_finish.jpg.jpeg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_installation.jpg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_installation.jpg new file mode 100644 index 0000000000..ef1bd53888 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_installation.jpg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_installation.jpg.jpeg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_installation.jpg.jpeg new file mode 100644 index 0000000000..2fd587e991 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_installation.jpg.jpeg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_new_site.jpg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_new_site.jpg new file mode 100644 index 0000000000..ced23f111a Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_new_site.jpg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_new_site.jpg.jpeg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_new_site.jpg.jpeg new file mode 100644 index 0000000000..83c882dbd7 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_new_site.jpg.jpeg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_restart_eclipse.jpg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_restart_eclipse.jpg new file mode 100644 index 0000000000..995daba70d Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_restart_eclipse.jpg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_restart_eclipse.jpg.jpeg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_restart_eclipse.jpg.jpeg new file mode 100644 index 0000000000..369f562ef2 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_restart_eclipse.jpg.jpeg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_search_results.jpg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_search_results.jpg new file mode 100644 index 0000000000..dcb2ce7afd Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_search_results.jpg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_search_results.jpg.jpeg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_search_results.jpg.jpeg new file mode 100644 index 0000000000..77ae3d0f92 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_search_results.jpg.jpeg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_sites.jpg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_sites.jpg new file mode 100644 index 0000000000..c32031adcf Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_sites.jpg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_sites.jpg.jpeg b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_sites.jpg.jpeg new file mode 100644 index 0000000000..b929427c48 Binary files /dev/null and b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.data/install_update_sites.jpg.jpeg differ diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.html b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.html new file mode 100644 index 0000000000..482edfa64a --- /dev/null +++ b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-11.html @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tools - Install Tuscany Eclipse Plugins 1.1 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Tools - Install Tuscany Eclipse Plugins 1.1 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + +

      Install the Tuscany Eclipse Plugin 

      + +

      The first thing you do is to start Eclipse and go to Help -> Software Updates -> Find and Install,
      +select "Search for new features to install" and then click next

      + +

      + +

      On the next dialog, click on "New Remote Site..." to create a new site entry. Give it a name such as
      +"Tuscany" and add the site URL as *http://people.apache.org/~jsdelfino/tuscany/tools/updatesite/*

      + +

      + +

      Make sure the "Remote  Site" that was just created is selected, and click "Finish"

      + +

      + +

      Select the "Apache Tuscany SCA Tools" and click "Next", and then, on the next dialog, click "Finish"

      + +

      + +

      Accept the "Plugin License"

      + +

      + +

      and next click on "Install All"

      + +

      + +

      When asked to "restart eclipse", click the  "yes" button. 

      + +

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-12.html b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-12.html new file mode 100644 index 0000000000..eac22b3777 --- /dev/null +++ b/site/trunk/site-publish/tools-install-tuscany-eclipse-plugins-12.html @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tools - Install Tuscany Eclipse Plugins 1.2 + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Tools - Install Tuscany Eclipse Plugins 1.2 + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      Install the Tuscany Eclipse Plugin 

      + +

      The first thing you do is to start Eclipse and go to Help -> Software Updates -> Find and Install,
      +select "Search for new features to install" and then click next

      + +

      On the next dialog, click on "New Remote Site..." to create a new site entry. Give it a name such as
      +"Tuscany" and add the site URL as http://archive.apache.org/dist/incubator/tuscany/java/sca/1.2-incubating/updatesite/

      + +

      Make sure the "Remote Site" that was just created is selected, and click "Finish"

      + +

      Select the "Apache Tuscany SCA Tools" and click "Next", and then, on the next dialog, click "Finish"

      + +

      Accept the "Plugin License"

      + +

      and next click on "Install All"

      + +

      When asked to "restart eclipse", click the "yes" button.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/transaction-intents-and-transaction-manager-support.html b/site/trunk/site-publish/transaction-intents-and-transaction-manager-support.html new file mode 100644 index 0000000000..36ffddcc69 --- /dev/null +++ b/site/trunk/site-publish/transaction-intents-and-transaction-manager-support.html @@ -0,0 +1,264 @@ + + + + + + + Transaction Intents and Transaction Manager support : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > Menus > Subproject Menus > DAS Java Subproject Menu > Design Discussions > Transaction Intents and Transaction Manager support + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +

      As this topic involves a lot of discussion thought the better place will be wiki.

      + +

      I was just thinking randomly to see how to integrate the work in JIRA-1816 with the work
      +in JIRA-1700(implementation.das support for tx inents/policies). Below are some suggestions I could gather,
      +but need lot of feedback and ideas.

      + +

      TransactionManager support in SCA (JIRA-1816)

      +

      ---------------------------------------------------------------------------------------------------------------------------------
      +TransactionInfo - can have 2 subclasses - GlobalTransactionInfo (XADataSource...), LocalTransactionInfo (Connection...)
      +we can rename TransactionInfo to TransactionContext if it suits.

      + +

      TransactionManager - also can have 2 similar flavours - LocalTransactionManager (what is there in the transaction.zip today)
      +and GlobalTransactionManager. GlobalTransactionManager can support say a class level annotation - @TransactionManagerFactory(Geronimo)
      +to have a way to inject an externally available TransactionManager like Geronimo, JOTM etc.
      +---------------------------------------------------------------------------------------------------------------------------------

      + +

      Tx Policy Support in implementation.das (JIRA-1700)

      + +

      ----------------------------------------------------------------------------------------------------------------------------------------------
      +I went through the Tx Policy Draft and trying to understand it in detail. Below trying to give examples of different scenarions
      +for implementation.das and attempting to analyze just some part from that. Getting lost in different places . Need all possible comments.
      +I am just gathering all points below, with some discussions can prepare a design doc if that helps.

      + +

      (RM=Resource Manager) (xads = XADataSource) (xares=XAResource)(conn=connection)(2PC - 2 Phase Commit)
      +----------------------------------------------------------------------------------------------------------------------------------------------
      +Note:
      +a> It is possible that the caller (say junit test case) passes XADataSource(which has Connection and XAResource) OR same can be obtained from
      +within SCA runtime.
      +b> At das.implementation level intents can be - managedTransaction.global, managedTransaction.local, noManagedTransaction, (still not clear why to support unqualified managedTransaction)
      +c> At present, implementation.das does not support oneWayInvocation - so need not consider transactedOneWay and immediateOneWay - is this right assumption?
      +d> At service level intents can be - propagatesTransaction, suspendsTransaction
      +----------------------------------------------------------------------------------------------------------------------------------------------
      +Scenarios:-

      + +

      CASE1) 1 component - 1 impl - 1 connection info - multiple services - multiple operations/service

      + +

      so at the time of createInvoker() for a service, the SCArutime can know both the intents (impl and interaction) and decide how to act on it.
      +i.e. during DASImplementationProvider.createInvoker().

      + +

      1 impl == 1 RM (multiple Connections/XAConnections).
      +so multiple services in the same .composite will use the same RM

      + +

      In DASImplementationProvider(component, impl) we have DASImplementationProvider.createInvoker(service, operation)
      +One DASImplementationProvider has 1 DataAccessEngineManager. Bue each createInvoker() has a new DASInvoker() with new das
      +and new DataAccessEngine. So each new invoker() will have a diff das instance.

      + +

      example

      + +

      scaDomain = SCADomain.newInstance("company.composite");
      +dasCompanyService = scaDomain.getService(CompanyService.class, "CompanyComponent/CompanyServiceComponent");

      + +

      dasCustomerService = scaDomain.getService(CustomerService.class, "CompanyComponent/CustomerServiceComponent");

      + +

      dasCompanyService.updateCompanies();//RM0 - das0
      +dasCustomerService.updateCustomers();//RM0 - das1
      +----------------------------------------------------------------------------------------------------------------------------------------------
      +CASE2) also there can be - multiple RMs (multiple XAConnections for Tx support for atomic tx, if atomic is not needed can use java.sql.Connections)

      + +

      scaDomain1 = SCADomain.newInstance("company.composite");
      +dasCompanyService = scaDomain.getService(CompanyService.class, "CompanyComponent/CompanyServiceComponent");

      + +

      scaDomain2 = SCADomain.newInstance("customer.composite");
      +dasCustomerService = scaDomain.getService(CustomerService.class, "CustomerComponent/CustomerServiceComponent");

      + +

      dasCompanyService.updateCompanies(); //RM1 - das1
      +dasCustomerService.updateCustomers(); //RM2 - das2
      +----------------------------------------------------------------------------------------------------------------------------------------------
      +CASE3) case when at least one das (say das1) instance has a config with managedtx=true (i.e. das manages tx)
      +In this case the configs and intents of all other das instances are immeterial, because to support managedtx=true (for das1), all others will need
      +to follow the same mode.
      +----------------------------------------------------------------------------------------------------------------------------------------------
      +CASE4) case when non-DBMS RMs are involved

      + +

      scaDomain1 = SCADomain.newInstance("company.composite");
      +dasCompanyService = scaDomain.getService(CompanyService.class, "CompanyComponent/CompanyServiceComponent");

      + +

      scaDomain2 = SCADomain.newInstance("jmscustomer.composite");
      +jmsCustomerService = scaDomain.getService(jmsCustomerService.class, "jmsCustomerComponent/jmsCustomerServiceComponent");

      + +

      dasCompanyService.updateCompanies(); //RM1 DBMS
      +jmsCustomerService.updateCustomers(); //RM2 JMS
      +--------------------------------------------------------------------------------------------------------------------------------------------------
      +The Table2 from Tx Policy Draft needs to be considered.

      + +

      As the knowledge about das.implemnetation intent is at the construction of DASImplementationProvider(), but the knowledge of service level intent
      +is at DASImplementationProvider.createInvoke() level, createInvoker() is the place which can take decision about tx control.

      + +

      The ConnectionInfo - finally present inside das (may it be from config.xml or .composite) should be in accordance with what is expected in the
      +effective intents.

      + +

      DataAccessImplementationProvider.createInvoker() when calls getDAS() should pass as IN params the effective intents.

      + +

      When caller wants to pass xads (in case of global tx)/connection (in case of local tx), it needs a way to inject it (i.e. inject tx context) in
      +the service. Some possible ways -
      +**All DAS based services - can say mandatorily have a method setTransactionContext(Object ctx) (ctx can be Connection/XADS based on local
      +or global). This should be invoked by the caller before calling any business method for the service.
      +**Another way, from JIRA-1816 work - say the caller does
      +GlobalTransactionContext.setContext(XADS) OR LocalTransactionContext.setContext(Connection).
      +with this the thread context will have info to be used inside SCA component/services.
      +DataAccessImplementationProvider will do getContext() and if it is available (i.e. caller did setContext), will pass it to the getDAS(),
      +so das instance will get Connection during construction.

      + + +

      ---------------------------------------------------------------------------------------------------------------------------------------------------
      +I] propagatesTransaction + managedTransaction.global

      + +

      MEANING: caller will ideally start tx and pass the tx context to sca runtime. the tx is distributed xa tx.

      + +

      FLOW:
      +i) during DataAccessImplementationProvider.createInvoker()

      Unknown macro: {das=getDAS()}
      , inents will be passed in as well as necessary info from
      +txn context will be passed in by DataAccessImplementationProvider.
      +ii) das will get constructed with passing "new" connection to FACTORY.createDAS(). Also set managedtx=false to enalble non-das tx management.

      + +

      the caller will be responsible to handle the txn (i.e. managed shared global txn pattern)

      + +

      example

      + +

      XADS= GlobalTransactionManager.getXADataSource(pass in properties);
      +GlobalTransactionContext.setContext(XADS tied to XID); //due to threadlocal, this context is referenceable by DataAccessImplementationProvider now.
      +GlobalTransactionManager.begin(GlobalTransactionContext.getContext());

      + +

      scaDomain = SCADomain.newInstance("company.composite");
      +dasCompanyService = scaDomain.getService(CompanyService.class, "CompanyComponent/CompanyServiceComponent");//needs XADS1 tied with same XID

      + +

      dasCustomerService = scaDomain.getService(CustomerService.class, "CompanyComponent/CustomerServiceComponent");//needs XADS2 tied with same XID

      + +

      dasCompanyService.updateCompanies();//RM0 - das0
      +dasCustomerService.updateCustomers();//RM0 - das1

      + +

      GlobalTransactionManager.commit(context);//see that XID has 2 XADS tied to it and does necessaty actions for 2PC
      +--------------------------------------------------------------------------------------------------------------------------------------------------
      +Now for the case that, the caller is not having a ongoing tx and so does not inject tx context in sca runtime.

      + +

      When DASImplementationProvider detects there is no tx context set , inside createInvoker(), it can first instantiate das without a connection
      +(some changes needed in tuscany-das-rdb for this), and then use das.getConfig() to get necessary config props and construct a tx context
      +to be used by the current DASInvoker. Say we create a new DASTransactionCoordinator() for this work.

      + +

      DASTransactionCoordinator {

      + +

      GlobalTransactionContext setTxContext(dasConfig)

      Unknown macro: { + XADS= GlobalTransactionManager.getXADataSource(pass in properties); + GlobalTransactionContext.setContext(XADS); //due to threadlocal, this context is referenceable by DataAccessImplementationProvider now. + GlobalTransactionManager.begin(GlobalTransactionContext.getContext());//starts tx, this tx will be shared by all invokers. + }

      + +

      //multiple XADS will need to be tied to single xid to make them part of 1 xa tx.
      + //more methods here for getContext, enqueXAResourceInXID, dqueue XAResource from XID, XID based 2PhaseCommit...
      +}

      + +

      and will also pass "new" conection from the tx context to each new das instance.

      + +

      Also DASImplementationProvider() in this case will need to terminate tx. This can be done in stop() of DASImplementationProvider();
      +start() can not be used to start a tx as at that time, there is no existing tx context.

      + +

      Questions:
      +Now are my confusions. In DASImplementationProvider.stop() what is the way to know whether to commit/rollback? i.e. how stop() method will know about the invoke() having exceptions? Or otherwise each DASinvoker will need access to xid which is shared by all XAResources in the global tx
      +and the DASInvoker is supposed to call DASTransactionCoordinator.rollback() for case of exception?

      + +

      Also, this whole story relates to only one RuntimeComponent (i.e. multiple services and multiple operations in each services but all in same
      +component. Thus the tx can be encompassed by DASImplementationProvider.) What to do for the case when the global tx needs to span multiple
      +components?
      +------------------------------------------------------------------------------------------------------------------------------------------------
      +II] suspendsTransaction + managedTransaction.global
      +Here even if caller has a tx, it will be ignored and DASImplementationProvider+DASTransactionCoordinator will create a new Tx context and
      +will manage tx. Same questions as I]
      +-------------------------------------------------------------------------------------------------------------------------------------------------
      +III] suspendsTransaction + managedTransaction.local

      + +

      DASImplementationProvider() will pass DASConfig.connectionInfo() to LocalTransactionManager.getDataSource() and setContext() to get
      +java.sql.Connection (can be DriverManager or DataSource - in case of DataSource, the external env. is responsible for the JNDI initialization.)
      +(As local tx, no question of XADS). Same question - how to communicate exception occuring in DASInvoker.invoke() to stop()?
      +to decide whether to commit/rollback? Also as these are mere Connections and not XID/XADS etc. is it better for the DASInvoker() to control
      +the commit/rollback of tx? i.e. each DASInvoker() thread will be a Local Tx.
      +--------------------------------------------------------------------------------------------------------------------------------------------------
      +IV] suspendsTransaction + noManagedTransaction
      +this is equivalent to a das config with managedtx=true.

      + +

      Now say in case, there are das1 and das2 involved from 2 different .composites in a caller's business method
      +and das1 has IV] / managedtx=true and das2 has I], how will we be able to dectate that , because das1 is das managed tx, das2 should behave in
      +same way?
      +-------------------------------------------------------------------------------------------------------------------------------------------------
      +Also, need to specify behavior for cases when only impl intent is present or only interaction intent is present.

      + +

      CASE2) and CASE4) in case of I] need the caller to manage tx. If this is not happening, how implementation.das will be able to manage tx
      +(if there are multiple components involved)

      +
      +
      +
      +
      + + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/trash.html b/site/trunk/site-publish/trash.html new file mode 100644 index 0000000000..a4e32c4e6c --- /dev/null +++ b/site/trunk/site-publish/trash.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + Apache Tuscany : Trash + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Trash + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-anniversary.html b/site/trunk/site-publish/tuscany-anniversary.html new file mode 100644 index 0000000000..5fe350b3f2 --- /dev/null +++ b/site/trunk/site-publish/tuscany-anniversary.html @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany Anniversary + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > General Info > Tuscany Anniversary + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + + + + + +

      Tuscany Celebrates 3rd Anniversary

      + +

      On 2008-12-07 the Apache Tuscany project celebrates its 3rd anniversary as an Apache project. We are excited about our past accomplishments and enthusiastic about the future for Tuscany and SOA, and we would like you to join in our celebration. All week Apache Tuscany will be changing its logo and using special graphics for our virutal party, and you are invited to join.

      + +

      We've had many important achievements, and the improvements for Apace Tuscany keep coming. In the past we saw the following important milestones:

      +
        +
      • November 2005 - SCA 0.9 specifications released by BEA, IBM, Oracle, SAP, IONA, and Sybase.
      • +
      • December 2005 - Apache Tuscany added as an Apache incubator project.
      • +
      • January 2006+ - Apache Tuscany release various milestones on the way to 1.0.
      • +
      • May 2006+ - Apache Tuscany presents at JavaOne, ApacheCon, SOA World, and others.
      • +
      • July 2006 - SCA 0.95 specifications released. OpenSOA formed. New companies join.
      • +
      • September 2007 - Apache Tuscany 1.0 release. First implementation of SCA version 1.0 specification.
      • +
      • February 2008 - Apache Tuscany 1.1 release with SCA policy support, many Web 2.0 bindings, platform integration.
      • +
      • April 2008 - Apache Tuscany 1.2 release with distributed SCA Domain management,
        +JAX-WS annotations, and new Atom binding.
      • +
      • June 2008 - Tuscany goes worldwide with opening of Chinese portal and discussion groups.
      • +
      • May 2008 - Apache Tuscany becomes and official top level Apache project.
      • +
      • September 2008 - Apache Tuscany release exciting video series. Hollywood takes note.
      • +
      • August 2008 - Apache Tuscany 1.3 release with improved Java2WSDL, performance and full security enablement.
      • +
      • December 2008 - Apache Tuscany 1.4 being readied for public consumption.
      • +
      + + +

      The people on the Apache Tuscany team are happy on this anniversary, and look forward to the future. We invite you to try our release and celebrate with us.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap.jpg b/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap.jpg new file mode 100644 index 0000000000..af8e30deae Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap.jpg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap.jpg.jpeg b/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap.jpg.jpeg new file mode 100644 index 0000000000..7a1c2140b9 Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap_seq.jpg b/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap_seq.jpg new file mode 100644 index 0000000000..f222230cf4 Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap_seq.jpg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap_seq.jpg.jpeg b/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap_seq.jpg.jpeg new file mode 100644 index 0000000000..c5b7fb2288 Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/bootstrap_seq.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/component.jpg b/site/trunk/site-publish/tuscany-architecture-guide.data/component.jpg new file mode 100644 index 0000000000..ed8ac08425 Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/component.jpg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/component.jpg.jpeg b/site/trunk/site-publish/tuscany-architecture-guide.data/component.jpg.jpeg new file mode 100644 index 0000000000..29195ebba1 Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/component.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/model.jpg b/site/trunk/site-publish/tuscany-architecture-guide.data/model.jpg new file mode 100644 index 0000000000..ecbf04798f Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/model.jpg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/model.jpg.jpeg b/site/trunk/site-publish/tuscany-architecture-guide.data/model.jpg.jpeg new file mode 100644 index 0000000000..b7f4e64b84 Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/model.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_composite_hierarchy.jpg b/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_composite_hierarchy.jpg new file mode 100644 index 0000000000..fd1f8d4318 Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_composite_hierarchy.jpg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg b/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg new file mode 100644 index 0000000000..a4e3e2b1e3 Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_layers.jpg b/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_layers.jpg new file mode 100644 index 0000000000..0c47a208b1 Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_layers.jpg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_layers.jpg.jpeg b/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_layers.jpg.jpeg new file mode 100644 index 0000000000..96806ed1e7 Binary files /dev/null and b/site/trunk/site-publish/tuscany-architecture-guide.data/tuscany_layers.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-architecture-guide.html b/site/trunk/site-publish/tuscany-architecture-guide.html new file mode 100644 index 0000000000..bdd1571770 --- /dev/null +++ b/site/trunk/site-publish/tuscany-architecture-guide.html @@ -0,0 +1,478 @@ + + + + + + + + Tuscany Architecture Guide + + + + + + + +
      +  Apache Tuscany > Home > SCA Java > Tuscany Architecture Guide + +
      + + + + + + +
      +
      + +
      + +
      + Added by Raymond Feng, last edited by haleh mahbod on Apr 13, 2007 +  (view change) + +
      + +
      +
      +
      Apache Tuscany SCA Java Kernel Architecture Guide
      +

      This page is work in progress. Thanks for your contribution

      + + + + +


      +
      + +

      Kernel Overview

      + +

      This is a high level architecture document for Tuscany Java implementation of Service Component Architecture (SCA) which is defined in the specifications located at (http://wwww.osoa.org).

      + +

      This is a live document and is more focused on what is implemented rather than the end vision.
      +Goal of this document is to help users/developers better understand what Tuscany SCA offers and enable them to help with the development if interested.

      + +

      Tuscany provides the infrastructure for creating, assembling and deploying services in a distributed environment.
      +At a high level it aims to provide for the following:

      + +
        +
      • Infrastructure for creating, wiring, deploying and managing service assemblies in single runtime or across runtimes (federated)
      • +
      • Infrastructure for leveraging qualities of service provided by host environments (transactions, security)
      • +
      • Support for different host environments: Standalone, Tomcat, J2EE, OSGI (in progress, more can be added)
      • +
      • plug-points for supporting variety of bindings such as Axis2, RMI, more can be added
      • +
      • plug-points for adding component implementations such as Java Script, Spring, JRuby, Python (started), more can be added
      • +
      + + +

      Module Structure

      +

      [Note: Do we want to link to Kernel-Structure]?

      + +

      As illustrated below, the Tuscany runtime consists of the following key modules/packages:

      + +
        +
      1. SCA Spec API: The APIs defined by the SCA Java Client and Implementation Spec
      2. +
      3. API: Tuscany APIs which extend the SCA spec APIs
      4. +
      5. Core: The runtime implementation
      6. +
      7. SPI: SPI and base classes to extend the Tuscany runtime. It defines all the contract that Core interacts with Container/Binding/Databinding extensions.
      8. +
      9. Extensions: +
          +
        1. Container
        2. +
        3. Binding
        4. +
        5. Databinding
        6. +
        +
      10. +
      11. Host API: The interface between hosting environments and the Tuscany runtime
      12. +
      13. Host Platforms: The environments that host the Tuscany runtime
      14. +
      + + +

      + +

      Runtime Artifacts

      +
        +
      • Component +
          +
        • Basic unit of executable code
        • +
        • Offer services and have references
        • +
        +
      • +
      • Service +
          +
        • A contract for component clients consisting of 0..n operations
        • +
        • Services may be local or remote
        • +
        +
      • +
      • Reference +
          +
        • A dependency on a service
        • +
        • Component references are wired to services by the runtime
        • +
        +
      • +
      + + +

      Recursive Composite

      +

      Components may be Atomic or Composite

      +
        +
      • Composite components contain 0..n components
        +Composite services are exposed over 1..n bindings (e.g. SOAP/HTTP, JMS, RMI)
        +Composite references have 1..n bindings and may target
      • +
      • A service exposed by another composite
      • +
      • A service outside the SCA system, e.g. "Google search"
        +A composite may contain just a service wired to a references (mediation) [Haleh: Clarify]
      • +
      + + +

      Wiring

      +

      To understand how wiring works, we need to detail how Components function in the system. Let's start with Atomic Components and then discuss Composite Components.

      + + +

      Atomic Component

      +

      AtomicComponent is the most basic component form. It corresponds to the spec concept which offers services, has references and properties

      +
        +
      • Implementation types e.g. Java, XSLT, etc.
      • +
      • Are wired
      • +
      • Have properties
      • +
      + + +

      Atomic Components have implementation instances. Instances are associated with a scope: e.g. request, conversation, composite. A SCDL entry is used to define a Component. [Haleh: Define scope]

      + +

      Atomic components use a ScopeContainer to manage implementation instances:

      +
        +
      • Composite, HTTP Session, Request, Stateless
      • +
      • ScopeContainers track implementation instances by scope id and the AtomicComponent instance identity
      • +
      • Instances are stored in an InstanceWrapper which is specific to the component implementation type (e.g. PojoInstanceWrapper.java)
      • +
      + + +

      Component Wiring

      +

      Component references are connected to services through wires

      +
        +
      • Two sides +
          +
        • InboundWire - handles the source side of a wire, including policy
        • +
        • OutboundWire - handles the target side of a wire, including policy
        • +
        +
      • +
      • The runtime connects inbound and outbound wires, performing optimizations if possible +
          +
        • Inbound and outbound wires may be associated with different service contracts
        • +
        • Different implementation types
        • +
        • "Standard" wires contain invocation chains that have Interceptors that perform some form of mediation (e.g. policy)
        • +
        • Other wire types exist that, for example, do not perform mediations
        • +
        +
      • +
      + + +

      Invocation Chains

      +

      A wire has an InvocationChain per service operation. An InvocationChain may have interceptors - "around-style" mediation. Component implementation instances access a wire through a WireInvocationHandler associated with a reference.

      +
        +
      • WireInvocationHandlers may (or may not depending on the component type) be fronted by a proxy
      • +
      • WireInvocationHandlers dispatch an invocation to the correct chain
        +A wire has a TargetInvoker that is created from the target side AtomicComponent or Reference and is stored on the source wire invocation handler. The TargetInvoker is resposnible for dispatching the request to the target instance when the message hits the end of the target invocation chain.
      • +
      + + +

      Invocation Overview

      +
        +
      • An invocation is dispatched to the WireInvocationHandler
      • +
      • The WireInvocationHandler looks up the correct InvocationChain
      • +
      • It then creates a message, sets the payload, sets the TargetInvoker, and passes the message down the chain
      • +
      • When the message reaches the end of the chain, the TargetInvoker is called, which in turn is responsible for dispatching to the target
      • +
      • Having the TargetInvoker stored on the outbound side allows it to cache the target instance when the wire source has a scope of equal or lesser value than the target (e.g. request-->composite
      • +
      + + +

      The runtime provides components with InboundWires and OutboundWires. InvocationChains are held in component wires and are therefore stateless which allows for dynamic behavior such as introduction of new interceptors or re-wiring.

      + + +

      Bootsrap

      + +

      Bootstrap process is controlled by Host environment. The default process is implemented in DefaultBootstrapper.

      + +

      + + +

      Composite Hierarchy

      +

      + +

      The sequence diagram for the bootstrapping

      + +

      + + + +

      Deployment

      + +

      The runtime processes service assemblies serialized using SCA XML vocabulary, SCDL, but can take other forms.

      +
        +
      • The load phase processes SCDL and creates an in-memory model
      • +
      • The build phase evaluates the model and produces corresponding runtime artifacts (e.g. components, services, references)
      • +
      • The connect phase wires references to services
      • +
      + + + +

      Loader

      +

      SCA service assemblies are deployed to the SCA domain in the format of SCDL files. Tuscany runtime uses loader to load the SCDLs into model objects which are a set of java beans to hold the metadata.

      + +

      There are two types of loaders:

      + +
        +
      • StAXElementLoader: Load the XML element from the StAX events
      • +
      • ComponentTypeLoader: Load the Component Type for an implementation either by introspection or paring a side file
      • +
      + + + +

      Model

      + +

      + +

      Loading Component Type

      +

      Loads the component type definition for a specific implementation

      +
        +
      • How it does this is implementation-specific
      • +
      • May load XML sidefile (location set by implementation)
      • +
      • May introspect an implementation artifact (e.g. Java annotations)
      • +
      • ... or anything else
      • +
      + + +

      Composite ComponentType Loader

      +
        +
      • Load SCDL from supplied URL
      • +
      • Extract and load SCDL from composite package
      • +
      + + +

      POJO ComponentType Loader

      +
        +
      • Introspect Java annotations
      • +
      • Uses a pluggable "annotation processing" framework to introspect Java classes
      • +
      + + + +

      Builder

      +

      Java SCA builder creates a runtime component from the configuration model

      +
        +
      • Builder for each implementation type
      • +
      • Builder for each binding type (service or reference component)
      • +
      + + +

      Runtime component manages:

      +
        +
      • Implementation instances
      • +
      • Inbound and Outbound wires
      • +
      + + +

      Every implementation is likely to be different

      +
        +
      • Different artifacts, programming model, ...
      • +
      + + +

      Composite implementation recurses for contained components

      +
        +
      • Re-invokes the Builder for every child
      • +
      + + +

      Class diagram for the runtime artifacts

      + +

      + + +

      Connecting

      + +

      The connector is reponsible to connect the wires for the components, services and references.

      + +

      Federated Assembly

      +

      <notes from Meeraj's email on 2/1/07 - Haleh included here>
      +I have been working on the stuff around federated assembly and enabling
      +distributed SCA domains. Here is a quick summary of what has been done
      +so far,

      + +

      Work in progress

      + +

      Discovery Service

      + +
        +
      • Provides the low-level communication abstraction for
        +enabling runtimes participating in the domain to exchange information
      • +
      • The abstraction supports directed message delivery to a
        +given runtime, asynchronous message reception and broadcast to all
        +runtimes participating in the domain
      • +
      • To start with we are following a model, where one
        +runtime in the domain assumes the master role and is responsible for
        +managing the logical assembly
      • +
      • This runtime creates the physical artifacts and
        +trensport them to the target slave runtimes
      • +
      • The discovery abstraction is defined in SPI
      • +
      • There are two implementations in runtime/services - JXTA
        +and Bonjour
      • +
      • JXTA implementaion is getting pretty much there, it
        +mainly uses the JXTA Peer Discovery protocol (PDP) and Peer Resolver
        +Protocol (PRP)
      • +
      + + +

      Marshalling Framework

      + +
        +
      • This is similar to our loader framework, however
        +supports bi-directional marshalling and unmarshalling of physical model
        +objects
      • +
      • This framework is used by the assembly service to
        +serialize and transport physical model information to slave runtimes
        +using the discovery services
      • +
      • On the receiving end the serialized information is
        +unmarshalled by the federated deployer for being applied to the slave
        +runtime
      • +
      • The abstraction is defined in SPI
      • +
      • I am working on an implementation in core
      • +
      • The framework supports versioning of physicla model
        +objects if the participating runtimes are at different versions
      • +
      + + +

      Federated Deployer

      + +
        +
      • This is similar to the local deployer, however registers
        +itself with the discovery service for receiving physical model updates
      • +
      • The federated deployer doesn't use the loader framework
      • +
      • The federated deployer accepts serialized physical model
        +information in XML, rather than raw SCDL as with local deployer
      • +
      • It uses the current builder framework to build, prepare
        +and start the components
      • +
      + + +
      A note from Jeremy on federated deployment Feb. 9, 2007.
      +

      The design is that there is a "master" node that is working out which"physical" nodes components are going to run on. It then
      +passes PhysicalComponentDefinition's to the worker nodes to get them tocreate the component and any transport bindings it needs
      +to talk toother nodes. The PCDs are portable, independent of the type ofruntime, instead tied to the type of component.Picking on
      +Ruby as an example as we know we can run that on Java andNative runtimes, there could be one common PCD for a Ruby componentthat
      +was supported by all container implementations. The master couldsend that to any node to have it run a Ruby component. A runtimecould
      +also offer "enhanced" Ruby support with additional featuresthat required additional configuration. If would offer support for adifferent
      +PCD with that additional metadata. Which one is selected bythe master would be part of its component allocation algorithm.So basically,
      +any runtime that can connect to the federated fabricand handle a PCD can join the SCA domain. We picked JXTA and XML forthe fabric and
      +PCD encoding as there is support for those in bothJava and C++. Adding support for that to the Native runtime wouldalso be good if you
      +were skeptical of all the Java stuff.

      + +

      Work outstanding

      + +
        +
      • Define the physical model in Java
      • +
      • Define the corresponding XML infoset
      • +
      + + + + +

      Supported Extensions

      +

      Spring

      +

      1) it allows a Spring application context to act as the
      +implementation of an SCA component - this allows users to bring
      +existing Spring applications into an SCA assembly
      +2) it allows SCA components to act as Spring beans so that users can
      +use services over SCA from their applications.

      +
      + + +
      +
      + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-books-and-articles.data/S313731-DataBinding.pdf b/site/trunk/site-publish/tuscany-books-and-articles.data/S313731-DataBinding.pdf new file mode 100644 index 0000000000..6b7b256d4c Binary files /dev/null and b/site/trunk/site-publish/tuscany-books-and-articles.data/S313731-DataBinding.pdf differ diff --git a/site/trunk/site-publish/tuscany-books-and-articles.data/tuscany-in-action.jpg b/site/trunk/site-publish/tuscany-books-and-articles.data/tuscany-in-action.jpg new file mode 100644 index 0000000000..589d4f4226 Binary files /dev/null and b/site/trunk/site-publish/tuscany-books-and-articles.data/tuscany-in-action.jpg differ diff --git a/site/trunk/site-publish/tuscany-books-and-articles.data/tuscany-in-action.jpg.jpeg b/site/trunk/site-publish/tuscany-books-and-articles.data/tuscany-in-action.jpg.jpeg new file mode 100644 index 0000000000..0fa7f9ac69 Binary files /dev/null and b/site/trunk/site-publish/tuscany-books-and-articles.data/tuscany-in-action.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-books-and-articles.html b/site/trunk/site-publish/tuscany-books-and-articles.html new file mode 100644 index 0000000000..64268d0e22 --- /dev/null +++ b/site/trunk/site-publish/tuscany-books-and-articles.html @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany Books and Articles + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > General > Tuscany Books and Articles + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + + + + + +

      Books about Tuscany and SCA

      + + + + +

      Tuscany SCA in Action is a comprehensive, hands-on guide for developing technology-agnostic, extensible applications. By following a travel-booking example throughout the book, you'll learn how to model, compose, deploy, and manage applications using SCA. The book emphasizes practical concerns, like effectively using Tuscany’s supported bindings and protocols and integrating with standard technologies like Spring and JMS to save development time and cost.

      + +

      + + + + + + + +

      Articles

      + + + + +

      Presentations

      + + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-cwiki-development-guideline.data/WebsiteStructure.JPG b/site/trunk/site-publish/tuscany-cwiki-development-guideline.data/WebsiteStructure.JPG new file mode 100644 index 0000000000..ad5806d0be Binary files /dev/null and b/site/trunk/site-publish/tuscany-cwiki-development-guideline.data/WebsiteStructure.JPG differ diff --git a/site/trunk/site-publish/tuscany-cwiki-development-guideline.data/WebsiteStructure.JPG.jpeg b/site/trunk/site-publish/tuscany-cwiki-development-guideline.data/WebsiteStructure.JPG.jpeg new file mode 100644 index 0000000000..9d3e7bb4c2 Binary files /dev/null and b/site/trunk/site-publish/tuscany-cwiki-development-guideline.data/WebsiteStructure.JPG.jpeg differ diff --git a/site/trunk/site-publish/tuscany-cwiki-development-guideline.html b/site/trunk/site-publish/tuscany-cwiki-development-guideline.html new file mode 100644 index 0000000000..577276db0f --- /dev/null +++ b/site/trunk/site-publish/tuscany-cwiki-development-guideline.html @@ -0,0 +1,187 @@ + + + + + + + Tuscany cwiki Development Guideline : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > Tuscany cwiki Development Guideline + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +

      The Apache Tuscany Project Website (http://incubator.apache.org/tuscany) content is authored collaboratively by the Tuscany community.  The content authoring and publish takes place in the following steps:-

      + + + +

      There is more information at the end of this page on how content is synchronized from the Wiki to the public site.

      + +

      Since the Wiki content forms the backbone for the public website content, it is important that the community adheres to some community accepted common guidelines when authoring content on the Wiki, to help in consistency and maintainability of the content.  The objective of this page is to record these guidelines.

      + +

      Wiki Content Authoring and Organization Guidelines 

      + +

      The Apache Tuscany project consists of three subprojects - SCA, SDO and DAS each of which is implemented in C++ and Java.  These subprojects and their implementations have different documentation and download pages. There is a lot of information that gets shared on the website related to all these projects and it is essential to have a clear structure to help ease the administration, modification and maintenance of the website. Here is a proposal for how the information on cwiki can be organized with this goal in mind.

      + +

      Need to make sure community is in agreement before we make this the guideline - so, here is the proposal.

      + +

      Content Structure

      + +

      Tuscany cwiki is divided into two logical spaces.

      +
        +
      1. Tuscany General space: this is where you will find general Tuscany information, for example community, blogs, documentation and downloads for Tuscany.  The root of the pages under this category is 'General Info'.  The pages under 'General Info' contains information like : Home, SCA Overview, SDO Overview, DAS Overview. All pages categorized under 'Genral Info' the use the same navigation menu.
      2. +
      3. Tuscany Subproject space: There is a 'logical' space for each subproject under Tuscany. For example, SCA Java, SDO Java, SCA Native, etc. When under a subproject, you'll only find information about the subproject. Each subproject uses its own menu (which is similar for all subprojects) to navigate through pages for that subproject. This means navigation remains constant when traversing through pages of a subproject.
      4. +
      5. Tuscany Menus : Another category of pages are the various 'Menus' that are used.  These have been isolated as another sub-tree of content to help in independent organization of Menu options.  Under this subtree titled 'Menus' is organized all the sets of Menu options that appear on the Navigation pane on the left.
      6. +
      + + +

      Wiki tree structure

      + +

      Tuscany

      +
        +
      • Home +
          +
        • SCA Overview (general) +
            +
          • SCA Java (subproject)
            + You will find a similar structure as SCA Java under all other subprojects (SCA Native, SDO Java, DAS Java, ...) +
              +
            • SCA Java Subproject Documentation Menu - All publishable documentations are under this
            • +
            • SCA Java Releases - All release download pages for the subproject are under this
            • +
            • SCA Java Work-in-progress - This is place holder for work in progress. For example, discussion about new release, documentation in progress, etc. would all go under this category
            • +
            +
          • +
          • SCA Native (subproject)
          • +
          +
        • +
        • SDO Overview (general) +
            +
          • SDO Java (subproject)
          • +
          • SDO Native (subproject)
          • +
          +
        • +
        • DAS Overview (general) +
            +
          • DAS Java (subproject)
          • +
          • DAS Native (subproject)
          • +
          +
        • +
        • General Info (general) - holds information applicable to all projects. For example, Events, documentat/download, community, etc.
        • +
        • Menus - You will find all menus under here +
            +
          • General - You will find general menu here
          • +
          • Subproject Menus - You will find subproject specific menus here
          • +
          +
        • +
        +
      • +
      + + +

      Guidelines

      + +
        +
      1. Before adding any content to the wiki take a look at the content tree structure at http://cwiki.apache.org/confluence/pages/listpages-dirview.action?key=TUSCANY and identify a node in the tree where the content could best fit.  To start with you could identify if the content falls under general or under a specific subproject or under a specific implementation of a subproject.  Then under this you could further categorize if the content is to do with 'Technical Documentation' or 'Release' and so on.
      2. +
      3. Having decided on a position for the content page in the content tree strucuture ensure that the 'Parent Page' is properly set to the identified position (page).
      4. +
      5. If any part of a content is likely to be reused under different contexts and hence in different pages, then abstract such reusable content into a separate page and include it in the various contexts (using the include macro) instead of duplicating the content across contexts.
      6. +
      7. Since all pages should have a relevant Navigation Menu when composing a page divide the page into two columns (under a section) with the Menus going into the first column and the page content going into the second column.  Use the following as a template for all pages. +
        +
        {section:border=false}
        +{column:width=15%}
        +{include: <enter the name an existing Menu page from the 'Menus' category of pages>}
        +{column}
        +{column:width=85%}
        +<<enter page content here>>
        +{column}
        +{section}
        +
        +
      8. +
      9. If there are going to be a set of pages that are likely to be created with the same specific set of menus then a easy way of creating them as per the above template is to go and first create a template page at http://cwiki.apache.org/confluence/pages/templates/listpagetemplates.action?key=TUSCANY using the above snippet with approprieate Menu pages substituted.  Subsequently when create a page go to http://cwiki.apache.org/confluence/pages/templates/listpagetemplates.action?key=TUSCANYand exercise the "Create page from template" option against the template just created.  This will result in a new page with the appropriate sections and menus and the content can be right away filled in.
      10. +
      11. If a new set of Menu options are to be created, then create a menu page for this under the 'Menus' category.  You can also choose to create a set of menu options reusing the existing Menu pages and 'including' them as required.
      12. +
      + + +

      Naming convention

      + + +

      How to deploy to convert Cofluence Native to Apache Tuscany website

      + +

      We use an autoexport plugin that automatically converts Confluence's native, and dynamically generated content into a static HTML version that gets exported to the Tuscany website which is located at incubator.apache.org/Tuscany.

      + +

      + +

      Resources

      + + +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-cwiki-website-structure.data/WebsiteStructure.JPG b/site/trunk/site-publish/tuscany-cwiki-website-structure.data/WebsiteStructure.JPG new file mode 100644 index 0000000000..ad5806d0be Binary files /dev/null and b/site/trunk/site-publish/tuscany-cwiki-website-structure.data/WebsiteStructure.JPG differ diff --git a/site/trunk/site-publish/tuscany-cwiki-website-structure.data/WebsiteStructure.JPG.jpeg b/site/trunk/site-publish/tuscany-cwiki-website-structure.data/WebsiteStructure.JPG.jpeg new file mode 100644 index 0000000000..9d3e7bb4c2 Binary files /dev/null and b/site/trunk/site-publish/tuscany-cwiki-website-structure.data/WebsiteStructure.JPG.jpeg differ diff --git a/site/trunk/site-publish/tuscany-cwiki-website-structure.html b/site/trunk/site-publish/tuscany-cwiki-website-structure.html new file mode 100644 index 0000000000..bcaf161a17 --- /dev/null +++ b/site/trunk/site-publish/tuscany-cwiki-website-structure.html @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany cwiki & Website Structure + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Tuscany cwiki & Website Structure + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      The Apache Tuscany Project Website (http://apache.tuscany.org) content is authored collaboratively by the Tuscany community.  The content authoring and publish takes place in the following steps:-

      + + + +

      There is more information at the end of this page on how content is synchronized from the Wiki to the public site.

      + +

      The wiki content forms the backbone for the public website content, its structure is documented here to help keep it maintainable.

      + + +

      Wiki Content Authoring

      + +

      The Apache Tuscany project consists of three subprojects - SCA, SDO and DAS each of which is implemented in C++ and Java.  These subprojects and their implementations have different documentation and download pages. There is a lot of information that gets shared on the website related to all these projects and it is essential to have a clear structure to help ease the administration, modification and maintenance of the website. Here is a proposal for how the information on cwiki can be organized with this goal in mind.

      + +

      Need to make sure community is in agreement before we make this the guideline - so, here is the proposal.

      + +

      Content Structure

      + +

      Tuscany cwiki is divided into two logical spaces.

      +
        +
      1. Tuscany General space: this is where you will find general Tuscany information, for example community, blogs, documentation and downloads for Tuscany.  The root of the pages under this category is 'General Info'.  The pages under 'General Info' contains information like : Home, SCA Overview, SDO Overview, DAS Overview. All pages categorized under 'Genral Info' the use the same navigation menu.
      2. +
      3. Tuscany Subproject space: There is a 'logical' space for each subproject under Tuscany. For example, SCA Java, SDO Java, SCA Native, etc. When under a subproject, you'll only find information about the subproject. Each subproject uses its own menu (which is similar for all subprojects) to navigate through pages for that subproject. This means navigation remains constant when traversing through pages of a subproject.
      4. +
      5. Tuscany Menus : Another category of pages are the various 'Menus' that are used.  These have been isolated as another sub-tree of content to help in independent organization of Menu options.  Under this subtree titled 'Menus' is organized all the sets of Menu options that appear on the Navigation pane on the left.
      6. +
      + + +

      Wiki tree structure

      + +

      Tuscany

      +
        +
      • Home +
          +
        • SCA Overview (general) +
            +
          • SCA Java (subproject)
            + You will find a similar structure as SCA Java under all other subprojects (SCA Native, SDO Java, DAS Java, ...) +
              +
            • SCA Java Subproject Documentation Menu - All publishable documentations are under this
            • +
            • SCA Java Releases - All release download pages for the subproject are under this
            • +
            • SCA Java Work-in-progress - This is place holder for work in progress. It is recommended that all in progress discussions such as new release discussion, documentation in progress, etc. be put under here. When a document is ready, it can be moved to the appropriate location in the tree.
            • +
            +
          • +
          • SCA Native (subproject)
          • +
          +
        • +
        • SDO Overview (general) +
            +
          • SDO Java (subproject)
          • +
          • SDO Native (subproject)
          • +
          +
        • +
        • DAS Overview (general) +
            +
          • DAS Java (subproject)
          • +
          • DAS Native (subproject)
          • +
          +
        • +
        • General Info (general) - holds information applicable to all projects. For example, Events, documentat/download, community, etc.
        • +
        • Menus - You will find all menus under here +
            +
          • General - You will find general menu here
          • +
          • Subproject Menus - You will find subproject specific menus here
          • +
          +
        • +
        +
      • +
      + + +

      Therefore, content on the wiki page can logically go into
      +1) General
      +2) Subproject
      +3) Work in progress subtree of the subprjoect

      + +

      [Comment: Can we remove the following section\? It is covered with the above 3 lines]

      +

      Want to add content to the website?

      + +
        +
      1. Before adding any content to the wiki take a look at the content tree structure at http://cwiki.apache.org/confluence/pages/listpages-dirview.action?key=TUSCANY and identify a node in the tree where the content could best fit.  To start with you could identify if the content falls under general or under a specific subproject or under a specific implementation of a subproject.  Then under this you could further categorize if the content is to do with 'Technical Documentation' or 'Release' and so on.
      2. +
      3. Having decided on a position for the content page in the content tree strucuture ensure that the 'Parent Page' is properly set to the identified position (page).
      4. +
      5. If any part of a content is likely to be reused under different contexts and hence in different pages, then abstract such reusable content into a separate page and include it in the various contexts (using the include macro) instead of duplicating the content across contexts.
      6. +
      7. Since all pages should have a relevant Navigation Menu when composing a page divide the page into two columns (under a section) with the Menus going into the first column and the page content going into the second column.  Use the following as a template for all pages. +
        +
        {section:border=false}
        +{column:width=15%}
        +{include: <enter the name an existing Menu page from the 'Menus' category of pages>}
        +{column}
        +{column:width=85%}
        +<<enter page content here>>
        +{column}
        +{section}
        +
        +
      8. +
      9. If there are going to be a set of pages that are likely to be created with the same specific set of menus then a easy way of creating them as per the above template is to go and first create a template page at http://cwiki.apache.org/confluence/pages/templates/listpagetemplates.action?key=TUSCANY using the above snippet with approprieate Menu pages substituted.  Subsequently when create a page go to http://cwiki.apache.org/confluence/pages/templates/listpagetemplates.action?key=TUSCANYand exercise the "Create page from template" option against the template just created.  This will result in a new page with the appropriate sections and menus and the content can be right away filled in.
      10. +
      11. If a new set of Menu options are to be created, then create a menu page for this under the 'Menus' category.  You can also choose to create a set of menu options reusing the existing Menu pages and 'including' them as required.
      12. +
      + + +

      How to deploy to convert Cofluence Native to Apache Tuscany website

      + +

      We use an autoexport plugin that automatically converts Confluence's native, and dynamically generated content into a static HTML version that gets exported to the Tuscany website which is located at apache.tuscany.org.

      + +

      + +
      Issues with the Wiki auto export to the Tuscany website
      Problems with the auto export plugin mean not all changes to Wiki pages will get automatically synced to the public website, to resolve this it may be necessary to force a manual refresh. One common situation where this occurs is where a page that is nested within another page with an include is updated but the page using the the include is not updated. Only Confluence administrators can force a manual refresh, how to do this is documented here and some more about the issue in this thread. Note that even with a forced refresh it still takes a short while for the live website server to pick up the changes. If you need a refresh done some current Tuscany Confluence administrators to ask are: Mike Edwards, Ant Elder, Venkata Krishnan, Luciano Resende, or Simon Nash.
      + +

      Resources

      + + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-das-faq.html b/site/trunk/site-publish/tuscany-das-faq.html new file mode 100644 index 0000000000..0cc78bd8cb --- /dev/null +++ b/site/trunk/site-publish/tuscany-das-faq.html @@ -0,0 +1,127 @@ + + + + + + + + Tuscany DAS - FAQ + + + + + + + +
      +  Apache Tuscany > Index > Tuscany DAS - FAQ + +
      + + + + + + +
      +
      + +
      + +
      + Added by S Venkatakrishnan, last edited by Luciano Resende on Feb 07, 2007 +  (view change) + +
      + +
      +
      +

      Tuscany DAS - Frequently Asked Questions

      + +

      Is DAS Thread safe ?
      +DAS design should support thread safety, but we have done no explicit testing on this area.
      +Initializing a DAS and using across multiple DAS calls should be OK and safe as long as you are using the same config file. I'd recommend initializing the DAS in a sync method tough.

      + + +

      I'm getting "Feature 'Config' not found." after migrating my application for after M2 codebase.
      +There was a change (see http://issues.apache.org/jira/browse/TUSCANY-899). To fix this, changed the attribute "xmlns"'s value of the "config" tag to "http:///org.apache.tuscany.das.rdb/config.xsd".

      +
      + + +
      +
      + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-dashboard.html b/site/trunk/site-publish/tuscany-dashboard.html new file mode 100644 index 0000000000..11f7b45d93 --- /dev/null +++ b/site/trunk/site-publish/tuscany-dashboard.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany Dashboard + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Tuscany Dashboard + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + + + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_components.jpg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_components.jpg new file mode 100644 index 0000000000..019549ebbc Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_components.jpg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_components.jpg.jpeg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_components.jpg.jpeg new file mode 100644 index 0000000000..2cbe8d7823 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_components.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_graph.jpg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_graph.jpg new file mode 100644 index 0000000000..2311e95814 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_graph.jpg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_graph.jpg.jpeg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_graph.jpg.jpeg new file mode 100644 index 0000000000..6626d3e7f2 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_graph.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_operation.jpg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_operation.jpg new file mode 100644 index 0000000000..d498e9f2e4 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_operation.jpg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_operation.jpg.jpeg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_operation.jpg.jpeg new file mode 100644 index 0000000000..fa6f4033f3 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_operation.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_property.jpg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_property.jpg new file mode 100644 index 0000000000..8deb33d6e8 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_property.jpg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_property.jpg.jpeg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_property.jpg.jpeg new file mode 100644 index 0000000000..d40919bb1f Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_property.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_reference.jpg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_reference.jpg new file mode 100644 index 0000000000..5d8a2f8b37 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_reference.jpg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_reference.jpg.jpeg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_reference.jpg.jpeg new file mode 100644 index 0000000000..9638da705e Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_reference.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_scenario.jpg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_scenario.jpg new file mode 100644 index 0000000000..22d1b61810 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_scenario.jpg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_scenario.jpg.jpeg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_scenario.jpg.jpeg new file mode 100644 index 0000000000..82893e8ac1 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_scenario.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_service.jpg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_service.jpg new file mode 100644 index 0000000000..af6cbe778d Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_service.jpg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_service.jpg.jpeg b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_service.jpg.jpeg new file mode 100644 index 0000000000..208355fccb Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/databinding_service.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/wrapper_transformation.jpg b/site/trunk/site-publish/tuscany-databinding-guide.data/wrapper_transformation.jpg new file mode 100644 index 0000000000..fee37cc216 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/wrapper_transformation.jpg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.data/wrapper_transformation.jpg.jpeg b/site/trunk/site-publish/tuscany-databinding-guide.data/wrapper_transformation.jpg.jpeg new file mode 100644 index 0000000000..0e93227b87 Binary files /dev/null and b/site/trunk/site-publish/tuscany-databinding-guide.data/wrapper_transformation.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscany-databinding-guide.html b/site/trunk/site-publish/tuscany-databinding-guide.html new file mode 100644 index 0000000000..7aefffeb45 --- /dev/null +++ b/site/trunk/site-publish/tuscany-databinding-guide.html @@ -0,0 +1,754 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany Databinding Guide + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > Tuscany Databinding Guide + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      Tuscany Databinding Framework

      + + +

      Overview

      + +

      In an SOA environment, business functions can be implemented in various technologies such as Java, C++, Scripting, BPEL, Spring, OSGi and XQuery. The business data can also be represented in different formats such as DOM, JAXB, SDO, AXIOM or POJO. Business services often communicate with each other on the network using various protocols such as RMI, RMI/IIOP, SOAP/HTTP, JMS, JCA, FEED and JSON-RPC. The service collaborations are achieved by data exchanges between service components. The SCA programming model defines an extension model for interface, implementation and binding types. The extensibility is essential to SOA as we need to be able to leverage and integrate all kinds of technologies. On the data side, we also need the extensibility for different formats so that we can flow any data type that is supported by both the client and the provider.

      + +

      Business data are represented in different ways even they are for the same infoset. For example, we can model a Customer business object as:

      +
        +
      • JavaBeans
      • +
      • SDO
      • +
      • JAXB
      • +
      • XMLBeans
      • +
      • DOM
      • +
      + + +

      And different protocol implementation stacks support different data representations. For example, in the Web Service domain, we have:

      +
        +
      • Axis1 uses DOM
      • +
      • Axis2 uses AXIOM
      • +
      • JAX-WS uses JAXB
      • +
      + + +

      Implementation technologies may impose requirements on the data too. For example,

      +
        +
      • Apache ODE BPEL engine only consumes/produces data using DOM
      • +
      • SAXON XQuery engine consumes/produces data using NodeInfo
      • +
      • DAS implementation requires SDO
      • +
      • Script Implementation uses AXIOM
      • +
      + + +

      Application developers should have the freedom to choose their preferred data representation and components with compatible data should be able to interoperate without the intervention of the business logic. With the ability to attach data transformation mediations to wires, this actually becomes a requirement to support any data type that can be mapped from client to provider and back again.

      + +

      In any interchange there are just two things that are defined: the format of data that will be supplied by the client and the format of data that will be consumed by (delivered to) the provider. Neither client or provider needs to be aware of the format of data on the other end or of what gyrations the fabric went though in order to make the connection. As part of making the connection, it is the fabric's job to make the connection as efficient as possible, factoring in the semantic meaning of the data, the policies that need to be applied, and what the different containers support.

      + +

      Each SCA implementation and binding type just needs to declare which data formats it can support for each endpoint it manages. The wiring framework need to know about these formats and about what transformations can be engaged in the invocation pipeline.

      + +

      For example, the Axis2 transport may declare that it can support Axiom and StAX for a certain port and the Java container may declare that it can only handle SDOs for an implementation that expects to be passed a DataObject. The wiring framework can resolve this by adding a StAX->SDO transform into the pipeline.

      + +

      The limitation here is whether a transformation can be constructed to match the formats on either end. If one exists then great, but as the number increases then developing n-squared transforms becomes impractical. A better approach would be to pick the most common formats and require bindings and containers to support those at a minimum, with other point-to-point transforms being added as warranted.

      + +

      Usage Scenarios

      + +

      Let's look at a simple scenario. The business function is to report all accounts for a given customer. The data exchanged between the client and server side will be Customer and AccountReport. Let's assume that the business objects are modeled using XML schema and the client side will talk to the server side over Web Service using Axis2. The client program decides to use SDO to represent the business data while the server side prefers to use JAXB.

      + +

      + +

      In this case, there are three data formats involved: SDO, JAXB and AXIOM (The AXIS2 XML Infoset) and all of them come from the same model in the following XSD type definitions:

      + +
      +
      +    <xsd:complexType name="Customer">
      +        <xsd:sequence>
      +            <xsd:element name="id" type="xsd:string"></xsd:element>
      +            <xsd:element name="firstName" type="xsd:string"></xsd:element>
      +            <xsd:element name="lastName" type="xsd:string"></xsd:element>
      +        </xsd:sequence>
      +    </xsd:complexType>
      +
      +    <xsd:complexType name="AccountReport">
      +        <xsd:sequence>
      +            <xsd:element name="id" type="xsd:string"></xsd:element>
      +            <xsd:element name="type" type="xsd:string"></xsd:element>
      +            <xsd:element name="balance" type="xsd:double"></xsd:element>
      +        </xsd:sequence>
      +    </xsd:complexType>
      +
      +
      + +

      Client java component:

      +
      +
      +SDO_AccountReport getAccountReport(SDO_Customer customer); // SDO_Customer and SDO_AccountReport are generated SDO interfaces
      +
      +
      + +

      AXIS2 Web Service Stack:

      +
      +
      +OMElement getAccountReport(OMElement customer); // pseudo method, the operation is defined in WSDL
      +
      +
      + +

      Service java component:

      +
      +
      +JAXB_AccountReport getAccountReport(JAXB_Customer customer); // JAXB_Customer and JAXB_AccountReport are generated JAXB classes
      +
      +
      + + +

      What's a databinding?

      + +

      A databinding represents a specific data format in the Tuscany runtime. Each databinding has a unique name which identifies the data format.

      + +

      Typical databindings

      +
        +
      • XML/Java databinding frameworks +
          +
        • SDO
        • +
        • JAXB
        • +
        • XMLBeans
        • +
        • Castor
        • +
        • AXIOM
        • +
        • FastInfoset
        • +
        +
      • +
      • XML Parsing Technologies +
          +
        • SAX (InputSource, ContentHandler)
        • +
        • DOM (Node)
        • +
        • StAX (XMLStreamReader/XMLStreamWriter/XMLEventReader/XMLEventWriter)
        • +
        +
      • +
      • I/O +
          +
        • InputStream/OutputStream
        • +
        • Reader/Writer
        • +
        • byte[] or String
        • +
        +
      • +
      • Other +
          +
        • JavaBeans
        • +
        • Simple Java Types
        • +
        • JSON
        • +
        +
      • +
      + + + +
      Overloaded data fomats
      Please note the I/O kind of databindings are further defined by the type of the content. For example, the InputStream can feed XML stream, fastinfoset, or something else. The context of a String can be a XML document, a JSON string or a CSV.
      + + +

      What's a transformer?

      + +

      A transformer is the data conversation logic that transforms data from one format to another format. For example, a transformer can convert the DOM Node into a SDO dataobject. A transformer will be registered as an edge connecting the source databinding to the target databinding. The weight of a transformer represents the cost
      +of the transformation.

      + +

      The following is an incomplete list of transformers that we ship in 1.0-incubating release.

      +
      +
      +org.apache.tuscany.sca.databinding.sdo.DataObject2String;source=commonj.sdo.DataObject,target=java.lang.String,weight=40
      +org.apache.tuscany.sca.databinding.sdo.DataObject2XMLStreamReader;source=commonj.sdo.DataObject,target=javax.xml.stream.XMLStreamReader,weight=10
      +org.apache.tuscany.sca.databinding.sdo.XMLDocument2String;source=commonj.sdo.helper.XMLDocument,target=java.lang.String,weight=40
      +org.apache.tuscany.sca.databinding.sdo.String2DataObject;source=java.lang.String,target=commonj.sdo.DataObject,weight=50
      +org.apache.tuscany.sca.databinding.sdo.XMLDocument2XMLStreamReader;source=commonj.sdo.helper.XMLDocument,target=javax.xml.stream.XMLStreamReader,weight=10
      +org.apache.tuscany.sca.databinding.sdo.XMLStreamReader2DataObject;source=javax.xml.stream.XMLStreamReader,target=commonj.sdo.DataObject,weight=15
      +org.apache.tuscany.sca.databinding.sdo.XMLStreamReader2XMLDocument;source=javax.xml.stream.XMLStreamReader,target=commonj.sdo.helper.XMLDocument,weight=15
      +org.apache.tuscany.sca.databinding.sdo.DataObject2Node;source=commonj.sdo.DataObject,target=org.w3c.dom.Node,weight=40
      +org.apache.tuscany.sca.databinding.sdo.Node2DataObject;source=org.w3c.dom.Node,target=commonj.sdo.DataObject,weight=40
      +
      +org.apache.tuscany.sca.databinding.xml.InputSource2Node;source=org.xml.sax.InputSource,target=org.w3c.dom.Node,weight=40
      +org.apache.tuscany.sca.databinding.xml.InputStream2Node;source=java.io.InputStream,target=org.w3c.dom.Node,weight=40
      +org.apache.tuscany.sca.databinding.javabeans.DOMNode2JavaBeanTransformer;source=org.w3c.dom.Node,target=java.lang.Object,weight=10000
      +org.apache.tuscany.sca.databinding.xml.Node2String;source=org.w3c.dom.Node,target=java.lang.String,weight=40
      +org.apache.tuscany.sca.databinding.xml.Node2XMLStreamReader;source=org.w3c.dom.Node,target=javax.xml.stream.XMLStreamReader,weight=40
      +org.apache.tuscany.sca.databinding.javabeans.JavaBean2DOMNodeTransformer;source=java.lang.Object,target=org.w3c.dom.Node,weight=10000
      +org.apache.tuscany.sca.databinding.xml.Reader2Node;source=java.io.Reader,target=org.w3c.dom.Node,weight=40
      +org.apache.tuscany.sca.databinding.xml.SAX2DOMPipe;source=org.xml.sax.ContentHandler,target=org.w3c.dom.Node,weight=30
      +org.apache.tuscany.sca.databinding.xml.StreamDataPipe;source=java.io.OutputStream,target=java.io.InputStream,weight=50
      +org.apache.tuscany.sca.databinding.xml.String2Node;source=java.lang.String,target=org.w3c.dom.Node,weight=50
      +org.apache.tuscany.sca.databinding.xml.String2XMLStreamReader;source=java.lang.String,target=javax.xml.stream.XMLStreamReader,weight=50
      +org.apache.tuscany.sca.databinding.xml.Writer2ReaderDataPipe;source=java.io.Writer,target=java.io.Reader,weight=50
      +org.apache.tuscany.sca.databinding.xml.XMLStreamReader2Node;source=javax.xml.stream.XMLStreamReader,target=org.w3c.dom.Node,weight=40
      +org.apache.tuscany.sca.databinding.xml.XMLStreamReader2String;source=javax.xml.stream.XMLStreamReader,target=java.lang.String,weight=40
      +org.apache.tuscany.sca.databinding.xml.Node2SimpleJavaType;source=org.w3c.dom.Node,target=java:simpleType,weight=10000
      +org.apache.tuscany.sca.databinding.xml.SimpleJavaType2Node;source=java:simpleType,target=org.w3c.dom.Node,weight=10000
      +
      +org.apache.tuscany.sca.databinding.axiom.Object2OMElement;source=java:simpleType,target=org.apache.axiom.om.OMElement,weight=10000
      +org.apache.tuscany.sca.databinding.axiom.OMElement2Object;source=org.apache.axiom.om.OMElement,target=java:simpleType,weight=10000
      +org.apache.tuscany.sca.databinding.axiom.OMElement2String;source=org.apache.axiom.om.OMElement,target=java.lang.String,weight=40
      +org.apache.tuscany.sca.databinding.axiom.OMElement2XMLStreamReader;source=org.apache.axiom.om.OMElement,target=javax.xml.stream.XMLStreamReader,weight=10
      +org.apache.tuscany.sca.databinding.axiom.String2OMElement;source=java.lang.String,target=org.apache.axiom.om.OMElement,weight=40
      +org.apache.tuscany.sca.databinding.axiom.XMLStreamReader2OMElement;source=javax.xml.stream.XMLStreamReader,target=org.apache.axiom.om.OMElement,weight=10
      +
      +org.apache.tuscany.sca.databinding.jaxb.JAXB2Node;source=javax.xml.bind.JAXBElement,target=org.w3c.dom.Node,weight=30
      +org.apache.tuscany.sca.databinding.jaxb.Node2JAXB;source=org.w3c.dom.Node,target=javax.xml.bind.JAXBElement,weight=30
      +org.apache.tuscany.sca.databinding.jaxb.Reader2JAXB;source=java.io.Reader,target=javax.xml.bind.JAXBElement,weight=30
      +org.apache.tuscany.sca.databinding.jaxb.XMLStreamReader2JAXB;source=javax.xml.stream.XMLStreamReader,target=javax.xml.bind.JAXBElement,weight=10
      +
      +org.apache.tuscany.sca.databinding.saxon.Node2NodeInfoTransformer;source=org.w3c.dom.Node,target=net.sf.saxon.om.NodeInfo,weight=10
      +org.apache.tuscany.sca.databinding.saxon.NodeInfo2NodeTransformer;source=net.sf.saxon.om.NodeInfo,target=org.w3c.dom.Node,weight=10
      +org.apache.tuscany.sca.databinding.saxon.Object2ValueTransformer;source=java.lang.Object,target=net.sf.saxon.value.Value,weight=10000
      +org.apache.tuscany.sca.databinding.saxon.Value2ObjectTransformer;source=net.sf.saxon.value.Value,target=java.lang.Object,weight=10000
      +org.apache.tuscany.sca.databinding.saxon.SimpleType2ValueTransformer;source=java:simpleType,target=net.sf.saxon.value.Value,weight=10000
      +org.apache.tuscany.sca.databinding.saxon.Value2SimpleTypeTransformer;source=net.sf.saxon.value.Value,target=java:simpleType,weight=10000
      +org.apache.tuscany.sca.databinding.saxon.NodeInfo2DataObjectTransformer;source=net.sf.saxon.om.NodeInfo,target=commonj.sdo.DataObject,weight=20
      +org.apache.tuscany.sca.databinding.saxon.DataObject2NodeInfoTransformer;source=commonj.sdo.DataObject,target=net.sf.saxon.om.NodeInfo,weight=10
      +
      +org.apache.tuscany.sca.databinding.sdo2om.DataObject2OMElement;source=commonj.sdo.DataObject,target=org.apache.axiom.om.OMElement,weight=1000
      +org.apache.tuscany.sca.databinding.sdo2om.XMLDocument2OMElement;source=commonj.sdo.helper.XMLDocument,target=org.apache.axiom.om.OMElement,weight=1000
      +
      +
      +
      + +

      The data transformation graph

      + +

      In Tuscany, we register transformers to form a graph as folllows:

      + +
        +
      • The data transformation capabilities for various databindings can be nicely modeled as a weighted, directed graph with the following rules. (Illustrated in the attached diagram).
      • +
      • Each databinding is mapped to a vertex.
      • +
      • If databinding A can be transformed to databinding B, then an edge will be added from vertex A to vertex B.
      • +
      • The weight of the edge is the cost of the transformation from the source to the sink.
      • +
      + + +

      + +

      With the transformer graph, we support not only point-to-point transformations but also multiple-hop transformations. This approach greatly reduces the number of transformers required and makes it possible to transform data without a direct transformation logic. It's very common that some databindings will be supported as the intermediaries, for example, the XML Sting, DOM Node and StAX XMLStreamReader are very populate in the XML world.

      + +

      The algorithm to calculate the transformation path

      +
        +
      • In the data interceptor on the wire, if we find out that the data needs to be transformed from databinding A to databinding E. Then we can apply Dijkstra's Shortest Path Algorithm to the graph and figure the most performed path. It can be A->E, or A>C->E depending on the weights. If no path can be found, then the data cannot be mediated.
      • +
      + + + +

      What' a data type?

      + +

      DataType is the decription of the data. It contains three pieces: the data binding, the physical type and the logical type. The runtime's main job is to connect user components together so typically the actual type used would be determined by the user code that implements the source or target. The databinding framework's role here is to convert from the type used by the source to the type used by the target. The internal types used by the runtime should not influence this - which is an essential separation to maintain given the components and the wire connecting them need to work on different runtimes (implemented in different languages).

      + +

      Where runtime types do matter is in the conversion between some serialized form and an in-memory representation and the two places where that occurs are in the configuration properties and in the binding implementations. To handle configuration properties (with the XPath requirement) we use DOM in the Java runtime. Each transport binding also tends to deserialize using a specific technology - for example, AXIOM for Axis2, JAXB for JAX-WS, Serializable for RMI and so the databinding framework is used to convert between the form generated by the binding and the form used by the component.

      + +

      The logical type represents the data type the user thinks is flowing across a wire. This could be a Java type, a XML type, a CORBA type, whatever depending on the /logical/ service contract defined in the assembly.

      + +

      The physical type is the actual representation of that type that is flowed by the runtime. In the Java runtime this will always be a Java type (i.e. some subclass of Object). In some cases it will be the same as the logical type - e.g. when a Java component calls another Java component over a local wire using a Java interface then both logical and physical types will be the same. In many cases though they will be different - for example, if the service contract was WSDL then the logical type would be the XML type used by the WSDL.

      + +

      Within the runtime the same logical type may have different physical forms. For example, the same XML document could be represented physically as a DOM, a StAX stream, an SDO, a JAXB object, or an AXIOM stream. The framework supports conversion between these different physical forms.

      + +

      1. A component (A) consumes a service provided by another component (B). The implementation of A prefers SDO while the implementation of B prefers JAXB.

      + +

      In the SCA term, A is wired to B using a reference.

      +
        +
      • Data is represented by an interface which is independent of the databinding
      • +
      • Data is represented by an interface or class which is databinding-specific (either generated or dynamic)
      • +
      + + +

      2. A component (A) consumes a web service using axis2. Axis2 engine expects to handle AXIOM objects.

      + +

      3. A component is exposed as a service over a transport/protocol.

      + +

      Where runtime types do matter is in the conversion between some serialized form and an in-memory representation and the two places where that occurs are in the configuration properties and in the binding implementations. To handle configuration properties (with the XPath requirement) we use DOM in the Java runtime; I believe the C++ runtime uses SDO. Each transport binding also tends to deserialize using a specific technology - for example, AXIOM for Axis2, JAXB for JAX-WS, Serializable for RMI and so the databinding framework is used to convert between the form generated by the binding and the form used by the component.

      + +

      interfaces for services and references are the contracts for SCA assembly.

      + + +

      Introspection of java interfaces for data types

      + +

      The DataBindingJavaInterfaceProcessor is responsible to introspect the java interfaces to figure out the databindings of the parameters and return types. It delegates to all of the databinding implementations which will set the databinding and logical type if such data type is recognized by the databinding. This introspection process can handle most of the cases as the java types usually have some patterns, for example, implementing a know interface.

      + + +

      Data mediation in the SCA assembly

      + +

      DataBindingRuntimeWireProcessor is responsible to insert a DataTransformationInteceptor into the invovcation chains if the data transformation is required between the source and target operations. Depending on the invocation patterns, it uses the effective interface contracts to determine if transformation should be applied.

      + +

      Typically, there are three cases:

      + +
      + + + + + + + + + + + + + + + + + + + + + +
      InteractionEffective Source Interface contractEffective Target Interface Contract
      A SCA component talks to another SCA component over a remotable interface using binding.scaThe interface contract of the reference defined by the source component typeThe interface contract of the service defined by the target component type
      A SCA component talks to an external service using binding.xThe interface contract of the reference defined by the source component typeThe interface contract imposed by the binding protocol
      The request from binding.y is routed to a component serviceThe interface contract imposed by binding.yThe interface contract of the service defined by the target component type
      +
      + + +

      Data transformation between SCA components

      + +
        +
      • Data transformation can be performed on wire for remotable interfaces
      • +
      • Data transformation can handle interfaces defined using different IDLs such as Java or WSDL.
      • +
      + + +

      + +

      Data transformation for service bindings

      + +
        +
      • <interface.xxx> defines the outbound service contract (SC2) which can be wired to a target component, reference or service (SC3).
      • +
      • <binding.xxx> can optionally hint a service contract for the inbound data from the binding protocol layer.
      • +
      + + +

      Data transformation for reference bindings

      + +
        +
      • <interface.xxx> defines the inbound service contract (SC2) which can be wired from a source component, reference or service (SC1).
      • +
      • <binding.xxx> can optionally hint a service contract (SC3) for the outbound data to the binding protocol layer.
      • +
      + + +

      + +

      Data transformation for property values

      + +
        +
      • Property values are loaded from SCDLs as DOM documents
      • +
      • The DOM Document can be transformed into a java object under a databinding, such as SDO, JAXB so that the component implementation code can work with the databinding directly instead of DOM.
      • +
      + + +

      + + +

      Special databindings and transformers to deal with operation-level transformations

      +
        +
      • Input2InputTransformer: Transform the input data from the source operation to the input data expected by the target operation
      • +
      • Output2OutputTransformer: Transform the output data from the target operation to the output data expected by the source operation
      • +
      • Exception2ExceptionTransformer: Transform the fault data from the target operation to the fault data expected by the source operaion
      • +
      + + +

      Deal with interfaces defined using different IDLs

      +
        +
      • SCA allows the interfaces to be defined using various IDLs, for example, java interface or WSDL portType
      • +
      • IDLs may have different ways to represent the input/output/fault data
      • +
      • The databinding framework is designed to support the transformation across IDLs
      • +
      + + +
        +
      • Some special databindings are internally used for this purpose: +
          +
        • idl:input The input data format for an operation
        • +
        • idl:output: The output data format for an operation
        • +
        • idl:fault: The fault data format for an operation
        • +
        +
      • +
      + + +
        +
      • SimpleTypeMapper: convert data between XSD simple types (by the databinding, for example, OMElement with an OMText child) and java objects
      • +
      + + + +

      Operation-level transformations

      + +

      The signature of an operation is modeled as follows:

      + +
        +
      • InputType: The data type for the input. The logical type is a list of data types that represent the list of parameters
      • +
      • OutputType: The data type for the output. The logical type is the data type that represents the return value
      • +
      • FaultTypes: The list of data types for all the faults
      • +
      + + +

      + +

      Wrapper style WSDL operation

      + +
      +
      +<?xml version="1.0" encoding="UTF-8"?>
      +<wsdl:definitions name="AccountService" targetNamespace="http://www.example.org/AccountService/"
      +    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.example.org/AccountService/"
      +    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      +    <wsdl:types>
      +        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      +            targetNamespace="http://www.example.org/AccountService/">
      +
      +            <xsd:complexType name="Customer">
      +                <xsd:sequence>
      +                    <xsd:element name="id" type="xsd:string"></xsd:element>
      +                    <xsd:element name="firstName" type="xsd:string"></xsd:element>
      +                    <xsd:element name="lastName" type="xsd:string"></xsd:element>
      +                </xsd:sequence>
      +            </xsd:complexType>
      +
      +            <xsd:complexType name="AccountReport">
      +                <xsd:sequence>
      +                    <xsd:element name="id" type="xsd:string"></xsd:element>
      +                    <xsd:element name="type" type="xsd:string"></xsd:element>
      +                    <xsd:element name="balance" type="xsd:double"></xsd:element>
      +                </xsd:sequence>
      +            </xsd:complexType>
      +
      +            <xsd:element name="getAccountReport">
      +                <xsd:complexType>
      +                    <xsd:sequence>
      +                        <xsd:element name="customer" type="tns:Customer"></xsd:element>
      +                    </xsd:sequence>
      +                </xsd:complexType>
      +            </xsd:element>
      +
      +            <xsd:element name="getAccountReportResponse">
      +                <xsd:complexType>
      +                    <xsd:sequence>
      +                        <xsd:element name="report" type="tns:AccountReport"></xsd:element>
      +                    </xsd:sequence>
      +                </xsd:complexType>
      +            </xsd:element>
      +        </xsd:schema>
      +    </wsdl:types>
      +    <wsdl:message name="getAccountReportRequest">
      +        <wsdl:part name="parameters" element="tns:getAccountReport"></wsdl:part>
      +    </wsdl:message>
      +    <wsdl:message name="getAccountReportResponse">
      +        <wsdl:part name="return" element="tns:getAccountReportResponse"></wsdl:part>
      +    </wsdl:message>
      +    <wsdl:portType name="AccountService">
      +        <wsdl:operation name="getAccountReport">
      +            <wsdl:input message="tns:getAccountReportRequest"></wsdl:input>
      +            <wsdl:output message="tns:getAccountReportResponse"></wsdl:output>
      +        </wsdl:operation>
      +    </wsdl:portType>
      +</wsdl:definition
      +
      +
      + +

      The WrapperHandler provides wrapper style WSDL wrapping/unwrapping support

      + +

      + +

      Extend the databinding framework

      + + +

      What can be extended?

      + +

      The Tuscany databinding framework can be extended in two ways:

      + +

      1. Add more databinding providers to support new formats to represent business data

      + +

      2. Add more transformers to facilitate the data exchange accross databindings 

      + +

      How to contribute a new databinding or transformer?

      + +

      Databindings and transformers can be plugged into Tuscany runtime following the Tuscany extensibility story. It can be achieved in the following steps:

      + +

      Add a new databinding:
      +1. Provide a java class which implements the DataBinding interface. You can subclass the BaseDataBinding.
      +2. Register your databindings against the DataBindingExtensionPoint.

      + +

      Add a new transformer:
      +1. Provide a java class which implements the Transformer interface. You can subclass the BasePullTransformer or BasePushTransformer.
      +2. Register your transformers against the TransformerExtensionPoint.

      + +

      The DataBinding SPI:

      + +
      +
      +/**
      + * DataBinding represents a data representation, for example, SDO, JAXB and AXIOM
      + */
      +public interface DataBinding {
      +    /**
      +     * A special databinding for input message of an operation
      +     */
      +    String IDL_INPUT = "idl:input";
      +    /**
      +     * A special databinding for output message of an operation
      +     */
      +    String IDL_OUTPUT = "idl:output";
      +    /**
      +     * A special databinding for fault message of an operation
      +     */
      +    String IDL_FAULT = "idl:fault";
      +    /**
      +     * The name of a databinding should be case-insensitive and unique
      +     * 
      +     * @return The name of the databinding
      +     */
      +    String getName();
      +    
      +    /**
      +     * Get the aliases for the databinding
      +     * 
      +     * @return An array of aliases
      +     */
      +    String[] getAliases();
      +
      +    /**
      +     * Introspect and populate information to a DataType model
      +     * 
      +     * @param dataType The data type to be introspected
      +     * @param annotations The java annotations
      +     * @return true if the databinding has recognized the given data type
      +     */
      +    boolean introspect(DataType dataType, Annotation[] annotations);
      +
      +    /**
      +     * Introspect the data to figure out the corresponding data type
      +     * 
      +     * @param value The object to be checked
      +     * @return The DataType or null if the java type is not supported by this databinding
      +     */
      +    DataType introspect(Object value);
      +
      +    /**
      +     * Provide a WrapperHandler for this databinding
      +     * @return A wrapper handler which can handle wrapping/wrapping for this databinding
      +     */
      +    WrapperHandler getWrapperHandler();
      +
      +    /**
      +     * Make a copy of the object for "pass-by-value" semantics
      +     * @param source object to copy 
      +     * @return copy of the object passed in as argument
      +     */
      +    Object copy(Object object);
      +    
      +    /**
      +     * Get the type mapper for simple types
      +     * @return The databinding-specific simple type mapper
      +     */
      +    SimpleTypeMapper getSimpleTypeMapper();
      +    
      +    /**
      +     * Get the handler that can handle exceptions/faults in the
      +     * databinding-specific way
      +     * 
      +     * @return An instance of the exception handler
      +     */
      +    ExceptionHandler getExceptionHandler();
      +}
      +
      +
      + +
        +
      • Support introspection of java types
      • +
      • Support data copying for pass-by-value
      • +
      • Support warpping/unwrapping for WSDL wrapper style
      • +
      • Support exception handling
      • +
      + + +

      Transformer SPI

      + +
      +
      +/**
      + * A transformer provides the data transformation from source type to target type. The cost of the transformation is
      + * modeled as weight.
      + */
      +public interface Transformer {
      +    /**
      +     * Get the source type that this transformer transforms data from. The type is used as the key when the transformer
      +     * is registered with TransformerRegistry.
      +     *
      +     * @return A key indentifying the source type
      +     */
      +    String getSourceDataBinding();
      +
      +    /**
      +     * Get the target type that this transformer transforms data into. The type is used as the key when the transformer
      +     * is registered with TransformerRegistry.
      +     *
      +     * @return A key indentifying the target type
      +     */
      +    String getTargetDataBinding();
      +
      +    /**
      +     * Get the cost of the transformation. The weight can be used to choose the most efficient path if there are more
      +     * than one available from the source to the target.
      +     *
      +     * @return An integer representing the cost of the transformation
      +     */
      +    int getWeight();
      +}
      +
      +
      +/**
      + * PullTransformer transforms data from one binding format to the other one which can be directly consumed
      + * 
      + * @param <S> The source data type
      + * @param <R> the target data type
      + */
      +public interface PullTransformer<S, R> extends Transformer {
      +    /**
      +     * Transform source data into the result type.
      +     * 
      +     * @param source The source data
      +     * @param context The context for the transformation
      +     * @return The transformed result
      +     */
      +    R transform(S source, TransformationContext context);
      +}
      +
      +
      + +

      Register databindings and transformers

      + +

      To regsiter one or more databindings, you need to add entries to a plain text file named as META-INF/services/org.apache.tuscany.sca.databinding.DataBinding. This service provider file needs to be on the classpath when Tuscany is bootstrapped.

      +
      +
      +# implementation classes for the databindings
      +org.apache.tuscany.sca.databinding.axiom.AxiomDataBinding;type=org.apache.axiom.om.OMElement,name=axiom
      +
      +
      + +

      The syntax is: <implementation_class_name>;type=<databinding_id>,name=<databinding_alias>

      + +

      To register one or more transformers, you need to add entries to a plain text file named as META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer. This service provider file needs to be on the classpath when Tuscany is bootstrapped.

      +
      +
      +# Implementation classes for the transformers
      +org.apache.tuscany.sca.databinding.axiom.Object2OMElement;source=java:simpleType,target=org.apache.axiom.om.OMElement,weight=10000
      +org.apache.tuscany.sca.databinding.axiom.OMElement2Object;source=org.apache.axiom.om.OMElement,target=java:simpleType,weight=10000
      +org.apache.tuscany.sca.databinding.axiom.OMElement2String;source=org.apache.axiom.om.OMElement,target=java.lang.String,weight=40
      +org.apache.tuscany.sca.databinding.axiom.OMElement2XMLStreamReader;source=org.apache.axiom.om.OMElement,target=javax.xml.stream.XMLStreamReader,weight=10
      +org.apache.tuscany.sca.databinding.axiom.String2OMElement;source=java.lang.String,target=org.apache.axiom.om.OMElement,weight=40
      +org.apache.tuscany.sca.databinding.axiom.XMLStreamReader2OMElement;source=javax.xml.stream.XMLStreamReader,target=org.apache.axiom.om.OMElement,weight=10
      +
      +
      + +

      The syntax is: <implementation_class_name>;source=<source_databinding_id>,target=<target_databinding_id>,weight=<cost_of_the_transformation>

      + +

      TODO List

      + +
        +
      • Support Collection or Array data types
      • +
      • Better support interface/operation level databinding mappings
      • +
      • Support databinding for java types which can be used for multiple datatypes, for example, InputStream or String can be used to represent various formats
      • +
      • Better support exception/fault
      • +
      • Support application data based introspection of operations
      • +
      + +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-downloads-documentations.html b/site/trunk/site-publish/tuscany-downloads-documentations.html new file mode 100644 index 0000000000..8058479d02 --- /dev/null +++ b/site/trunk/site-publish/tuscany-downloads-documentations.html @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany Downloads & Documentations + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > General > Tuscany Downloads & Documentations + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + + + + + +

      Tuscany Release Downloads and Documentation (Stable releases)

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Project Release Download Documentation Description
      SCA Java 1.x Latest guides here Infrastructure implemented in Java for developing/running SCA applications
      SCA Java Travel Sample 1.x See README file Sample SCA Java application for Tuscany SCA Java 1.x
      SCA Java 2.x Latest guides here Infrastructure implemented in Java for developing/running SCA applications
      SCA Native Latest guides here Infrastructure implemented in C++ for developing/running SCA applications
      SDO Java Latest guides here Implements SDO in Java
      SDO C++ Latest guides here Implements SDO in C++
      DAS Latest guides here Provides different DAS implementations for different data source types
      +
      + + + +

      Tuscany Nightly Build Downloads (Built against trunk, latest code)

      + +

      These nightly builds are listed here as an aid for Tuscany developers testing the latest code, they ARE NOT INTENDED FOR USE BY USERS. If you need a recent change thats not yet available in an official release then please do pester us to do a release.

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Nightly Build Download Build Status Log Win32 bin Win32 src Linux bin Linux src Description
      SCA Java 1.x Status Log Latest nightly build for Java SCA 1.x
      SCA Java 2.x Status Log sca-all .zipsca-all-src .zipsca-all .tar.gzsca-all-src .tar.gz Latest nightly build for Java SCA 2.x
      SDO Java Status Log Win32 bin Win32 src Linux bin Linux src Latest Nightly build for SDO Java
      DAS Java Status Log Win32 bin Win32 src Linux bin Linux src Latest Nightly build for DAS Java
      +
      + + +

      Documentation

      + +

      Java SCA Documentation Menu
      +SDO Overview
      +DAS Overview
      +Tuscany cwiki & Website Structure

      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-downloads.html b/site/trunk/site-publish/tuscany-downloads.html new file mode 100644 index 0000000000..f9dd213e52 --- /dev/null +++ b/site/trunk/site-publish/tuscany-downloads.html @@ -0,0 +1,132 @@ + + + + + + + Tuscany Downloads : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Menus > General > Tuscany Downloads + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + +
      + + + + + +
      Tuscany SDO
      +
      Tuscany DAS
      + +

      Tuscany Downloads and Documentation

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Project Download DocumentationDescription
      SCA JavaLatest guides hereInfrastructure implemented in Java to run SCA applications
      SCA Native Infrastructure implemented in C++ to run SCA applications
      SDO Java Implements SDO in Java
      SDO C++ Implements SDO in C++
      DAS Provides different DAS implementations for different data source types
      +
      +
      +
      +
      +
      + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-downloads2-java-sca.html b/site/trunk/site-publish/tuscany-downloads2-java-sca.html new file mode 100644 index 0000000000..4c3849cfc3 --- /dev/null +++ b/site/trunk/site-publish/tuscany-downloads2-java-sca.html @@ -0,0 +1,168 @@ + + + + + + + Tuscany Downloads2 Java SCA : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Tuscany Downloads2 Java SCA + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + + +
      + + + + +
      Development
      + +

      Tuscany Downloads

      + +

      These are the latest available releases of the Apache Tuscany sub-projects

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Project  
      Java SCA 0.90 (June 2007)Release NotesChanges
      Java SDO 1.0 Beta1 (May 2007)Release Notes
      Java DAS M2 (Nov 2006)Release Notes
      C++ Native M3 (May 2007)Release Notes
      C++ SDO M3 (May 2007)Release Notes
      + +

      Previous releases are avaiable here

      + +

      Java SCA 0.90 (June 2007) Distributions

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Windows  
      apache-tuscany-sca-0.90-incubating.zipascmd5
      apache-tuscany-sca-0.90-incubating-src.zipascmd5
      *nix  
      apache-tuscany-sca-0.90-incubating.tar.gzascmd5
      apache-tuscany-sca-0.90-incubating-src.tar.gzascmd5
      +
      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-downloads2-java-sdo.html b/site/trunk/site-publish/tuscany-downloads2-java-sdo.html new file mode 100644 index 0000000000..e2b3dbb409 --- /dev/null +++ b/site/trunk/site-publish/tuscany-downloads2-java-sdo.html @@ -0,0 +1,158 @@ + + + + + + + Tuscany Downloads2 Java SDO : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Tuscany Downloads2 Java SDO + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + + +
      + + + + +
      Development
      + +

      Tuscany Downloads

      + +

      These are the latest available releases of the Apache Tuscany sub-projects

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Project  
      Java SCA 0.90 (June 2007)Release NotesChanges
      Java SDO 1.0 Beta1 (May 2007)Release Notes
      Java DAS M2 (Nov 2006)Release Notes
      C++ Native M3 (May 2007)Release Notes
      C++ SDO M3 (May 2007)Release Notes
      + +

      Previous releases are avaiable here

      + +

      Java SDO 1.0 Beta1 (May 2007) Distributions

      + + + + + + + + + + + + + + + + + + + + + + +
      Windows  
      apache-tuscany-sdo-1.0-incubating-beta1-bin.zipascmd5
      *nix  
      apache-tuscany-sdo-1.0-incubating-beta1-bin.tar.gzascmd5
      +
      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-downloads2.html b/site/trunk/site-publish/tuscany-downloads2.html new file mode 100644 index 0000000000..fe774058b4 --- /dev/null +++ b/site/trunk/site-publish/tuscany-downloads2.html @@ -0,0 +1,133 @@ + + + + + + + Tuscany Downloads2 : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Tuscany Downloads2 + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + + +
      + + + + +
      Development
      + +

      Tuscany Downloads

      + +

      These are the latest available releases of the Apache Tuscany sub-projects

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Project  
      Java SCA 0.90 (June 2007)Release NotesChanges
      Java SDO 1.0 Beta1 (May 2007)Release Notes
      Java DAS M2 (Nov 2006)Release Notes
      C++ Native M3 (May 2007)Release Notes
      C++ SDO M3 (May 2007)Release Notes
      + +

      Previous releases are avaiable here

      +
      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-maven-archetypes.html b/site/trunk/site-publish/tuscany-maven-archetypes.html new file mode 100644 index 0000000000..b17f710a1b --- /dev/null +++ b/site/trunk/site-publish/tuscany-maven-archetypes.html @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tuscany Maven Archetypes : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +   + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + +
      + +  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > Tuscany Maven Archetypes + + + + User List | Dev List | Issue Tracker   + +
      + + + + + + + + + + + + +
      + + +
      + + + + +
      + +
      + + + +
      + + + + + + + + + +

      Tuscany Maven Archetypes

      + +

      Tuscany provides some Maven archetypes to make it easy to get going using Tuscany. Maven archetypes provide a simple way to create a project thats configured with exactly what you need to develop your application. You don't need to download, install, or pre-configure Tuscany or your environment, thats all done for you automatically, all you need pre-installed is Maven and Java.

      + +

      To give it a try run the following command:

      + +
      +
      +mvn archetype:generate -DarchetypeCatalog=http://tuscany.apache.org
      +
      +
      + +

      That will list out the available archetypes and ask you to choose which one you want:

      + +
      +
      +Choose archetype:
      +1: http://tuscany.apache.org -> tuscany-contribution-jar (Create an SCA contribution JAR)
      +2: http://tuscany.apache.org -> tuscany-quickstart (Create a Tuscany SCA and JSP project)
      +3: http://tuscany.apache.org -> tuscany-quickstart-stripes (Create a Tuscany SCA and Stripes Web Framework project)
      +4: http://tuscany.apache.org -> tuscany-quickstart-jsf (Create a Tuscany SCA and JSF project)
      +Choose a number:  (1/2/3/4):
      +
      +
      + +

      You are then prompted to answer several questions about the project such as the Maven group and artifact IDs, Java package names etc. Some of those will show default values before the prompt so you can just hit enter to take the default. Thats it, and then the Maven project is created in a folder in the current directory named after the artifactid you entered.

      + +

      The following shows the console session for creating an SCA contribution JAR:

      +
      +
      +Choose a number:  (1/2/3/4): 4
      +Define value for groupId: : org.myco.sca.test
      +Define value for artifactId: : scatest
      +Define value for version:  1.0-SNAPSHOT: :
      +Define value for package:  org.myco.sca.test: :
      +Confirm properties configuration:
      +groupId: org.myco.sca.test
      +artifactId: scatest
      +version: 1.0-SNAPSHOT
      +package: org.myco.sca.test
      + Y: :
      +[INFO] ------------------------------------------------------------------------
      +[INFO] BUILD SUCCESSFUL
      +[INFO] ------------------------------------------------------------------------
      +[INFO] Total time: 1 minute 15 seconds
      +[INFO] Finished at: Tue Mar 31 15:08:45 BST 2009
      +[INFO] Final Memory: 8M/14M
      +[INFO] ------------------------------------------------------------------------
      +
      +
      + +

      That will create a Maven project in a folder named scatest with the following directory structure and files:

      +
      +
      +scatest\pom.xml
      +scatest\src\main\java\org\myco\sca\test\HelloworldImpl.java
      +scatest\src\main\java\org\myco\sca\test\HelloworldService.java
      +scatest\src\main\resources\helloworld.composite
      +scatest\src\main\resources\META-INF\sca-contribution.xml
      +
      +
      + +

      When using one of the archetypes which create webapp projects the pom.xml is configured with the maven Jetty plugin so you can run the webapp right away without needing to install the WAR file into an appserver by using the command "mvn jetty:run". The following shows an examaple of this using the tuscany-quickstart archetype:

      + +
      +
      +> mvn archetype:generate -DarchetypeCatalog=http://tuscany.apache.org
      +[INFO] Scanning for projects...
      +. . .
      +Choose archetype:
      +1: http://tuscany.apache.org -> tuscany-contribution-jar (Create an SCA JAR contribution project)
      +2: http://tuscany.apache.org -> tuscany-contribution-zip (Create an SCA ZIP contribution project)
      +3: http://tuscany.apache.org -> tuscany-quickstart (Create a simple SCA webapp project)
      +4: http://tuscany.apache.org -> tuscany-quickstart-jsf (Create a Webapp using SCA and JSF)
      +5: http://tuscany.apache.org -> tuscany-quickstart-stripes (Create a Webapp using SCA and the Stripes Web Framework)
      +Choose a number:  (1/2/3/4/5): 3
      +Define value for groupId: : mygroup
      +Define value for artifactId: : mytest
      +Define value for version:  1.0-SNAPSHOT: :
      +Define value for package:  mygroup: :
      +Confirm properties configuration:
      +groupId: mygroup
      +artifactId: mytest
      +version: 1.0-SNAPSHOT
      +package: mygroup
      + Y: :
      +[INFO] ------------------------------------------------------------------------
      +[INFO] BUILD SUCCESSFUL
      +[INFO] ------------------------------------------------------------------------
      +
      +> cd mytest
      +> mvn jetty:run
      +. . .
      +[INFO] Started Jetty Server
      +
      +
      + +

      The webapp runs at the context path of the artifact name on port 8080 so on a web browser go to http://localhost:8080/mytest/ and you should see a page showing:

      + +

      Calling HelloworldService sayHello("world") returns:
      +Hello world

      + +
      + +
      + +
      + +
      + + +
      + + + + + + + + + + + + + website stats + + + + + + + + + + + diff --git a/site/trunk/site-publish/tuscany-portal.html b/site/trunk/site-publish/tuscany-portal.html new file mode 100644 index 0000000000..609f6b99b1 --- /dev/null +++ b/site/trunk/site-publish/tuscany-portal.html @@ -0,0 +1,285 @@ + + + + + + + Tuscany Portal : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > Tuscany Portal + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + + + + + + +
      + + + + + + + + + + + + + + + + + +
      Apache Tuscany
      +

      + + + + + + + + + + + + + + + + + + + +
      + + Apache Tuscany + (rss_2.0) +
      + Apache Tuscany SCA Java 1.2 released + + (Apr 27, 2008 20:20) +
      + Tuscany SCA support for Relax-ws interfaces + + (Feb 12, 2008 03:23) +
      + Apache Tuscany SCA 1.1 Release Announced + + (Feb 06, 2008 17:06) +
      + Series of Webinar on SCA by OASIS in December + + (Nov 26, 2007 15:27) +
      + Upcoming SCA skills shortage + + (Nov 16, 2007 09:04) +
      +

      +
      +
      PlanetApache.org
      +

      + + + + + + + + + + + + + + + + + + + +
      + + Planet Apache + (rss_2.0) +
      + Sylvain Wallez: Speeding up mobile web applications + + (Apr 29, 2008 15:54) +
      + Ted Leung: Erlang == CGI? + + (Apr 29, 2008 14:12) +
      + Ben Laurie: Fun With FreeBSD and gmirror + + (Apr 29, 2008 12:49) +
      + Dave Johnson: Social Software at JavaOne 2008 + + (Apr 29, 2008 12:00) +
      + Trustin Lee: Long technical IRC conversation + + (Apr 29, 2008 11:21) +
      +

      +
      +
      Planet WebServices.org
      +

      + + + + + + + + + + + + + + + + + + + +
      + + Planet Webservices + (rss_2.0) +
      + Afkham Azeez: Gold Award for WSO2 WSAS - Data Services + + (Apr 29, 2008 11:28) +
      + Ajith Ranabahu: Ubuntu 8.04 - First Impression + + (Apr 29, 2008 01:10) +
      + Sam Ruby: Sleep Quirks — Debugged! + + (Apr 28, 2008 19:17) +
      + Sanjiva Weerawarana: Upgraded to Ubuntu 8.04 + + (Apr 28, 2008 16:53) +
      + Sanjiva Weerawarana: Shell scripts as Web services?? + + (Apr 28, 2008 16:50) +
      +

      +
      + +
      +
      +
      +
      +
      + + + + + website stats + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-sca-databinding-faq.html b/site/trunk/site-publish/tuscany-sca-databinding-faq.html new file mode 100644 index 0000000000..9c2489b29b --- /dev/null +++ b/site/trunk/site-publish/tuscany-sca-databinding-faq.html @@ -0,0 +1,130 @@ + + + + + + + Tuscany SCA - DataBinding - FAQ : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java Subproject > Tuscany SCA Java - FAQ > Tuscany SCA - DataBinding - FAQ + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +
      + + + + + +
      Tuscany SDO
      +
      Tuscany DAS
      + +

      SCA DataBinding FAQs

      + +
        +
      1. What is he difference between Logical Type and Physical Type? From the comments in DataType.java, logical type is used by the assembly, physical type is used by the runtime, and for Tuscany Java the physical type is always a Java Type
        + The logical type represents the data type the user thinks is flowing across a wire. This could be a Java type, a XML type, a CORBA type, whatever depending on the /logical/ service contract defined in the assembly.
        + The physical type is the actual representation of that type that is flowed by the runtime. In the Java runtime this will always be a Java type (i.e. some subclass of Object). In some cases it will be the same as the logical type - e.g. when a Java component calls another Java component over a local wire using a Java interface then both logical and physical types will be the same. In many cases though they will be different - for example, if the service contract was WSDL then the logical type would be the XML type used by the WSDL.
        + Within the runtime the same logical type may have different physical forms. For example, the same XML document could be represented physically as a DOM, a StAX stream, an SDO, a JAXB object, or an AXIOM stream. The framework supports conversion between these different physical forms.
      2. +
      3. What is the role of a data mediator interceptor? Can you cite an example of how mediation works say for a component A with reference R that references a service S in component B.?
        + The interceptor gets added by the connector. A's outbound wire and B's inbound wire describe the datatypes their implementations can support. When the wire ends are connected the connector adds the interceptor if mediation is needed.
        + One job of a transport binding is to convert an in-memory physical representation to a suitable set of bits on the network (aka serialization and deserialization). Rather than reinvent the different transports we reuse existing implementations such as Axis2 or RMI. As such we need to convert the physical representation on our internal wire with that used by the transport. So, for example, Axis2 only understands AXIOM so in a reference we need to convert the user's physical representation to AXIOM and in a service we need to convert the AXIOM generated by the transport into the form the user's implementation requires. The steps could be described as follows: +
          +
        1. A calls reference R with physical Java object X(java)
        2. +
        3. X is placed on R's outbound wire
        4. +
        5. data mediation converts X(java) to AXIOM object X(axiom)
        6. +
        7. X(axiom) is placed on inbound wire for the Axis2 binding
        8. +
        9. Axis2 binding serializes X(axiom) onto the network as XML
        10. +
        11. Axis2 binding on the target deserializes the XML from the network to X(axiom)
        12. +
        13. X(axiom) is placed on the outbound wire from the Axis2 binding
        14. +
        15. data mediation converts X(axiom) to X(java) as needed by the target component
        16. +
        17. X(java) is placed on B's inbound wire
        18. +
        19. the target instance for B is invoked passing in X(java)
          +. An important thing to note here is that from the fabric's perspective we are dealing with two physical wires: the wire on the client connecting the source component A to the outbound Axis2 transport and the wire on the server connecting the inbound Axis2 transport to the target component B.
          +From a global perspective there is one logical wire from A to B but because A and B are located on two different runtimes that logical wire gets split into two physical wires A->net and net->B.
        20. +
        +
      4. +
      + +
      +
      +
      +
      +
      + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-sca-faq.html b/site/trunk/site-publish/tuscany-sca-faq.html new file mode 100644 index 0000000000..bf02b0232a --- /dev/null +++ b/site/trunk/site-publish/tuscany-sca-faq.html @@ -0,0 +1,136 @@ + + + + + + + + Tuscany SCA - FAQ + + + + + + + +
      +  Apache Tuscany > Index > Tuscany SCA - FAQ + +
      + + + + + + +
      +
      + +
      + +
      + Added by S Venkatakrishnan, last edited by jmarino on Mar 02, 2007 +  (view change) + +
      + +
      +
      +

      Tuscany SCA - Frequently Asked Questions

      + + + +
      + +
      + Children + + Show Children + +
      + + +
      +
      + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-sca-java-developer-guide.html b/site/trunk/site-publish/tuscany-sca-java-developer-guide.html new file mode 100644 index 0000000000..5f695d4545 --- /dev/null +++ b/site/trunk/site-publish/tuscany-sca-java-developer-guide.html @@ -0,0 +1,124 @@ + + + + + + + + Tuscany SCA Java Developer Guide + + + + + + + +
      +  Apache Tuscany > Index > SCA Java > SCA Java Documentation > Tuscany SCA Java Developer Guide + +
      + + + + + + +
      +
      + +
      + +
      + Added by Shelita Overton, last edited by Shelita Overton on Feb 21, 2007 +  (view change) + +
      + +
      +
      +

      Welcome to the Apache Tuscany SCA Developer guide. Here you will find information aimed to help you develop SCA components and applications using Tuscany's Java SCA implementation.

      + + +

      Getting Started
      +Architecture Guide
      +Setting up an "SCA Developer" environment

      +
      + + +
      +
      + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-sca-java-extension-developer-guide.html b/site/trunk/site-publish/tuscany-sca-java-extension-developer-guide.html new file mode 100644 index 0000000000..80f9e97557 --- /dev/null +++ b/site/trunk/site-publish/tuscany-sca-java-extension-developer-guide.html @@ -0,0 +1,104 @@ + + + + + + + Tuscany SCA Java Extension Developer Guide : Apache Tuscany + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > Java SCA Subproject > SCA Java Documentation > Tuscany SCA Java Extension Developer Guide + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +
      +
      General
      + + + + + +
      + +

      Welcome to the Apache Tuscany SCA Extension Developer Guide. Here you will find information aimed to help you develop SCA extensions.

      + +

      This is a work in progress, so please contribute and comment so we can make this valuable to you

      +
      +
      +
      +
      +
      + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-sca-java-faq.html b/site/trunk/site-publish/tuscany-sca-java-faq.html new file mode 100644 index 0000000000..b71cdb921f --- /dev/null +++ b/site/trunk/site-publish/tuscany-sca-java-faq.html @@ -0,0 +1,958 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany SCA Java - FAQ + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > Tuscany SCA Java - FAQ + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + + + + + +

      Welcome to the Apache Tuscany Java SCA FAQ page. Please help to keep the information on this page current.

      + +


      +
      Apache Tuscany SCA Frequently Asked Questions
      + + + +

       

      +
      + +

      + +
      Build Questions
      + + +

      + +
      What version of Java do I need?
      + +

      Both IBM and Sun JDK 1.5 are known to work and are used regularly by our development community.

      + +

      JDK1.4 will not work as the Tuscany SCA code base relies on some of the features of JDK1.5 such as generics and annotations.

      + +

      JDK1.6 can be problematic depending on what version you are running with. The problems are usually due to bundled versions of either STaX or JAXB being in conflict with the versions we are using in Tuscany.

      + +

      If you are getting errors that look like the following stack trace

      + +
      +
      java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI 
      +       (from jar:file:/home/jim/.m2/repository/com/sun/xml/bind/jaxb-impl/2.1.5/jaxb-impl-2.1.5.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) 
      +       needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. 
      +       (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)
      +       at com.sun.xml.bind.v2.model.impl.ModelBuilder.<clinit>(ModelBuilder.java:172)
      +       at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:422)
      +       at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:286)
      +       at com.sun.tools.xjc.reader.xmlschema.bindinfo.BindInfo.getJAXBContext(BindInfo.java:332)
      +
      +
      + +

      Then it's related to JDK 6 shipping with its own version of JAXB impl. Up to JDK 6 Update 3, the JDK ships with JAX-WS 2.0 (which includes JAXB 2.0), but Tuscany requires JAXB 2.1. There are some possible solutions to this problem:

      + +
        +
      1. Upgrade your JDK to 1.6.0_04 or above, which will include JAX-WS (and JAXB) 2.1
      2. +
      3. Copy the version 2.1 jaxb-api.jar or jaxws-api.jar (you can probably find them in your local maven repo) to <JAVA_HOME>/lib/endorsed to override the API jars that ship with the JDK
      4. +
      5. Use the -Djava.endorsed.dir=<a folder containing our JAXB jars> to override the JAXB from JDK 6.
      6. +
      + + +

      If you see an error like the following

      + +
      +
      javax.xml.stream.FactoryConfigurationError: Provider
      +javax.xml.stream.XMLInputFactory could not be
      +instantiated: java.lang.InstantiationException
      +at
      +javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:158)
      +
      +
      + +

      It's the same problem but related to the version of the STaX API in use. TODO - locate the specific jar that causes the problem

      + +

      + +
      What version of Maven do I need?
      + +

      To build the Apache Tuscany source code that you have checked out of subversion you need to install Maven. The build is know to work relatively reliably with Maven 2.0.5. People have had it working with later versions but it you are encountering unpredicatbility in the build then give 2.0.5 a go.

      + +

      + +
      Why does the Tuscany code I checked out of Subversion not build?
      + +

      If you are taking code out of the trunk of the Tuscany Subversion repository then you may have been unlucky and picked up a revision of the code where the build is broken. As trunk is where the development takes place this happens now and again although the development community tries to avoid build breaks if at all possible and tries to fix them quickly when they do happen.

      + +

      There are may and various other things that can cause your build to break. Its worth checking on the mail list that the trunk is building. Assuming that it is we will usually ask you to do the following as a basic level set.

      + +

      Stop any IDE you may have running
      +Check out the latest trunk revision

      + +

      cd mytuscanydir
      + svn checkout https://svn.apache.org/repos/asf/incubator/tuscany/java/

      + +

      or (if you already have a version of the code)

      + +

      svn update https://svn.apache.org/repos/asf/incubator/tuscany/java/

      + +

      Clean all the maven projects

      + +

      cd mytuscanydir/sca
      + mvn clean

      + +

      Remove all the sca artifacts from the local maven repository by removing (or renaming) all of the directories under

      + +

      .m2\repository\org\apache\tuscany\sca

      + +

      Rebuild sca

      + +

      cd mytuscanydir/sca
      + mvn

      + +

      If it still doesn't work then get back on the mail list

      + +

      + +
      Java Heap error during compilation
      + +

      I always get a "Java heap space" error during the build while the itests are running these days. Runs fine if I build from within the itests folder but building from the top sca folder always fails.

      + +

      try MAVEN_OPTS="-Xmx1024m -Xms512m" or You can also increase the memory options in the sca pom 1, in the surefire plugin configuration section.

      + +

      1 https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/pom.xml

      + +

      + +
      Java PermGen error during compilation
      + +

      I always get a similar to the following when compiling Tuscany SCA

      + +
      +
      +java.lang.OutOfMemoryError: PermGen space
      +       at java.lang.ClassLoader.defineClass1(Native Method)
      +       at java.lang.ClassLoader.defineClass(Unknown Source)
      +
      +
      + +

      try MAVEN_OPTS="-XX:MaxPermSize=256m". This works on the Sun JDK6. Check the JDK document for other JDKs

      + +

      + +
      How do I generate Eclipse projects from the source distribution or from Subversion trunk?
      + +

      If you have unpacked the source distribution or have checked out all of the code under the tuscany/java/sca directory in subversion then you should end up with a source directory containing something like:

      +
      +
      demos
      +distribution
      +itest
      +modules
      +samples
      +tools
      +pom.xml
      +
      +
      +

      You can build the source from using maven with the command

      +
      +
      +mvn
      +
      +
      +

      If you are going to use Eclipse with the Tuscany code, first ensure that Eclipse is aware of your Maven setup, which you can do using the command

      +
      +
      +mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
      +
      +
      +

      For more details on using Eclipse with Maven, look at this page: http://maven.apache.org/guides/mini/guide-ide-eclipse.html
      +You can then build Eclipse projects for all the modules in the project using the command

      +
      +
      +mvn -Peclipse eclipse:eclipse
      +
      +
      +

      This builds ".classpath" and ".project" files for each modules. The easiest thing to do is import all of these generated projects. In Eclipse choose "File/Import/Existing Projects Into Workspace". From the wizard select your source directory and Eclipse should now find all of the Eclipse projects that have been generated.

      + +

      If you imported all modules into Eclipse you should find that project dependencies are satisfied by reference to other Tuscany SCA projects in your workspace. This is convenient for debugging as all Tuscany SCA source it now available in your workspace.

      + +

      + +
      How do I generate an Eclipse WTP project for the WebApp samples?
      + +

      If you're using Eclipse WTP and want to get WTP Web Projects generated for our Webapp samples you can simply pass a -Dwtpversion=1.5 option tothe usual mvn eclipse:eclipse command, like this:

      +
      +
      +mvn -Dwtpversion=1.5 -Peclipse eclipse:eclipse
      +
      +
      +

      The magic -Dwtpversion=1.5 option will add the WTP Web project nature to all the Eclipse projects with <packaging>war</packaging> in their Maven pom.xml. You'll then be able to add these projects to a WTP Tomcat or Geronimo Server configuration, to publish and run them straight from your Eclipse workspace.

      + +

      + +
      When running the WSConfidentialityTestCase using IBM JDK I experience java.lang.ExceptionInInitializerError arising from the base java.security.InvalidKeyException: Public key presented not for certificate signature - how do I get over this?
      + +

      To get over this exception please go over to the jre\lib\security\java.security of the IBM JDK installation and set up the security providers as follows.

      +
      +
      #
      +# List of providers and their preference orders:
      +#
      +security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
      +security.provider.3=com.ibm.jsse2.IBMJSSEProvider2
      +security.provider.2=com.ibm.crypto.provider.IBMJCE
      +security.provider.4=com.ibm.security.jgss.IBMJGSSProvider
      +security.provider.5=com.ibm.security.cert.IBMCertPath
      +security.provider.6=com.ibm.security.sasl.IBMSASL
      +
      +
      + +

      +
      How do I run the samples from a release candidate before the maven artifacts have been published?
      + + +

      The samples in the binary distribution won't build with mvn till we actually release and the artifacts get published to the live maven repository. To test things you can bypass this by setting up a mirror pointing to the release candidate maven repository. You do that by adding the following to your maven settings.xml file:

      + +
      +
      +   <mirrors>
      +    <mirror>
      +      <id>ant.staging</id>
      +      <url>http://people.apache.org/~antelder/tuscany/1.0-RC1a/maven</url>
      +      <mirrorOf>apache.incubator</mirrorOf>
      +
      +
      +    </mirror>
      +
      +
      + +

      The settings.xml is in a .m2 folder in your home directory, eg mines at: "C:\Documents and Settings\Administrator\.m2". If you don't have one then we've an example at: settings.xml

      + +

      +
      How do I turn on more trace output?
      + +

      Tuscany uses the JDK logger for writing out info, warning etc. How much gets written out is controlled by a logging.properties file. We don't ship a file with Tuscany as we rely in the default INFO logging level that Java assumes. If you wan't to change the defaults then you can create (or edit) a logging.properties file in you jre/lib directory. Foe example, if you're using the IBM JDK you should end up with the file

      + +
      +
      +C:\thedirwhereiinstalledjava\jre\lib\logging properties
      +
      +
      + +

      You might want to go and change the logging level by setting it to FINE to get more information generally

      + +
      +
      +.level= FINE
      +
      +
      + +

      or for getting more information printed on the console

      + +
      +
      +java.util.logging.ConsoleHandler.level = INFO
      +
      +
      + +

      See here for some overview information about JDK logging.

      + +

      +
      How do I remote debug Tuscany Java SCA applications from Eclipse?
      + + +

      There are many good articles about how to turn on java remote debugging, for exampe, here's one

      + +

      The long and short of it is that you need to tell the JVM to list on a port for debug connections. For example, here the Calculator sample is being debugged.

      + +
      +
      +java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator.jar;.calculator.CalculatorClient
      +Listening for transport dt_socket at address: 8000
      +3 + 2=5.0
      +3 - 2=1.0
      +3 * 2=6.0
      +3 / 2=1.5
      +
      +
      + +

      The important bits are the arguments starting -X. Note the address is set to port 8000. In Eclipse you can then simply open the debug dialog and create a new "Remote Java Application" profile specifying the port of 8000 to match the above command line.

      + +

      Assuming that you have the Tuscany SCA source available to Eclipse you can then debug through the calculator sample and the Tuscany SCA code.

      + +

      If you want to remote debug some tests running in the maven build then you can either do.

      +
      +
      +set MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"
      +
      +
      +

      or use the following surefire option

      +
      +
      +-Dmaven.surefire.debug . 
      +
      +
      + +

      This opens the debugger on port 5005 with suspend=y. You then run mvn as you normally would and connect Eclipse to the running test as described above.

      + +

      If you want to debug through a webapp running in tomcat you can set up tomcat as follows:

      +
      +
      +set JPDA_TRANSPORT=dt_socket
      +set JPDA_ADDRESS=5005
      +set JPDA_SUSPEND=y
      +tomcat-install\bin>catalina jpda run
      +
      +
      +

      Again from eclipse choose to remote debug.

      + +

      +
      Maven locks up during a build. What's going on?
      + +

      The short answer is that we don't know. However we have seen this occasionally on Windows and is some cases it can be tracked back to some kind of interaction between Maven and other applications running on the machine. So the first thing to try is to stop all other applications that you are running and retry the Maven build and see if that helps.

      + +

      +
      When I deploy my war in tomcat,while thereare no previous errors in the
      +stack trace!
      + + +

      When the StandardContext catches errors like this there will be additional
      +messages about the problem written to the logs in the Tomcat log directory,
      +please check to see what the errors are.

      + +

      +
      My build fails when I get any test failure. Is there a way to make progress?
      + +

      You can use the following mvn command to ignore test failures.

      +
      +
       
      +mvn clean install -fn 
      +
      +
      +

      + +

      This depends on what you want to do! With -fn the tests still run with -
      +Dmaven.test.skip=true they don't. Not running the tests makes the build much
      +faster but without running the tests you don't know what problems there
      +might be with the jars that get built. A key thing is that with -fn a test
      +failure in one module does not stop the build of other modules, but, the jar
      +for the module with the test failure does not get built so if you want to
      +ignore a test failure but still rebuild a module then you need to use -
      +Dmaven.test.skip=true. On the other hand for things like the itest modules
      +you just want to see the tests results so it doesn't make much sense to use
      +-Dmaven.test.skip=true but -fn can be useful to see how good or bad the
      +state of the code is.

      + +

      +
      Is there a public build of Tuscany so I can check progress or build integrity?
      + + +

      There is a Continuum build at:
      +http://vmbuild.apache.org/continuum/buildResults.action?projectGroupId=19&projectId=277

      + +

      You can also use the Tuscany Continuum build to check for which commits are incorportated into the build.

      + +

      + +
      Maven Questions
      + + +

      Implementation Java Questions

      + +

      What is the format for specifying multiple interfaces with the @Service annotation?

      +
      +
      +@Service(interfaces={Interface1.class, Interface2.class, Interface3.class} )
      +public class ServiceImpl implements Interface1, Interface2, Interface3{
      + ...
      +}
      +
      +
      + +

      Why are references not being injected into my component?

      +

      If you have a component implementation that looks something like...

      +
      +
      +public class ServiceImpl implements ServiceInterface1{
      + @Reference
      + ServiceInterface2 serviceReference1;
      +
      + @Reference
      + private ServiceInterface2 serviceReference2;
      +
      + @Reference
      + protected ServiceInterface2 serviceReference3;
      +
      + @Reference
      + public ServiceInterface2 serviceReference4;
      +
      + ...
      +}
      +
      +
      +

      Then in you operation you will find that serviceReference1 and serviceReference2 are null because SCA will only inject references into fields marked protected or public. This is true for the other injecting annotations, for example, @Callback, @ConversationId and @Context.

      + +

      How to deploy EJBs (stateless session bean, EJB2) in Tuscany?

      + +

      There are different options for this:

      +
        +
      • Use binding.ejb to expose an SCA service as a stateless session bean. You can find some experimental implementation using OpenEJB.
      • +
      • Develop EJBs using JEE programming model and use them as SCA component implementations (implementation.ejb).
      • +
      + + +

      Is it possible to use the calculator-distributed example to run on multiple hosts?

      + +

      The calculator-distributed is configured to run in multiple VMs. The node launchers are hard coded to talk to the domain at "http://localhost:9990".

      +
      +
      +   (In each of the node launcher classes, the 'NodeLauncher.main(new String[] {"http://localhost:9990/node-config/NodeC"});' statement does this) 
      +
      +
      +

      In order to run the domain in a remote location, change the localhost to the host where domain is running in above mentioned statement .

      + +

      + +
      Binding Questions
      + + +

      Can I use the EJB binding to publish an SCA services as an SLSB?

      +

      Unfortunately, we only have the reference binding support for SLSB (call
      +SLSB from SCA) in Tuscany at this moment. Any contribution to support SLSB
      +service binding is welcome.

      + +

      How to return application exception in RMI binding?

      +

      RemoteException and its subclasses are usually used to represent communication issues and not treated as business exceptions by Tuscany (Ref.: JAXWS Specification v2.1 section 3.7). In order to return application pecific exception, you can add the RemoteException on the "throws" clause instead of having the user exception extend the RemoteException.

      + +

      Is it possible to configure Tuscany to expose a service (e.g. JSON-RPC) that communicates over https? If yes then how to achieve this?

      +

      Yes, it is possible by enhancing the Tuscany code where the embedded Tomcat Server is created.
      +We need to create few properties on the HHTP connector as follows:

      + +

      if (isSSLEnabled)

      +
      Unknown macro: { + IntrospectionUtils.setProperty(httpConnector, "sslProtocol", "TLS"); + IntrospectionUtils.setProperty(httpConnector, "keystoreFile",getPath()+"/conf/tomcat.keystore"); + IntrospectionUtils.setProperty(httpConnector, "keystoreType", "JKS"); + IntrospectionUtils.setProperty(httpConnector, "clientAuth", "false"); + httpConnector.setProtocol( "SSL"); + }
      +

      + +

      + +
      DataBinding Questions
      + + +

      + +
      What is he difference between Logical Type and Physical Type?
      + +

      The logical type represents the data type the user thinks is flowing across a wire. This could be a Java type, a XML type, a CORBA type, whatever depending on the /logical/ service contract defined in the assembly.
      + The physical type is the actual representation of that type that is flowed by the runtime. In the Java runtime this will always be a Java type (i.e. some subclass of Object). In some cases it will be the same as the logical type - e.g. when a Java component calls another Java component over a local wire using a Java interface then both logical and physical types will be the same. In many cases though they will be different - for example, if the service contract was WSDL then the logical type would be the XML type used by the WSDL.
      + Within the runtime the same logical type may have different physical forms. For example, the same XML document could be represented physically as a DOM, a StAX stream, an SDO, a JAXB object, or an AXIOM stream. The framework supports conversion between these different physical forms.

      +
      +
      +
        +
      1. What is the role of a data mediator interceptor? Can you cite an example of how mediation works say for a component A with reference R that references a service S in component B.?
        + The interceptor gets added by the connector. A's outbound wire and B's inbound wire describe the datatypes their implementations can support. When the wire ends are connected the connector adds the interceptor if mediation is needed.
        + One job of a transport binding is to convert an in-memory physical representation to a suitable set of bits on the network (aka serialization and deserialization). Rather than reinvent the different transports we reuse existing implementations such as Axis2 or RMI. As such we need to convert the physical representation on our internal wire with that used by the transport. So, for example, Axis2 only understands AXIOM so in a reference we need to convert the user's physical representation to AXIOM and in a service we need to convert the AXIOM generated by the transport into the form the user's implementation requires. The steps could be described as follows: +
          +
        1. A calls reference R with physical Java object X(java)
        2. +
        3. X is placed on R's outbound wire
        4. +
        5. data mediation converts X(java) to AXIOM object X(axiom)
        6. +
        7. X(axiom) is placed on inbound wire for the Axis2 binding
        8. +
        9. Axis2 binding serializes X(axiom) onto the network as XML
        10. +
        11. Axis2 binding on the target deserializes the XML from the network to X(axiom)
        12. +
        13. X(axiom) is placed on the outbound wire from the Axis2 binding
        14. +
        15. data mediation converts X(axiom) to X(java) as needed by the target component
        16. +
        17. X(java) is placed on B's inbound wire
        18. +
        19. the target instance for B is invoked passing in X(java)
          +. An important thing to note here is that from the fabric's perspective we are dealing with two physical wires: the wire on the client connecting the source component A to the outbound Axis2 transport and the wire on the server connecting the inbound Axis2 transport to the target component B.
          +From a global perspective there is one logical wire from A to B but because A and B are located on two different runtimes that logical wire gets split into two physical wires A->net and net->B.
        20. +
        +
      2. +
      + + +

      + +
      Contribution Questions
      + + +

      + +
      What is META-INF/sca-contribution.xml for?
      + +

      The SCA Assembly Model Specification V1.00 describes this file in section 1.10.2.3. Any composites that are named in the sca-contribution.xml file will be automatically be included in the deployable list maintained by the contribution.

      + +

      If you have a contribution in a directory say.

      + +

      /my/contribution/dir

      + +

      Then all composites, along with any other resources, under this directory will be located by the contribution service. For example, assume we have

      + +

      /my/contribution/dir/META-INF/sca-contribution.xml
      +/my/contribution/dir/mycomposite.composite

      + +

      Where sca-contribution.xml is

      + +

      <contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
      +targetNamespace="http://mycomposite"
      + xmlns:management="http://mycomposite">
      + <deployable composite="mycomposite:MyComposite"/>
      +</contribution>

      + +

      So in this case the contribution service will locate the file mycomposite.composite and, assuming it contains a composite called mycomposite:MyComposite, will present it as being deployable based on the information in sca-contribution.xml.

      + +

      + +
      What is META-INF/sca-deployables/ for?
      + +

      This is a Tuscany specific shorthand for defining deployable components, i.e. you won't find it in the SCA specifications.

      + +

      If you have a contribution in a directory say.

      + +

      /my/contribution/dir

      + +

      Then all components in composites under this directory will be located by the contribution service and any components in composites under the directory /META-INF/sca-deployables/ will automatically be included in the deployable list maintained by the contribution, for example

      + +

      /my/contribution/dir/META-INF/sca-deployables/mycomposite.composite

      + +

      + +
      Policy Framework Questions
      + + +

      + +
      What is the level of policy support in Tuscany Release 1.0 ?
      + +

      In Java SCA Release 1.0, policy intents and policysets can be defined for an SCA Domain in the definitions.xml file and specified for various SCA Artifacts in assembly composites (composite, component, services, references, bindings, implementation). With respect to processing, computing aplicable policies and applying them is concerned here is what the Release 1.0 supports:

      +
        +
      • appplicable policysets are computed only for 'binding' elements only i.e. only Interaction Policies are supported. The next release will have support for 'implementation' elements also
      • +
      • definition of policy attachments to represent axis2 config params. As sample representations of this, there are itests in the binding-ws-axis2 module and there is a sample (helloworld-ws-service-secure) that defines policies to enable ws-security in Axis2. The intents that are supported in the itests and sample are athentication, integrity and confidentiality
      • +
      • the itest and sample does not exercise confidentiality intent due to legal issues that Tuscany has with respect to distributing bouncycastle encryption provider jars.
      • +
      • support for WS-Policy attachments, annotated intents and policyset are not yet supported
      • +
      • in identifying policysets applicable to sca elements, the xpath expression in the 'appliesTo' attribute of policy sets is not yet processed as xpath since we are sorting out some specs and implementation details with this - http://www.mail-archive.com/tuscany-dev%40ws.apache.org/msg21699.html
      • +
      + + +

      +
      How do I try out/exercise the 'confidentiality' policy intent for the Axis2 WS binding ?
      + +
        +
      • First you must ensure that you are not encumbered by the legal and licensing requirements of bouncycastle. There are algorithms in the bouncycastle distributions (such as IDEA) that have patent obligations and you are responsible for sorting this out for yourself.
      • +
      • Next you must be familiar with setting up Axis2 for confidentiality. Here are some useful links for this http://wso2.org/library/234, http://wso2.org/library/174, http://wso2.org/library/255.
      • +
      • The itest in the ws-binding-axis2 module and the helloworld-ws-service-secure have definitions.xml file that define the intents and policyset for confidentiality. Change the values that have been provided in the Axis2ConfigParam policy attachment, to suit what you have defined for your application - such as the keystore, the userid and password to the keystore, the password callback handler class etc.
      • +
      • Now, specify the confidentiality intent on any of the binding.ws elements in your application composite and ensure that the bcprov-jdk15-132.jar is in the classpath.
      • +
      • Some JREs might require a bit of tweaking with the security.policy settings that deal with encryption providers. We have tried and tested this successfuly on Sun and IBM JREs.
      • +
      • For the binding-ws-axis2 tests that use keys from the keystore called tuscanyKeys.jks the following command was used to generate the very basic keystore used here +
        +
        +keytool -genkey -alias TuscanyWsUser -keyalg RSA -keystore tuscanyKeys.jks -validity 9999
        +
        +
      • +
      • The following command can be used to list the contents of the keystore +
        +
        +keytool -list -v -keystore tuscanyKeys.jks -storepass TuscanyWsUserPasswd
        +
        +
      • +
      + + + +

      + +
      Specification Questions
      + + +

      +
      Where are the specifications that Tuscany implements?
      + +

      You can find the 6 SCA technical committees here:

      + +

      http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sca-assembly
      +http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sca-policy
      +http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sca-bindings
      +http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sca-j
      +http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sca-c-cpp
      +http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sca-bpel

      + +

      Meeting minutes, documents, issues and so on are linked from the main page.

      + +

      Mailing list archives can be found here:

      + +

      http://www.oasis-open.org/archives/sca-assembly/

      + +

      http://www.oasis-open.org/archives/sca-policy/
      +http://www.oasis-open.org/archives/sca-bindings/
      +http://www.oasis-open.org/archives/sca-j/
      +http://www.oasis-open.org/archives/sca-c-cpp/
      +http://www.oasis-open.org/archives/sca-bpel/

      + +

      +
      What does the promote keyword in the composite file mean?
      + + +

      An SCA composite can be used as an implementation (implementation.composite) for a component. This is so-called recursive composition. It allows pre-assembled composites to be reused.

      + +

      "promote" can be used to make services or references declared on a component inside the composite visible for wiring at the composite level. The composite services and references can be then further configured when it's used as a component implementation at outer level.

      + +

      Hope the following samples help.

      + +
      +
      +<composite name="Composite1" xmlns:ns="http://dummy">
      +   <component name="C1">
      +           <implementation.composite name="ns:Composite2">
      +           <!-- wire ref1 to component C3's service1 -->
      +           <reference name="ref1" target="C3/service1"/>
      +           <!-- configure the service with ws binding -->
      +           <service name="svc1">
      +               <binding.ws .../>
      +           </service>
      +   </component>
      +</composite>
      +
      +
      + +
      +
      +<composite name="Composite2" targetNamespace="http://dummy"
      +xmlns:ns="http://dummy">
      +   <component name="C2">
      +           <implementation.java class="my.C2Impl">
      +   </component>
      +
      +   <!-- innerService of component C2 is promoted as svc1 -->
      +   <service name="svc1" promote="C2/innerService"/>
      +   <!-- innerReference of component C2 is promoted as ref1 -->
      +   <reference name="ref1" promote="C2/innerReference"/>
      +</composite>
      +
      +
      + + + +

      + +
      Hosting Questions
      + + +

      +
      WebSphere - java.lang.ClassNotFoundException: org.apache.tuscany.sca.host.webapp.WebSCADomain ?
      + + +

      f you are trying to run some of the Tuscany sample and demo web applications on WebSphere, you may see the following exception:

      + +
      +
      +Caused by: java.lang.ClassNotFoundException: org.apache.tuscany.sca.host.webapp.WebSCADomain
      +       at java.lang.Class.forNameImpl(Native Method)
      +       at java.lang.Class.forName(Class.java:169)
      +
      +
      + +

      The solution to this problem is that you must set application properties to use the application class loader before the parent container class loader. Then Tuscany class dependencies packaged in your web app will be successfully loaded and resolved.

      + +

      A step by step explanation and walk through is given my Jean-Sebastien at http://jsdelfino.blogspot.com/2007/10/how-to-use-apache-tuscany-with.html.

      + +

      +
      WebSphere - java.lang.IllegalArgumentException: http://www.w3.org/2001/XMLSchema?
      + +

      This means that, for some reason, you don't have the correct XML parser packages in your webapp. Usually including Xerces and Xalan implementations in your webapp will solve this problem. Arrange for the files xercesImpl.2.8.1.jar and xalan-2.7.0.jar to be copied to the webapp lib folder

      + +

      +
      WebSphere - java.net.ConnectException: Connection refused: connect?
      + + +

      There are a couple of likely reasons why this can happen.

      + +

      Firstly, by default, WebSphere is set up to use port 9080 while all of the Tuscany samples are set up to use port 8080 so if, for example, you are trying to deploy samples/calculator-ws-webapp to a default WebSphere configuration you will need to go in and change the client component reference description to read:

      + +
      +
      +    <component name="CalculatorServiceComponent">
      +        <implementation.java class="calculator.CalculatorServiceImpl"/>
      +        <reference name="addService" >
      +           <interface.java interface="calculator.AddService" />        
      +            <binding.ws uri="http://localhost:9080/sample-calculator-ws-webapp/AddServiceComponent"/>        
      +        </reference>  
      +
      +
      + +

      Another thing to watch out for is a WebSphere configuration that tells the web container to pass requests on to the filter chain when URLs remain unsatisfied.

      + +
      +
      +com.ibm.ws.webcontainer.invokeFiltersCompatibility = true
      +
      +
      + +

      See the details here http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg1PK31377

      + +
      General SCA Questions
      + + +

      +
      How to get Target Name from Composite without parsing?
      + +

      You can use the StAX to get the QName as follows:

      + +

      Assuming url points to the composite file:

      + +
      +
       
      +URLConnection connection = url.openConnection();
      +connection.setUseCaches(false);
      +XMLStreamReader reader = factory.createXMLStreamReader(connection.getInputStream());
      +reader.nextTag();
      +
      +assert Constants.COMPOSITE_QNAME.equals(reader.getName());
      +String ns = reader.getAttributeValue(null, "targetNamespace");
      +if (ns == null) {
      +ns = XMLConstants.NULL_NS_URI;
      +}
      +String name = reader.getAttributeValue(null, "name");
      +reader.close();
      +
      +
      +

      +
      Different composites can contain components with the same name. How can I reference the components if the composites are contributed to one SCA Domain?
      + + +

      You should consider that in order to enable 2 separate composites they need to be contributed to the domain in some way. For example,

      + +

      1 - composites contributed as deployable
      +2 - included in other composites that are included as deployable composites
      +3 - named as component implementations using implementation.composite

      + +

      In cases 1 and 2 the composite is flattened out and become part of another composite. In case 1 this other composite is the virtual domain composite. The component name must be unique in this context.

      + +

      How is the SCA Interface Extension used in SCA environment?

      +

      SCA allows you to define interfaces for SCA references and services using different languages such as Java, WSDL 1.1, WSDL 2.0 or CORBA
      +IDL.
      +For example, consider following two components:
      +OrderProcessingClient (java component): It takes the order from the web front and calls the OrderProcessing process to fulfill the order
      +OrderProcessing (BPEL component): A business process that handles the order and it defines a service using WSDL 1.1
      +OrderProcessingClient defines a reference using java interface.
      +When OrderProcessingClient is wired to OrderProcessing, the java code for OrderProcessingClient can call the OrderProcessing component
      +using the java interface if it's compatible with the WSDL portType for the OrderProcessing component. The SCA interface extension makes
      +it possible for components to choose the suitable interface definition languages.

      + +

      What are the benefits of designing applications using SCA?

      +

      Please refer to the following email thread for answer:
      + http://www.mail-archive.com/tuscany-user@ws.apache.org/msg01114.html

      + +

      +
      Didn't Find my answer
      + +

      If you still have not found your answer, please take a look at the email archive. You can do a search on your topic.

      + +

      User Discussion Archives
      +User Discussion Archives (when under incubation)
      +Dev Discussion Archives
      +Dev Discussion Archives (when under incubation)

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-sca-web-application-integration-story.html b/site/trunk/site-publish/tuscany-sca-web-application-integration-story.html new file mode 100644 index 0000000000..de5c7e5c44 --- /dev/null +++ b/site/trunk/site-publish/tuscany-sca-web-application-integration-story.html @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany SCA Web Application Integration Story + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Java > SCA Java Work-In-Progress > Tuscany SCA Web Application Integration Story + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + + + + + +
      + +

      Web Application Integration story goals

      + +
        +
      • Simplify the web application as a client application story
      • +
      • Use a simple approach, familiar to all web application developers
      • +
      + + +

      Integrating using ServletContextLister

      + +

      This approach register a context listener on the application web.xml that will bootstrap the runtime when the web-app is started, and closes the runtime when the web-app is shutdown.

      + +

      Necessary updates in web.xml

      +
      +
      +<listener>
      + <listener-class>org.apache.tuscany.sca.webapp.TuscanyContextListener</listener-class>
      +</listener>
      +
      +
      + +

      Then, once this integration part is defined, developers only need to get a reference to the SCADomain in their JSP and then get a reference to a service and start consuming it
      +Below, you can find the JSP code snippet to get a SCARuntime reference :

      +
      +
      +SCADomain domain = (SCADomain) application.getAttribute("org.apache.tuscany.sca.SCADomain");
      +
      +
      + +

      In order to use this approach, you will need to specify a sca-contribution.xml inside the META-INF directory of your web-app, this file will be used to identify the root of the contribution as well as the list of deployable composites.

      + +

      Here is a sample sca-contribution.xml used in the calculator-web application:

      + +
      +
      +<?xml version="1.0" encoding="UTF-8"?>
      +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
      +   <deployable composite="Calculator"/>
      +</contribution>
      +
      +
      + + +

      Tuscany also supports the scenario where you would drop the SCA composite files inside the META-INF\sca-deployables directory, and this would also be used to identify the root of the contribution and the list of deployable composites.

      + +

      pros: Consistent programming model between JSP and Servlets
      +cons: require web.xml integration and sca-contribution.xml, although the trend is to make web apps simpler and web.xml is optional in newer specs of J2EE

      + +

      Integrating using pure JSP code

      + +

      Integration using useBean tag: This approach would be very simple, and would basically ask the developer to add a useBean to instantiate the domain, and a setProperty to set the deployableComposite/

      +
      +
      +<jsp:useBean id="SCADomain" class="org.apache.tuscany.host.embedded.SCADomainBean" scope="application">
      + <jsp:setProperty property="deployableComposite" value="Calculator.composite" />
      +</jsp:useBean>
      +...
      +<%
      + SCADomain domain = (SCADomain) application.getAttribute("SCADomain");
      + CalculatorService calculatorService = domain.getService(CalculatorService.class, "CalculatorServiceComponent");
      +%>
      +
      +
      +

      Optional attributes can be defined by using the <jsp:setProperty> calls, if no attributes are specified, the sca-contribution.xml will be used to hint the root of the contribution as well as to find the deployable composites.

      + +

      In this scenario, the SCADomain is stopped when the application goes out of scope and the garbage collection process the termination of the SCADomain.

      + +

      pros: simple, does not involve changes on web.xml
      +cons: leaves toping the sca domain/runtime to when garbage collection process the application scope bean, also introduce different programming model between JSP and Servlets.

      + + + +

      References

      + +

      http://java.sun.com/j2ee/1.4/docs/tutorial/doc/
      +http://java.sun.com/products/jsp/docs.html#syntax
      +http://java.sun.com/products/jsp/tags/11/syntaxref11.fm14.html
      +http://java.sun.com/products/javabeans/docs/spec.html

      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-sdo-cpp-faq.html b/site/trunk/site-publish/tuscany-sdo-cpp-faq.html new file mode 100644 index 0000000000..8c2abfe641 --- /dev/null +++ b/site/trunk/site-publish/tuscany-sdo-cpp-faq.html @@ -0,0 +1,105 @@ + + + + + + + Tuscany SDO CPP - FAQ : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO CPP > Tuscany SDO CPP - FAQ + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +

      Tuscany SDO - Frequently Asked Questions

      + + +
        +
      1. Does SDO for C++ provide a static interface as the Java implementation does?
        +No. It is not clear that this is a useful feature in a language like C++ so we have no plans to implement it.
      2. +
      3. How do I load an XML file using SDO static type?
        +The basic pattern is fairly simple. +
        +
          // Get hold of a helper context. This holds an XMLHelper instance
        +  HelperContext scope = SDOUtil.createHelperContext();
        +   
        +  // Register all of the types we have generated into the HelperContext
        +  GenerateFactory.INSTANCE.register(scope);
        +
        +  // A normal input stream to read the XML file
        +  fis = new FileInputStream("some.xml");
        + 
        +  // Use the HelperContext to get and XMLHelper and use this to load the XML
        +  XMLDocument xmlDoc = scope.getXMLHelper().load(fis);
        +
        +  // Now we have a document we can get the root object and cast it to the expected type
        +  GenerateType generateType = (GenerateType)xmlDoc.getRootObject();
        +
        +
        +

        There are some unit tests that show how to do this. You have to look in the tools tests cases as the Java static generator is in the tools project. Try looking in sdo\tools\src\test\java\org\apache\tuscany\sdo\test*.java.

      4. +
      + +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-sdo-faq.html b/site/trunk/site-publish/tuscany-sdo-faq.html new file mode 100644 index 0000000000..6c892276ea --- /dev/null +++ b/site/trunk/site-publish/tuscany-sdo-faq.html @@ -0,0 +1,146 @@ + + + + + + + + Tuscany SDO - FAQ + + + + + + + +
      +  Apache Tuscany > Home > SDO CPP > Tuscany SDO - FAQ + +
      + + + + + + +
      +
      + +
      + +
      + Added by S Venkatakrishnan, last edited by haleh mahbod on Mar 12, 2007 +  (view change) + +
      + +
      +
      +

      Tuscany SDO - Frequently Asked Questions

      + + +
        +
      1. Does SDO for C++ provide a static interface as the Java implementation does?
        +No. It is not clear that this is a useful feature in a language like C++ so we have no plans to implement it.
      2. +
      3. How do I load an XML file using SDO static type?
        +The basic pattern is fairly simple. +
        +
          // Get hold of a helper context. This holds an XMLHelper instance
        +  HelperContext scope = SDOUtil.createHelperContext();
        +   
        +  // Register all of the types we have generated into the HelperContext
        +  GenerateFactory.INSTANCE.register(scope);
        +
        +  // A normal input stream to read the XML file
        +  fis = new FileInputStream("some.xml");
        + 
        +  // Use the HelperContext to get and XMLHelper and use this to load the XML
        +  XMLDocument xmlDoc = scope.getXMLHelper().load(fis);
        +
        +  // Now we have a document we can get the root object and cast it to the expected type
        +  GenerateType generateType = (GenerateType)xmlDoc.getRootObject();
        +
        +
        +

        There are some unit tests that show how to do this. You have to look in the tools tests cases as the Java static generator is in the tools project. Try looking in sdo\tools\src\test\java\org\apache\tuscany\sdo\test*.java.

      4. +
      + +
      + + +
      +
      + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscany-sdo-java-faq.html b/site/trunk/site-publish/tuscany-sdo-java-faq.html new file mode 100644 index 0000000000..411f3f4776 --- /dev/null +++ b/site/trunk/site-publish/tuscany-sdo-java-faq.html @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany SDO Java - FAQ + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > SDO Overview > SDO Java > Tuscany SDO Java - FAQ + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + + +

      + +
      Build and Development Questions
      + + +

      + +
      How can I debug into EMF in Eclipse?
      + + +

      Download an SDK archive of the appropriate version of eclipse EMF containing EMF and XSD (and Eclipse's SDO 1.0 impl which can be ignored) from http://www.eclipse.org/modeling/emf/downloads/#archives (currently 2.2.3 and likely to remain that way until SDO is not constrained to work with Java 1.4.2). The archive contains source code for each jar in zip files. Extract this archive onto your file system somewhere. You can associate a jar with a source zip in two ways. Either ...

      +
        +
      1. wait until you debug into an EMF class file that doesn't have a source association and then click the "Attach Source ..." button, or ...
      2. +
      3. in the package explorer pane, open up the "Referenced Libraries" part of a projects source hierarchy and right click on one of the referenced libraries. Select Properties, and click on the Java Source Attachment tab.
      4. +
      + + +

      Now you have the opportunity to define a variable for eclipse to provide an starting root location in the file system which can be extended in order to locate the source code (this allows for easy transport of eclipse projects between environments, since only the small set of environment variables need to be updated in order to make the project build again in the new environment.) Define a "New..." variable (mine is EMF_SRC) and make it point to a location above all the source file zips. The variable's value will be something like C:/Dev/downloads/emf-sdo-xsd-SDK-2.2.3/eclipse/plugins/. Now create an extension to that variable by clicking on "Extension...". Select your new variable, and open up the hierarchy to find the source zip file. For example

      + +

      /EMF_SRC/org.eclipse.emf.source_2.2.3.v200705141058/src/org.eclipse.emf.ecore_2.2.3.v200705141058/src.zip

      + +

      Be sure to select the zip file, and not a folder above the file. Close all the dialogs. Now your source file attachment is made and you will be able to debug through any file in that jar. You'll need to make more associations for the other jars by extending the existing EMF_SRC variable for those jars.

      + +

      + +
      What is the connection between static XSDHelper calls when definition and load could be using different XSDHelpers for the same instance in the same VM?
      + + +

      For example:

      +
      +
      +XSDHelper.INSTANCE.define(is, null);
      +
      +
      +

      and then in another static method xml is loaded

      +
      +
      +XMLDocument xmlDoc = XMLHelper.INSTANCE.load(is);
      +
      +
      + +

      Answer: The methods you point out are not static methods, but are executed in the context of the singleton helpers, and the
      +metadata generated by the XSDHelper.INSTANCE singleton is stored in the TypeHelper.INSTANCE and accessed from there by the
      +XMLHelper.INSTANCEsingleton. Together these singletons form a default set of helpers centred
      +around a default scope for types. The recently introduced HelperContext SDO 2.1 API allows you to create new collections of helpers that together define alternative scopes.

      + +

      + +
      Is there support for extending generated SDO implementation classes?
      + + +

      Here is my understanding:
      +1) I cannot have my own superclass of a generated SDO class since this is already occupied
      +2) I cannot (yet) simply subclass a generated SDO class, this may be addressed in TUSCANY-513
      +As a consequence I would have to modify the generated SDO implementation class in order to offer custom formatter and validation logic!? Is there eventually a way to inject code using annotations? Or is it possible to re-generate and prevent override of custom code (merge)?*

      + +

      Answer: The Tuscany SDO generator is currently reusing the code generator
      +framework from Eclipse EMF project. If you look at the EMF generator, you'll see that it's very powerful and customizable. In Tuscany all we've
      +done is create a simple command line invocation of the EMF generator, using our own templates, and a few basic options.

      + +

      One thing we don't support is regen/merge because the EMF merger prereqs the Eclipse JDT, which we didn't want to drag into Tuscany as a
      +dependency. If someone is willing to write a standalone merger for Tuscany, we could support regen.
      +Other things like generating a different base class or adding methods, are supported in EMF but we don't have a way do it in with the Tuscany
      +generator yet. If you'd be willing to help get some of this function into Tuscany, I'm sure a lot of people would be interested in it.

      + +

      The bottom line is that real sophisticated tooling is outside of the scope of the Tuscany project. Another possible direction for this is for some
      +Eclipse project to provide a fancy GUI-generator (and possibly other tools) for developing Tuscany SDO applications. It would be nice to see something like that get started.

      + + +

      + +
      How do I work with javajet files to modify the SDO generator code?
      + + +

      Answer: You can learn how to set up your Eclipse environment to have javajet function built in using this tutorial.
      +Note that if you install the JET plugin via the Help => Software Updates => Find and Install .. menu of the eclipse IDE then you may see that selecting the "Java Emitter Templates SDK" causes the somewhat cryptic error message that you need the EMF codegen plugin, but there is no such plugin listed as an additional item to select. To clear this error and proceed you will need to select the "EMF Extender SDK" option.

      + +

      Once you have the right eclipse environment you must add a javajet nature to the sdo-tools project, and modify the javajet configuration to match the shape of the sdo-tools project.

      +
      +
      +  File => New => Other
      +  Select "Java Emitter Templates"
      +  Select "Convert Projects to Jet Projects"
      +  Select "tuscany-sdo-tools"
      +  Click "Finish"
      +
      +
      +

      Then in the Package Explorer pane of the Java perspective of Eclipse, right click on the tuscany-sdo-tools project

      +
      +
      +  Select "Properties"
      +  Select "Jet Settings"
      +  Change the Source Container to "src/main/java"
      +
      +
      +

      Following this, when you change the code in templates/models/SDOClass.javajet, or templates/models/SDOFactoryClass.javajet, then the corresponding java class will be updated each time that you save the javajet file.

      + +

      + +
      How to make the SDO-Tuscany library work in an eclipse plugin?
      + + +

      Answer: Please refer to the following email thread for answer:
      + http://www.mail-archive.com/tuscany-user@ws.apache.org/msg03101.html

      + +

      + +
      How to use SDO in tuscany SCA?
      + + +

      Answer:- It's possible to use Static SDO or Dynamic SDO

      +
        +
      • For the dynamic SDO, you can use DataObject as parameter type.
      • +
      • You are required to put something like this in the SCDL (*.composite) file: +
        +
        +    <composite ...
        +        xmlns:dbsdo="http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0";
        +        ....>
        +    <dbsdo:import.sdo location="wsdl/helloworld.wsdl"/>-
        +
        +
        +

        [Note: It's possible to have multiple <import.sdo> elements]

      • +
      + + +

      + +
      I am having issues with Sun JDK 1.4.2 while trying to do SDO build.
      + + +

      Answer: This is a known issue of SUN JDK. The Crimson DOM implementation in (some versions of) the Sun JDK 1.4 has a bug in the implementation of hasAttributeNS.
      + This bug can be seen as either a null pointer exception or as an error message "Specify a valid XML Schema and try loading again" while loading or importing a model from XML Schema.
      + To avoid this, use the following to control the JAXP implementaion:
      + <eclipse-install-dir>eclipse.exe -vmargs -Djava.endorsed.dirs=<path-to-your-xerces-jars-folder>

      + +

      + +
      Is there a way to restrict the version of maven used?
      + + +

      Answer: According to the POM model, you can use the <prerequisites> element to specify the minimum version of Maven required to build the project.
      +for example:

      +
      +
      +<prerequisites>
      +    <maven>2.0.7</maven>
      +</prerequisites>
      +
      +
      + +

      + +
      How can I define multiple XSD files with same namespace in same XSDHelper.INSTANCE?
      + + +

      Answer: You need to create a HelperContext that has the extensible namespaces set to true. So, instead of using XMLHelper.INSTANCE you must do the following:

      + +
      +
      +HelperContext scope = SDOUtil.createHelperContext(true);
      +   then use the XSDHelper from
      +XSDHelper xsdHelper = scope.getXSDHelper()
      +
      +
      + +

      if you use this instance of XSDHelper you will be able to add types to your namespace.

      + +

      + +
      Is it possible to generatie a DataObject from XML with XML Schema types?
      + + +

      *Answer:*Currently, Tuscany doesn't automatically load metadata (schemas) on the fly. It is required to register the types before the instances are loaded.
      + It's required to execute something like this before calling XMLHelper.load():

      + +
      +
      +URL url = SdoDroolsTest.class.getResource("/XYZ.xsd");
      +getScope().getXSDHelper().define(url.openStream(), url.toString());
      +
      +
      + +

      + +
      How to add Property to an XSDHelper-defined Type‎?
      + + +

      Answer: If you create your HelperContext using SDOUtil.createHelperContext(true); XSDHelper.define() method will then let you add new types to an existing namespace
      + and also to replace an existing type with a new version (Note: This is a "use at your own risk" feature).
      + So, you could add a new property by calling XSDHelper.define() again passing in a new version of the XSD type that includes the new element/attribute.

      + +

      + +
      Why does the DataObject with contained DataGraph causes NullPointerException in ChangePackage$Literals?
      + + +

      Answer: Please refer to the following email thread for answer:
      + http://www.mail-archive.com/tuscany-user@ws.apache.org/msg01178.html

      + +

      + +
      How can I use SDO for my Eclipse RCP application?
      + + +

      Answer: Please refer to the following email thread for answer:
      + http://www.mail-archive.com/tuscany-user@ws.apache.org/msg01129.html

      + +

      +
      Is there a mechanism or workaround to pause and resume the recording in the ChangeSummary? +
      + +

      Answer: There's no standard "spec-defined" way, but I believe in Tuscany you can
      +call endLogging() to suspend and then call
      +ChangeSummaryImpl.resumeLogging() instead of beginLogging() to restart.
      +Note that you'll need to cast your ChangeSummary to ChangeSummaryImpl to
      +call resumeLogging().

      + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-subprojects.html b/site/trunk/site-publish/tuscany-subprojects.html new file mode 100644 index 0000000000..f96d6151c9 --- /dev/null +++ b/site/trunk/site-publish/tuscany-subprojects.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany Subprojects + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > General Info > Getting Involved > Tuscany Subprojects + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      + + + + + + +
      +

      Tuscany Subprojects

      + +

      Apache Tuscany project is focused on the development and innovation for three key technologies: Service Component Arcitecture (SCA), Service Data Object (SDO) and Data Access Service . There are standards available for SCA and SDO at OASIS.

      + +

      There are two subprojects under Service Component Architecture which provide implementation for an infrastructure to support SCA in Java and native languages. Each of these infrastructures provide plug points for other lanaguage implementations and bindings.

      + + +

      There are two subprojects under Service Data Object(SDO) which provide implementation of SDO runtime in Java and in native languages.

      + +

      There are multiple projects in progress under Data Access Service(DAS) to enable data access to a variety of end data sources.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscany-tomcat-distribution.html b/site/trunk/site-publish/tuscany-tomcat-distribution.html new file mode 100644 index 0000000000..713ad14c37 --- /dev/null +++ b/site/trunk/site-publish/tuscany-tomcat-distribution.html @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tuscany Tomcat Distribution : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +   + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + +
      + +  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > Tuscany Tomcat Distribution + + + + User List | Dev List | Issue Tracker   + +
      + + + + + + + + + + + + +
      + + +
      + + + + +
      + +
      + + + +
      + + + + + + + + + +

      Tuscany Tomcat Distribution

      + +

      Tuscany includes a tuscany.war distribution for SCA-enabling Apache Tomcat, find it at the Tuscany download page.

      + +

      There are several advantages with using an SCA-enabled Tomcat:

      +
        +
      • Individual Web Applications do not need to include any Tuscany jars or Tuscany configuration in the web.xml.
      • +
      • Other SCA contribution formats such as jar or zip files can be deployed to Tomcat.
      • +
      • An SCA domain can be used to support SCA wiring accross Web Applications and contributions
      • +
      + + +

      Updating Tomcat to use the tuscany.way distribution is really simple - deploy the tuscany.war to Tomcat, go to the Tuscany admin application, click on install, and thats it. On a restart of Tomcat it can now run SCA contributions and SCA enabled Web applications.

      + +

      The initial release of the tuscany.war in 2.0 M3 includes support for SCA-enabled Web applications as well as SCA contributions deployed to a directory named "sca-contributions" in the Tomcat top-level directory, and a single Tomcat instance wide SCA domain. Upcoming releases will enhance the domain support to allow multiple SCA domains and domains spanning more than a single Tomcat instance.

      +
      + +
      + +
      + +
      + + +
      + + + + + + + + + + + + + website stats + + + + + + + + + + + diff --git a/site/trunk/site-publish/tuscany-war-dirstribution.html b/site/trunk/site-publish/tuscany-war-dirstribution.html new file mode 100644 index 0000000000..d718b8941e --- /dev/null +++ b/site/trunk/site-publish/tuscany-war-dirstribution.html @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tuscany WAR Dirstribution : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +   + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + +
      + +  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > Tuscany WAR Dirstribution + + + + User List | Dev List | Issue Tracker   + +
      + + + + + + + + + + + + +
      + + +
      + + + + +
      + +
      + + + +
      + + + + +

      Tuscany WAR Dirstribution

      + + +
      + +
      + +
      + +
      + + +
      + + + + + + + + + + + + + website stats + + + + + + + + + + + diff --git a/site/trunk/site-publish/tuscany-war-distribution.html b/site/trunk/site-publish/tuscany-war-distribution.html new file mode 100644 index 0000000000..3160a89caf --- /dev/null +++ b/site/trunk/site-publish/tuscany-war-distribution.html @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tuscany WAR Distribution : Apache Tuscany + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +   + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + +
      + +  Apache Tuscany > Home > SCA Overview > SCA Java 2.x > Tuscany WAR Distribution + + + + User List | Dev List | Issue Tracker   + +
      + + + + + + + + + + + + +
      + + +
      + + + + +
      + +
      + + + +
      + + + + +

      Tuscany WAR Distribution

      + + +
      + +
      + +
      + +
      + + +
      + + + + + + + + + + + + + website stats + + + + + + + + + + + diff --git a/site/trunk/site-publish/tuscany-website-development-guideline.html b/site/trunk/site-publish/tuscany-website-development-guideline.html new file mode 100644 index 0000000000..9435511c7e --- /dev/null +++ b/site/trunk/site-publish/tuscany-website-development-guideline.html @@ -0,0 +1,88 @@ + + + + + + + Tuscany Website Development Guideline : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > Tuscany Website Development Guideline + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +

      Wiki versus Website

      + +

      Wiki Layout

      + + + +

      Naming convention

      + + + +

      How to deploy to Wiki to the website?

      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscanydownloads2.html b/site/trunk/site-publish/tuscanydownloads2.html new file mode 100644 index 0000000000..f3bb5464ba --- /dev/null +++ b/site/trunk/site-publish/tuscanydownloads2.html @@ -0,0 +1,116 @@ + + + + + + + Tuscany+Downloads2 : Apache Tuscany + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Tuscany+Downloads2 + + User List | Dev List | Issue Tracker   +
      + + + + + +
      + +
      + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/tuscanylogos.data/Balloons150.gif b/site/trunk/site-publish/tuscanylogos.data/Balloons150.gif new file mode 100644 index 0000000000..4c5e5b7d71 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Balloons150.gif differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Balloons150.gif.jpeg b/site/trunk/site-publish/tuscanylogos.data/Balloons150.gif.jpeg new file mode 100644 index 0000000000..96d37e319d Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Balloons150.gif.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Balloons150.jpg b/site/trunk/site-publish/tuscanylogos.data/Balloons150.jpg new file mode 100644 index 0000000000..02e36462f4 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Balloons150.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Balloons150.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/Balloons150.jpg.jpeg new file mode 100644 index 0000000000..50bcbc463c Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Balloons150.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Balloons300.gif b/site/trunk/site-publish/tuscanylogos.data/Balloons300.gif new file mode 100644 index 0000000000..e85dbf7c7f Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Balloons300.gif differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Balloons300.gif.jpeg b/site/trunk/site-publish/tuscanylogos.data/Balloons300.gif.jpeg new file mode 100644 index 0000000000..4e9255fc41 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Balloons300.gif.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Bell_Tower_Image.jpg b/site/trunk/site-publish/tuscanylogos.data/Bell_Tower_Image.jpg new file mode 100644 index 0000000000..6fdf98ae17 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Bell_Tower_Image.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Bell_Tower_Image.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/Bell_Tower_Image.jpg.jpeg new file mode 100644 index 0000000000..4abb81c617 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Bell_Tower_Image.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Cake150.gif b/site/trunk/site-publish/tuscanylogos.data/Cake150.gif new file mode 100644 index 0000000000..e2d07eaec4 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Cake150.gif differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Cake150.gif.jpeg b/site/trunk/site-publish/tuscanylogos.data/Cake150.gif.jpeg new file mode 100644 index 0000000000..9ead20de2f Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Cake150.gif.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Cake150.jpg b/site/trunk/site-publish/tuscanylogos.data/Cake150.jpg new file mode 100644 index 0000000000..3ab1e237f1 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Cake150.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Cake150.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/Cake150.jpg.jpeg new file mode 100644 index 0000000000..21832655aa Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Cake150.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Cake300.gif b/site/trunk/site-publish/tuscanylogos.data/Cake300.gif new file mode 100644 index 0000000000..d620678711 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Cake300.gif differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Cake300.gif.jpeg b/site/trunk/site-publish/tuscanylogos.data/Cake300.gif.jpeg new file mode 100644 index 0000000000..3374897b61 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Cake300.gif.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.gif b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.gif new file mode 100644 index 0000000000..5e61b26dba Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.gif differ diff --git a/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.gif.jpeg b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.gif.jpeg new file mode 100644 index 0000000000..8327f81e62 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.gif.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.jpg b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.jpg new file mode 100644 index 0000000000..4aa37d633f Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.jpg.jpeg new file mode 100644 index 0000000000..ddb7f24238 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog150.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog300.gif b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog300.gif new file mode 100644 index 0000000000..974728c19f Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog300.gif differ diff --git a/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog300.gif.jpeg b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog300.gif.jpeg new file mode 100644 index 0000000000..74d0a86f8b Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/HappyBirthdayDog300.gif.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Hat150.gif b/site/trunk/site-publish/tuscanylogos.data/Hat150.gif new file mode 100644 index 0000000000..332dcf9ca0 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Hat150.gif differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Hat150.gif.jpeg b/site/trunk/site-publish/tuscanylogos.data/Hat150.gif.jpeg new file mode 100644 index 0000000000..1de254f350 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Hat150.gif.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Hat150.jpg b/site/trunk/site-publish/tuscanylogos.data/Hat150.jpg new file mode 100644 index 0000000000..b5af7f62c5 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Hat150.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Hat150.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/Hat150.jpg.jpeg new file mode 100644 index 0000000000..2465bce7d9 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Hat150.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Hat300.gif b/site/trunk/site-publish/tuscanylogos.data/Hat300.gif new file mode 100644 index 0000000000..2896db5d0b Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Hat300.gif differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Hat300.gif.jpeg b/site/trunk/site-publish/tuscanylogos.data/Hat300.gif.jpeg new file mode 100644 index 0000000000..6047cc84e3 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Hat300.gif.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Present150.gif b/site/trunk/site-publish/tuscanylogos.data/Present150.gif new file mode 100644 index 0000000000..59bc0cebb1 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Present150.gif differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Present150.gif.jpeg b/site/trunk/site-publish/tuscanylogos.data/Present150.gif.jpeg new file mode 100644 index 0000000000..b30e7a4c83 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Present150.gif.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Present150.jpg b/site/trunk/site-publish/tuscanylogos.data/Present150.jpg new file mode 100644 index 0000000000..5a7907794f Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Present150.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Present150.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/Present150.jpg.jpeg new file mode 100644 index 0000000000..43523ad6c5 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Present150.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Present300.gif b/site/trunk/site-publish/tuscanylogos.data/Present300.gif new file mode 100644 index 0000000000..9aa1d62af7 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Present300.gif differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Present300.gif.jpeg b/site/trunk/site-publish/tuscanylogos.data/Present300.gif.jpeg new file mode 100644 index 0000000000..a0fda8ec4f Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Present300.gif.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Road-with-Cypress-Tree-Sun-and-Moon.jpg b/site/trunk/site-publish/tuscanylogos.data/Road-with-Cypress-Tree-Sun-and-Moon.jpg new file mode 100644 index 0000000000..826e643cf5 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Road-with-Cypress-Tree-Sun-and-Moon.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/Road-with-Cypress-Tree-Sun-and-Moon.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/Road-with-Cypress-Tree-Sun-and-Moon.jpg.jpeg new file mode 100644 index 0000000000..ec1a0a2280 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/Road-with-Cypress-Tree-Sun-and-Moon.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo100.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo100.jpg new file mode 100644 index 0000000000..877467f788 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo100.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo100.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo100.jpg.jpeg new file mode 100644 index 0000000000..e26cd5c0ef Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo100.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo200.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo200.jpg new file mode 100644 index 0000000000..ab46d3c826 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo200.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo200.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo200.jpg.jpeg new file mode 100644 index 0000000000..db13a33352 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo200.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo400.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo400.jpg new file mode 100644 index 0000000000..0a4838874c Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo400.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo400.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo400.jpg.jpeg new file mode 100644 index 0000000000..557d1cb3be Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo400.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo800.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo800.jpg new file mode 100644 index 0000000000..191c8d841b Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo800.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo800.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo800.jpg.jpeg new file mode 100644 index 0000000000..99cdda75f0 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogo800.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoBalloons.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoBalloons.jpg new file mode 100644 index 0000000000..0747953309 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoBalloons.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoBalloons.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoBalloons.jpg.jpeg new file mode 100644 index 0000000000..bb36606fd0 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoBalloons.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoCake.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoCake.jpg new file mode 100644 index 0000000000..824ddd0b47 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoCake.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoCake.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoCake.jpg.jpeg new file mode 100644 index 0000000000..54ad9f7a9f Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoCake.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoHat.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoHat.jpg new file mode 100644 index 0000000000..bed7ad3245 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoHat.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoHat.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoHat.jpg.jpeg new file mode 100644 index 0000000000..939d72348d Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoHat.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoNEW.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoNEW.jpg new file mode 100644 index 0000000000..3a31139098 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoNEW.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoNEW.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoNEW.jpg.jpeg new file mode 100644 index 0000000000..6e9fe8ded8 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoNEW.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoOLD.png b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoOLD.png new file mode 100644 index 0000000000..6601545ff0 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoOLD.png differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoOLD.png.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoOLD.png.jpeg new file mode 100644 index 0000000000..9b7a2f64c2 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoOLD.png.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoPresent.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoPresent.jpg new file mode 100644 index 0000000000..52df8d5930 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoPresent.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoPresent.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoPresent.jpg.jpeg new file mode 100644 index 0000000000..239a3d630d Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoPresent.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoSmall.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoSmall.jpg new file mode 100644 index 0000000000..9c18137656 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoSmall.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoSmall.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoSmall.jpg.jpeg new file mode 100644 index 0000000000..8101502449 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyLogoSmall.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyTower.jpg b/site/trunk/site-publish/tuscanylogos.data/TuscanyTower.jpg new file mode 100644 index 0000000000..dd97115646 Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyTower.jpg differ diff --git a/site/trunk/site-publish/tuscanylogos.data/TuscanyTower.jpg.jpeg b/site/trunk/site-publish/tuscanylogos.data/TuscanyTower.jpg.jpeg new file mode 100644 index 0000000000..ce8653fdde Binary files /dev/null and b/site/trunk/site-publish/tuscanylogos.data/TuscanyTower.jpg.jpeg differ diff --git a/site/trunk/site-publish/tuscanylogos.html b/site/trunk/site-publish/tuscanylogos.html new file mode 100644 index 0000000000..1f2e99c6d8 --- /dev/null +++ b/site/trunk/site-publish/tuscanylogos.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + Apache Tuscany : TuscanyLogos + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > General Info > TuscanyLogos + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      Tuscany Logos in Various Sizes

      +


      +
      +
      +

      + +

      Tuscany Logo 1

      + +

      + +

      Small version of new logo
      +

      + +

      Tuscany Logo 2

      +

      + +

      Tuscan Logo3 (from last year)

      +

      + +

      Bell Tower Image

      +

      + +

      Anniversary Logos

      +

      To celebrate Tuscany's 3rd birthday (2008-12-07), we created a number of logos to place around the site.
      +
      +
      +

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/tuscanytuscanyjavadas-java-overviewimproved-logging.html b/site/trunk/site-publish/tuscanytuscanyjavadas-java-overviewimproved-logging.html new file mode 100644 index 0000000000..0db676e83a --- /dev/null +++ b/site/trunk/site-publish/tuscanytuscanyjavadas-java-overviewimproved-logging.html @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + Apache Tuscany : Tuscany.TuscanyJava.DAS Java Overview.Improved logging + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > Tuscany.TuscanyJava.DAS Java Overview.Improved logging + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      Tuscany/TuscanyJava/DAS Java Overview/Improved logging

      + + +

      Logging Overview

      + +

      Overview

      + + + +

      Using log while contributting for Tuscany DAS code

      +
        +
      • While contributing to DAS code, please follow the following guidelines to add logging to your class +
        +Instantiate a logger +
        +- There is a logger factory available in org.apache.tuscany.das.rdb.util - To use it +
          +
        • private final Logger logger = LoggerFactory.INSTANCE.getLogger(MappingWrapper.class);
        • +
        +
      • +
      + + +

      - To instrument your code with logging capabilities

      +
        +
      • +
          +
        • if(this.logger.isDebugEnabled()) +
            +
          • this.logger.debug("your debug message");
          • +
          +
        • +
        +
      • +
      + + +

      Note: As a performance enhancement, please surround your debug code with a check to see if debug is enabled or not.

      + +

      Configuring DAS logging (log4j)

      +
        +
      • Configuring with Tomcat +
        +There are two ways to configure log4j in Tomcat : +
          +
        • - Having a global log4j.properties inside %CATALINA_HOME%\common\classes +
          +- Having a global log4j.properties inside your own web app at WEB-INF\classes
        • +
        +
      • +
      + + +

      Sample log4j.properties

      + +

      # Set root logger level to DEBUG and its only appender to A1.

      + +

      log4j.rootLogger=INFO, A1

      + +

      # A1 is set to be a ConsoleAppender.

      + +

      log4j.appender.A1=org.apache.log4j.ConsoleAppender

      + +

      # A1 uses PatternLayout.

      + +

      log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=[DAS RDB] - %c{1}.%M (%L) : %m %n

      + +

      # Print only messages of level WARN or above in the package com.foo.

      + +

      log4j.logger.org.apache.tuscany=OFF ** For further information, please follow the link : Tomcat FAQ - Logging

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/user-guide.html b/site/trunk/site-publish/user-guide.html new file mode 100644 index 0000000000..2956f860c9 --- /dev/null +++ b/site/trunk/site-publish/user-guide.html @@ -0,0 +1,151 @@ + + + + + + + + User Guide + + + + + + + +
      +  Apache Tuscany > Index > SCA Java > User Guide + +
      + + + + + + +
      +
      + +
      + +
      + Added by Dan Murphy, last edited by Dan Murphy on Feb 09, 2007 +  (view change) + +
      + +
      +
      + +

      Welcome to the Apache Tuscany SCA User guide. Here you will find information aimed to help you develop SCA components and applications using Tuscany's Java SCA implementation.

      + +

      This is a work in progress, so please contribute and comment so we can make this valuable to you

      + + +
      + +
      + Children + + Show Children + +
      + + +
      +
      + + + \ No newline at end of file diff --git a/site/trunk/site-publish/using-sdo-java.html b/site/trunk/site-publish/using-sdo-java.html new file mode 100644 index 0000000000..0618268911 --- /dev/null +++ b/site/trunk/site-publish/using-sdo-java.html @@ -0,0 +1,147 @@ + + + + + + + + Using SDO Java + + + + + + + +
      +  Apache Tuscany > Home > SDO Java > Using SDO Java + +
      + + + + + + +
      +
      + +
      + +
      + Added by kelvin goodson, last edited by haleh mahbod on Apr 06, 2007 +  (view change) + +
      + +
      +
      +

      Getting Started with using SDO Java

      +

      [Note: This could be part of user guide. If agreed, let's move it]

      + +

      As an SDO user, you have (at least) three ways of establishing a Tuscany SDO runtime environment on your machine. In decreasing order of likelihood, you can either

      +
        +
      • download a binary distribution of a Tuscany Java SDO milestone release, and follow the instructions in the release archive
      • +
      • Or you can download a Tuscany source distribution, and follow the instruction in the release archive to recreate the corresponding binary release
      • +
      • or you can build from the svn repository source code, giving you the flexibility to base your runtime on the most recent code, or a particular level of your choice.
      • +
      + + +

      If you are going to take either of the latter two approaches you will need to establish a development environment.

      + +

      For examples of how to use SDO, you can look at the documents or at the samples. If you have downloaded the source distribution, the sample code will be part of that distribution. If however you have downloaded a binary distribution, you'll need to go and download the sample source code as a separate archive.

      + +

      Other sources of inspiration might come from the use of SDO within the Tuscany DAS and SCA code. When you come across issues, please look at and/or post to the Tuscany mailing lists.

      + +
      + +
      + Children + + Show Children + +
      + + +
      +
      + + + \ No newline at end of file diff --git a/site/trunk/site-publish/web-sample.html b/site/trunk/site-publish/web-sample.html new file mode 100644 index 0000000000..b9f96d098f --- /dev/null +++ b/site/trunk/site-publish/web-sample.html @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + Apache Tuscany : Web Sample + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > Web Sample + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      Tuscany RDB DAS Sample (companyweb)

      + +

      This stand-alone sample demonstrates the SDO RDB Data Access Service in the context of a simple web application.

      + +

      The application starts with a canned database of Companies and their related Departments. Through the web page interface, a user can:

      + +
        +
      • Display all Companies in the database
      • +
      • Display all Companies and related Departments
      • +
      • Add a new Department to a Company
      • +
      • Delete all Departments from a Company
      • +
      • Change the names of Departments in a Company
      • +
      + + +

      So, this simple application covers all CRUD operations as well as the some relationship manipulation (adding a Department associates that Department with the Company). The sample runs on Tomcat 5.5/6.x and employs a Derby database accessed via a DataSource.

      + +

      Running the sample

      +

      There are two options for running this sample:

      + +
        +
      1. Run from Tomcat configured by the build
      2. +
      3. Deploying the CompanyWeb WAR into a Tomcat you configure yourself
      4. +
      + + + +

      1. Running from Tomcat configured by the build
      +This sample application is deployed (along with the canned test database) to an instance of Tomcat as part of our automated sample testing. This means you can run the java/das/samples/testing/tomcat build (see java/das/samples/testing/tomcat/readme.htm ) and then access the application by pointing your browser to http://localhost:8080/sample-companyweb/.

      + + +

      2. Deploying the CompanyWeb WAR into a Tomcat you configure yourself
      +Alternatively, you can deploy the sample to your own configured Tomcat installation by following the
      +instructions below. These instructions assume that you have either 1) downloaded the Tuscany sample distribution or 2) Downloaded the Tuscany source and run our maven build, see the following link to more details steps on how to build DAS Sample applications http://incubator.apache.org/tuscany/java_das_overview.html .

      + +

      Set Up

      + +
        +
      1. Download and install the most recent stable version of Tomcat 5.5. You can find it here:
        + http://tomcat.apache.org/download-55.cgi
      2. +
      3. Download the most recent official release of Derby from here: http://db.apache.org/derby/index.html.
        + The only file you'll need from this download is derby.jar
      4. +
      5. Stop Tomcat
      6. +
      7. Copy derby.jar (from the derby distribution) to Tomcat_Home/common/lib
      8. +
      9. Add the sample war file to Tomcat_Home/webapps
        + a.sample-companyweb-xxx.war (e.g. "sample-companyweb-1.0-incubator-M2.war")
      10. +
      11. Install the canned Derby database to Tomcat:
        + a.First, create a new directory named "Databases" to hold the sample database.Create
        + Tomcat_Home / Databases
        + b.Copy the dastest folder (and all its contents) from (_build directory root OR where samples
        + were unzipped_/java/das/samples/companyweb) to Tomcat_Home/Databases (NOTE: If you are running
        + this from a sample distribution, the canned database is available in the distribution, inside
        + the databases directory. )
      12. +
      13. Define a DataSource by adding a datasource definition to Tomcat_Home/conf/server.xml.
        + a.Find the end-of-section marker </GlobalNamingResources> and add the following lines just above
        + it: (Requirement: You must include the absolute path to the "Databases" directory in the above url
        + attribute. Fore example: url="jdbc:derby:c:\apache-tomcat-5.5.17\Databases/dastest"/>) +
        +
                <!-- Global Datasource for Derby dastest database -->
        +         <Resource name="jdbc/dastest"
        +              type="javax.sql.DataSource"  auth="Container"
        +              description="Derby database for DAS Company sample"
        +              maxActive="100" maxIdle="30" maxWait="10000"
        +              username="" password="" 
        +              driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
        +              url="jdbc:derby:{absolute path}Databases/dastest"/>
        +
        +
      14. +
      15. Start tomcat and point your browser to: http://localhost:8080/sample-companyweb- version tag/
        + example: http://localhost:8080/sample-companyweb-1.0-incubator-M2/
      16. +
      + + +

      Sample Architecture

      +

      This is a simple, single-page, web application. The main components of this application are:

      +
        +
      • The RDB Data Access Service (DAS)
      • +
      • SDO
      • +
      • CompanyClient.java
      • +
      • Company.jsp
      • +
      • The canned Derby database
      • +
      + + +

      The CompanyClient uses the DAS directly and provides high-level services to the jsp such as:
      +public final List getCompanies()
      +This is a good place to look for how you might use the DAS in your own application.

      + +

      The Company.jsp responds to client interaction by invoking services of the CompanyClient. It receives data from the CompanyClient as SDO data graphs and manipulates SDOs directly to display data.

      + +

      The canned Derby database comes preloaded with Companies and related Departments. The Derby database instance is a simple file folder.

      + +

      The DAS accepts directives (commands) from the CompanyClient and reads and writes to the derby database instance appropriately.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/whats-new-in-das-java.html b/site/trunk/site-publish/whats-new-in-das-java.html new file mode 100644 index 0000000000..367541c083 --- /dev/null +++ b/site/trunk/site-publish/whats-new-in-das-java.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + Apache Tuscany : What's New in DAS JAVA + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > What's New in DAS JAVA + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      New Features (DAS M3)

      + +

      DAS uses overqualified update by default

      + +

      Currently in the DAS we either use a user-defined version column or do not use any concurrency control. We have enough information to build an overqualified update in cases where a version column is not defined. For example, if a field "name" is changed from "Bob" to "John", we would generate a query such as:
      +UPDATE CUSTOMER SET NAME = 'John' WHERE ID = 1 AND NAME = 'Bob'

      + +

      If the statement does not update any rows in the database, the DAS will throw a concurrency control exception.

      + +

      This scheme will not work in case of LONG VARCHAR, BLOB, or CLOB columns, so an exception should be thrown in that case indicating that a version column must be defined.

      + +

      DAS Configuration supports ConnectionInfo for J2SE environment

      + +

      So far the DAS allowed users to specify a JDBC Connection for the DAS to utilize by either providing a JDBC Connection explicitly or providing a JNDI name in the config file. Now DAS supports DriverManager info to be provided to allow similar, config-based set up, in a J2SE environment.

      + +

      Creation and initialization of database for DAS samples

      + +

      So far, the DAS samples provided canned database with them. This feature is an useful utility which supports an external configuration based creation and initialization of database when sample is loaded for the first time. User can design the database schema using the external configuration.

      + +

      DAS supports queries that reference tables in multiple schema

      + +

      So far DAS did not support multiple database schema. This feature allows DAS to execute all commands for tables in different schema.

      + +

      Advanced DAS features Demo

      + +

      This is not a few feature in itself but a new sample demonstrating multiple advanced features in DAS like optimistic concurrency control, column converter, result set shape...New features will keep getting added to this in future.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/whats-new-in-das.html b/site/trunk/site-publish/whats-new-in-das.html new file mode 100644 index 0000000000..eebd7d4aa9 --- /dev/null +++ b/site/trunk/site-publish/whats-new-in-das.html @@ -0,0 +1,103 @@ + + + + + + + What's New in DAS : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > What's New in DAS + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +

      New Features (DAS M3)

      + +

      DAS uses overqualified update by default

      + +

      Currently in the DAS we either use a user-defined version column or do not use any concurrency control. We have enough information to build an overqualified update in cases where a version column is not defined. For example, if a field "name" is changed from "Bob" to "John", we would generate a query such as:
      +UPDATE CUSTOMER SET NAME = 'John' WHERE ID = 1 AND NAME = 'Bob'

      + +

      If the statement does not update any rows in the database, the DAS will throw a concurrency control exception.

      + +

      This scheme will not work in case of LONG VARCHAR, BLOB, or CLOB columns, so an exception should be thrown in that case indicating that a version column must be defined.

      + +

      DAS Configuration supports ConnectionInfo for J2SE environment

      + +

      So far the DAS allowed users to specify a JDBC Connection for the DAS to utilize by either providing a JDBC Connection explicitly or providing a JNDI name in the config file. Now DAS supports DriverManager info to be provided to allow similar, config-based set up, in a J2SE environment.

      + +

      Creation and initialization of database for DAS samples

      + +

      So far, the DAS samples provided canned database with them. This feature is an useful utility which supports an external configuration based creation and initialization of database when sample is loaded for the first time. User can design the database schema using the external configuration.

      + +

      DAS supports queries that reference tables in multiple schema

      + +

      So far DAS did not support multiple database schema. This feature allows DAS to execute all commands for tables in different schema.

      + +

      Advanced DAS features Demo

      + +

      This is not a few feature in itself but a new sample demonstrating multiple advanced features in DAS like optimistic concurrency control, column converter, result set shape...New features will keep getting added to this in future.

      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/whats-new-sca-java.html b/site/trunk/site-publish/whats-new-sca-java.html new file mode 100644 index 0000000000..59c24663fd --- /dev/null +++ b/site/trunk/site-publish/whats-new-sca-java.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + Apache Tuscany : What's New SCA JAVA + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > General > SCA General Menu > Java SCA Menu > What's New SCA JAVA + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      What is the community working towards?

      + +

      We are begining to build content for the next release of SCA JAVA at this wiki location.

      + +

      There is also discussion going on the mailing list.
      +Please join us to help develop content or provide feedback to enhance Apache Tuscany. Thank you.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/whats-new.html b/site/trunk/site-publish/whats-new.html new file mode 100644 index 0000000000..a3943815f7 --- /dev/null +++ b/site/trunk/site-publish/whats-new.html @@ -0,0 +1,78 @@ + + + + + + + What's new? : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > SCA Overview > SCA Native Subproject > What's new? + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      +

      Work is going on to make the next release of native SCA/SDO available. Please see this email thread for more detail.

      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/site/trunk/site-publish/working-in-open-source.data/Getting Involved In Apache Projects.pdf b/site/trunk/site-publish/working-in-open-source.data/Getting Involved In Apache Projects.pdf new file mode 100644 index 0000000000..6d5d642af3 Binary files /dev/null and b/site/trunk/site-publish/working-in-open-source.data/Getting Involved In Apache Projects.pdf differ diff --git a/site/trunk/site-publish/working-in-open-source.data/Getting Involved In Apache Projects.ppt b/site/trunk/site-publish/working-in-open-source.data/Getting Involved In Apache Projects.ppt new file mode 100644 index 0000000000..9845ebf10c Binary files /dev/null and b/site/trunk/site-publish/working-in-open-source.data/Getting Involved In Apache Projects.ppt differ diff --git a/site/trunk/site-publish/working-in-open-source.data/Learning Open Source.pdf b/site/trunk/site-publish/working-in-open-source.data/Learning Open Source.pdf new file mode 100644 index 0000000000..a64b4d288c Binary files /dev/null and b/site/trunk/site-publish/working-in-open-source.data/Learning Open Source.pdf differ diff --git a/site/trunk/site-publish/working-in-open-source.data/Working With Apache Tuscany-workshop.pdf b/site/trunk/site-publish/working-in-open-source.data/Working With Apache Tuscany-workshop.pdf new file mode 100644 index 0000000000..c9c1d670f1 Binary files /dev/null and b/site/trunk/site-publish/working-in-open-source.data/Working With Apache Tuscany-workshop.pdf differ diff --git a/site/trunk/site-publish/working-in-open-source.data/Working With Apache Tuscany-workshop.ppt b/site/trunk/site-publish/working-in-open-source.data/Working With Apache Tuscany-workshop.ppt new file mode 100644 index 0000000000..66929b1137 Binary files /dev/null and b/site/trunk/site-publish/working-in-open-source.data/Working With Apache Tuscany-workshop.ppt differ diff --git a/site/trunk/site-publish/working-in-open-source.html b/site/trunk/site-publish/working-in-open-source.html new file mode 100644 index 0000000000..f16865ca17 --- /dev/null +++ b/site/trunk/site-publish/working-in-open-source.html @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + Apache Tuscany : Working In Open Source + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > Menus > General > Tuscany Downloads & Documentations > Working In Open Source + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      + + +
      + + + + + + + + +

      Information on how to work in open source

      +

      Purpose of this page is to help new users and developers feel comfortable with working in open source environment. This could be from the point of view of using the source code or understanding how open source works or understanding how to get more involved. Please feel free to contribute to the page or raise questions that are not answered.

      + +

      Before we start, it is important to point out that Apache Open Source projects are open to all who want to participate. You do not need an invitation to get involved in a project. If you are interested in a project, just get involved! We, at Apache Tuscany, welcome your participation. We would like to help you come on board and the best way to make this happen is for you to let us know where you need help. Welcome and Let's start.

      + +

      Learning Open Source
      +By the end of this presentation you will have a good understanding of the following:

      +
        +
      • Importance of Open Source
      • +
      • What is Open Source
      • +
      • Role of license and license types
      • +
      • Role of open source infrastructure and the different types
      • +
      • What is an open source community and why is it important
      • +
      + + +

      Getting Involved In Apache Projects
      +Many ask how do I get more involved in Apache Projects? By the end of this presentation you will have a good understanding of the following:

      +
        +
      • Apache Roles
      • +
      • What is the Apache Way
      • +
      • How to get involved
      • +
      + + +

      Working with Apache Tuscany
      +Now that you know how to work in open source, let's walk you through how to get more involved with Apache Tuscany. Please feel free to ask
      +questions.

      +
        +
      • Step by step how to guide for working with Apache Tuscany.
      • +
      + +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithbasiccrud.html b/site/trunk/site-publish/workingwithbasiccrud.html new file mode 100644 index 0000000000..f924f8456d --- /dev/null +++ b/site/trunk/site-publish/workingwithbasiccrud.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithBasicCrud + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithBasicCrud + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithBasicCrud

      +

      The RDB DAS provides a simple, command-oriented approach for reading and writing to the database.

      + +

      A simple read

      + +

      The following illustrates the simplest possible read:

      +
      +

      DAS das = DAS.FACTORY.createDAS(getConnection());
      + Command readCustomers = das.createCommand("select * from CUSTOMER where ID = 22590");
      + DataObject root = readCustomers.executeQuery();

      +
      +

      The first line creates an instance of the DAS that is primed with a given JDBC Connection object. The Connection can be procured in a number of different ways. This example is from the RDB DAS test suite and the implentation of getConnection() simply uses the DriverManager.getConnection() method.

      + +

      The second line uses the das instance as a factory to create a Command instance from the provided SQL SELECT string. The third line executes the command which returns a "root" SDO DataObject. This root DataObject is sometimes referred to as a "dummy" root and acts as a container for the graph of data returned from the query. The RDB DAS always returns a dummy root from executing a query.

      + +

      Once we have a handle to the root we can pull information from the returned customer object using the dynamic SDO apis like this:

      +
      +

      DataObject cust = root.getDataObject("CUSTOMER[1]");
      + String name = cust.getString("LASTNAME");

      +
      +

      The first line retreives the first Customer from the root's list of returned Customers (since we queried by ID, thereis only one). The second line pulls the LASTNAME value from the customer.

      + +

      A simple write

      + +

      The DAS leverages the SDO Change Summary to provide a very simple mechanism to flush data changes back to the database. We can illustrate this by continuing the previous example:

      +
      +

      customer.set("LASTNAME", "Pavick");
      + das.applyChanges(root);

      +
      +

      The first line uses the SDO dynamic APIs to change the LASTNAME property of the Customer instance and the second line directs the das to flush graph changes back to the database. At this point, the das scans the SDO ChangeSummary and generates the required UPDATE statement necessary to synchronize this change with the database.

      + +

      Although this simple example demonstrates a single property change to a single object, the das will process any numbers of changes made to any number of objects in a graph. Even if we read 1000 customers from the database and made several changes to each, flushing those changes back to the database is still just one call to das.applyChanges().

      + +

      A write commmand

      + +

      Writes to the database can also be done without using the change summary. To do this, we simply use the das instance as a factory to create a command initialized with a CREATE/UPDATE or DELETE statement.

      +
      +

      DAS das = DAS.FACTORY.createDAS(getConnection());
      + Command insert = das.createCommand("insert into CUSTOMER values (10, 'Williams', '5555 Maine Ave.')");
      + insert.execute();

      +
      +

      Although allowing the das to generate write statements from the change summary is recommended, this low level ability to execute aribtrary SQL is another option.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithcolumnconverters.html b/site/trunk/site-publish/workingwithcolumnconverters.html new file mode 100644 index 0000000000..77144bacbb --- /dev/null +++ b/site/trunk/site-publish/workingwithcolumnconverters.html @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithColumnConverters + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithColumnConverters + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithColumnConverters

      + +

      Sometimes it is desireable to modify a column value retreived from a database column before it is stored into a DataObject property. One example might be a database column with possible values '0' or '1' but the desired DataObject property is 'false' or 'true'. Another example might be a String property that should be obfuscated or encryted before it is stored into a column.

      + +

      The RDB DAS provides a simple "converter" framework that can be used for these cases and others. To use this framework the application developer must provide a new Converter class to provide the desired transformations from column to property and from property back to column. The provided converter must implement the following interface:

      +
      +
      +package org.apache.tuscany.das.rdb;
      +
      +/**
      + * A lightweight Table-column <--> DataObject-property converter framework. Converters allow a user to
      + * insert a transformation between a column value and is destination DataObject property value. For example,
      + * by default, a VARCHAR column will be represented as a     String in its corresponding DataObject property.
      + * A user could insert a converter that transforms the the VARCHAR value to an Integer. If this is done then
      + * although the column returns character data, the DataObject property will be an Integer
      + */
      +public interface Converter {
      +
      +    /**
      +     * Transform the columnData object to a new value and possibly new type. This should be the inverse
      +     * operation of #getColumnValue
      +     *
      +     * @param columnData
      +     *            The column value to transorm
      +     * @return Returns the transformed value
      +     */
      +    Object getPropertyValue(Object columnData);
      +
      +    /**
      +     * Transform the columnData object to a new value and possibly new type. This should be the inverse
      +     * operation of #getPropertyValue
      +     *
      +     * @param propertyData
      +     *            The property value to transform
      +     * @return Returns the transformed value
      +     */
      +    Object getColumnValue(Object propertyData);
      +
      +}
      +
      +
      +

      The following example illustrates the use of the converter framework to obfuscate a String value before it is stored to the database and deobfuscate it on read.

      +
      +
      +DAS das = DAS.FACTORY.createDAS(getConfig("CustomerConfig.xml"), getConnection());
      +
      +        // Create and initialize command to read customers
      +        Command read = das.getCommand("getFirstCustomer");
      +
      +        // Read
      +        DataObject root = read.executeQuery();
      +
      +        //Modify
      +        root.setString("CUSTOMER[1]/LASTNAME", "Some new name");
      +
      +        das.applyChanges(root);
      +
      +
      +

      This example just shows a simple read of a customer DataObject followed setting the last name to some new value. You will have to take my word for it that the value is not written as-is but is instead obfuscated. The actual value written to the database table column is "Fbzr arj anzr" based on the ROT13 algorithm used in the converter.

      + +

      Converters are specified in the configuration, usually as part of a config.xml file. Here is the config file for the example:

      +
      +
      <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      +
      +  <Command name="getFirstCustomer" SQL="Select * from CUSTOMER where ID = 1" kind="Select"/>
      +
      +  <Table tableName="CUSTOMER">
      +        <Column columnName="ID" primaryKey="true"/>
      +    <Column columnName="LASTNAME" converterClassName="org.apache.tuscany.das.rdb.test.mappings.StringObfuscationConverter"/>
      +  </Table>
      +
      +</Config>
      +
      +
      +

      Here is the user-defined converter class:

      +
      +
      +public class StringObfuscationConverter implements Converter {
      +
      +    public StringObfuscationConverter() {
      +        super();
      +    }
      +
      +    public Object getPropertyValue(Object columnData) {
      +        return toRot13((String) columnData);
      +    }
      +
      +    public Object getColumnValue(Object propertyData) {
      +        return toRot13((String) propertyData);
      +    }
      +
      +    // Utilities
      +
      +    // A simple, reversible, obfuscation algorithm using a ROT13 implementation
      +    private String toRot13(String original) {
      +
      +        int abyte = 0;
      +        byte[] buffer = {};
      +        try {
      +            buffer = original.getBytes("ISO-8859-1");
      +        } catch (UnsupportedEncodingException e) {
      +            throw new Error(e);
      +        }
      +
      +        for (int i = 0; i < buffer.length; i++) {
      +            abyte = buffer[i];
      +            int cap = abyte & 32;
      +            abyte &= ~cap;
      +            abyte = ((abyte >= 'A') && (abyte <= 'Z') ? ((abyte - 'A' + 13) % 26 + 'A') : abyte) | cap;
      +            buffer[i] = (byte) abyte;
      +        }
      +        try {
      +            return new String(buffer, "ISO-8859-1");
      +        } catch (UnsupportedEncodingException e) {
      +            throw new Error(e);
      +        }
      +    }
      +}
      +
      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithcompoundkeys.html b/site/trunk/site-publish/workingwithcompoundkeys.html new file mode 100644 index 0000000000..f74ecb2547 --- /dev/null +++ b/site/trunk/site-publish/workingwithcompoundkeys.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithCompoundKeys + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithCompoundKeys + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithCompoundKeys

      +

      The RDB DAS provides the ability to work with single-column keys as well as keys composed of multiple columns (compound keys). RDB DAS clients can specify the primary key for a table as well as foreign keys that reference other tables. The primary key for a table can be identified to the DAS via configuration (typically via a configuration xml file). The following is an example config file that defines a compound primary key:

      +
      +
      <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      +
      +      <Table tableName="ORDERDETAILS">
      +         <Column columnName="ORDERID" primaryKey="true"/>
      +         <Column columnName="PRODUCTID" primaryKey="true"/>
      +      </Table>
      +
      +   </Config>
      +
      +
      +

      Relationships between tables are in terms of primary keys and foreign keys and so foreign keys can also be compound. The following example illustrates a relationship using a compound foreign key:

      +
      +
      <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      +
      +      <Table tableName="ORDERDETAILS">
      +         <Column columnName="ORDERID" primaryKey="true"/>
      +         <Column columnName="PRODUCTID" primaryKey="true"/>
      +      </Table>
      +
      +      <Table tableName="ORDERDETAILSDESC">
      +         <Column columnName="ID" primaryKey="true"/>
      +      </Table>
      +
      +      <Relationship name="orderDetailsDesc" primaryKeyTable="ORDERDETAILS"
      +                     foriegnKeyTable="ORDERDETAILSDESC" many="true">
      +         <KeyPair primaryKeyColumn="ORDERID" foriegnKeyColumn="ORDERID"  />
      +         <KeyPair primaryKeyColumn="PRODUCTID" foreignKeyColumn="PRODUCTID" />
      +      </Relationship>
      +   </Config>
      +
      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithconventions.html b/site/trunk/site-publish/workingwithconventions.html new file mode 100644 index 0000000000..1aef87bc97 --- /dev/null +++ b/site/trunk/site-publish/workingwithconventions.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithConventions + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithConventions + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithConventions

      + +

      The RDB DAS makes use of a concept referred to as ConventionOverConfiguration. This concept reflects the notion that configuration can be avoided by following convention and that this is generally a good thing.

      + +

      The DAS offers several conventions to reduce the need for configuration and we are considering the addition of more. The following is the current set.

      + +

      Primary Key

      + +

      The DAS must know the primary key of a table in order to generate a correct INSERT, UPDATE or DELETE statement. The primary key definition can be provided in the configuration. However, if the tables follow the convention that the primary key is named "ID" then no configuration to define the key is necessary. In the absence of configuration to the contrary, the DAS will assume that a DataObject property named "ID" represents the key column in the underlying database table.

      + +

      Foreign Key Relationships

      + +

      Similar to the way primary keys are handled, the DAS will assume that a property named "xxx_ID" represents a foreign key column in the underling database and further, that this foreign key references table "xxx". If the application developer has the luxury of defining the database tables then the explicit definition of relationships via a config file is unnecessary if this convention can be followed.

      + +

      TBD - What is the default name of the relationship?

      + +

      Name Mappings

      + +

      In the absence of configuration to the contrary, the DAS will use a simple implicit mapping from Table/Column names to DataObject Type/Property names. An example of this convention is provided in ConventionOverConfiguration.

      + +

      Optimistic Concurrency Control

      + +

      This section is TBD. As of the current M2 release candidate, the absence of OCC configuration means that no collision detection will be performed. We are considering having the default behavior be to overqualify the update statement with all modified columns.

      + +

      Partial Update

      + +

      Unless otherwise specified, the RDB DAS will default to a scheme where INSERT/UPDATE/DELETE statements are generated based on the change summary (ChangeSummaryProcessing) associated with the modified datagraph. The DAS will not generate an UPDATE statement that updates all table columns. Instead, the DAS will update only those columns that were actually modified in the graph.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithgenerateddatabasekeys.html b/site/trunk/site-publish/workingwithgenerateddatabasekeys.html new file mode 100644 index 0000000000..c3b4f13b21 --- /dev/null +++ b/site/trunk/site-publish/workingwithgenerateddatabasekeys.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithGeneratedDatabaseKeys + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithGeneratedDatabaseKeys + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithGeneratedDatabaseKeys

      +

      The RDB DAS provides the ability to work with database generated keys. A piece of configuration information , typically via a configuration XML file, is used to indicate to the DAS that a column value is generated by the database. This piece of information is necessary when new rows are inserted to the database since the DAS will generate an INSERT statement that does not include the generated column.

      + +

      The follwing example illustrates the use of generated keys with the DAS:

      +
      +

      DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), getConnection());
      + Command select = das.getCommand("all companies");
      + DataObject root = select.executeQuery();

      + +

      // Create a new Company
      + DataObject company = root.createDataObject("COMPANY");
      + //Initialize properties of the new company
      + company.setString("NAME", "Do-rite Pest Control");

      + +

      // Flush changes
      + das.applyChanges(root);

      + +

      // Inspect the id
      + Integer id = (Integer) company.get("ID");

      +
      +

      The first line creates a DAS instance form the factory passing it a stream over the file "CompanyConfig.xml". Here are the contents of that file:

      +
      +
      <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      +
      +      <Command name="all companies" SQL="select * from COMPANY" kind="Select"/>
      +
      +      <Table tableName="COMPANY">
      +        <Column columnName="ID" primaryKey="true" generated="true"/>
      +      </Table>
      +
      +   </Config>
      +
      +
      +

      Note that only the 'ID' column is specified in the file since this is the only column we need to attach any information to. Notice also that when the new Company instance in created, no value is assigned to the 'ID' property since this value will be supplied by the database when the insert operation is performed.

      + +

      As part of the "apply changes" processing, the DAS will propogate the database-supplied key values back to the respective DataObjects in the graph. The purpose of this is to make the values available to the application if needed.

      + +

      This simple example only demosntrates the insertion of a flat graph of data since the graph consists only of Company instances. But, the DAS is capable of more complex scenarios. The DAS can also handle graphs of related DataObjects each with generated columns.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithnamemapping.html b/site/trunk/site-publish/workingwithnamemapping.html new file mode 100644 index 0000000000..3bff19ee29 --- /dev/null +++ b/site/trunk/site-publish/workingwithnamemapping.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithNameMapping + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithNameMapping + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithNameMapping

      + +

      The default behavior for the RDB DAS is to map database names to SDO names. So, if a CUTSOMER table is read from the database then each row will be represented as a CUSTOMER DataObject. Likewise, if the CUSTOMER tabel has columns (ID, LASTNAME, ADDRESS) then CUSTOMER DataObject instances will have properties (ID, LASTNAME, ADDRESS). Database Table names map to DataObject Type names and database column names map to DataObject property names.

      + +

      This implicit mapping of database and SDO names woks well but some developers will want explicit name mapping that allows the database and SDO names to vary. One typical example is that the database might have all tables and columns conventionally named in all upercase but a Java developer might want to work with SDO Types and properties that are camelcased. So, database names CUSTOMER and LASTNAME might map to SDO names Customer and lastName.

      + +

      The RDB DAS allows this type of explicit mapping via configuration (usually in the form of a XML config file). The following example illstrates the use of this feature:

      +
      +
      DAS das = DAS.FACTORY.createDAS(getConfig("BooksConfigWithAlias.xml"), getConnection());
      +
      +   Command select = das.getCommand("get book by ID");
      +   select.setParameter(1, Integer.valueOf(1));
      +
      +   DataObject root = select.executeQuery();
      +   String author = root.getString("Book[1]/Writer"));
      +
      +
      +

      Here is the associated configuration file:

      +
      +
      <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      +
      +       <Command name="get all books" SQL="SELECT * FROM BOOK" kind="Select"/>
      +
      +       <Command name="get Cat in the Hat" SQL="SELECT * FROM BOOK WHERE NAME = 'Cat in the Hat'" kind="Select"/>
      +
      +       <Command name="get book by ID" SQL="SELECT * FROM BOOK WHERE BOOK.BOOK_ID = ?" kind="Select"/>
      +
      +       <Table tableName="BOOK" typeName="Book">
      +           <Column columnName="BOOK_ID" primaryKey="true"/>
      +           <Column columnName="AUTHOR" propertyName="Writer"/>
      +           <Column columnName="OCC" collision="true"/>
      +       </Table
      +   </Config>
      +
      +
      +

      You can see that the Table definition provides "typeName" and "propertyName" attributes to override the defualt use of the all-uppercase database names. You can also see the use of these names in the example Java source.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithoptimisticconcurrencycontrol.html b/site/trunk/site-publish/workingwithoptimisticconcurrencycontrol.html new file mode 100644 index 0000000000..43a11b2fea --- /dev/null +++ b/site/trunk/site-publish/workingwithoptimisticconcurrencycontrol.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithOptimisticConcurrencyControl + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithOptimisticConcurrencyControl + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithOptimisticConcurrencyControl

      + +

      The RDB DAS provides a straightforward mechanism for support of OptimisticConcurrencyControl. To enable OCC a client must designate an integer version column in the configuration (usually via a config xml file). The following example is an example of a cofig file that identifies a version column:

      +
      +
      <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      +
      +     <Command name="select book 1" SQL="select * from BOOK where BOOK_ID = 1" kind="Select"/>
      +
      +     <Table tableName="BOOK">
      +        <Column columnName="BOOK_ID" primaryKey="true"/>
      +        <Column columnName="OCC" collision="true" managed="true"/>
      +     </Table>
      +
      +   </Config>
      +
      +
      +

      This line in the config file _<Column columnName="OCC" collision="true" managed="true"/>_designates the column named "OCC" as the version column and also sets "managed" to true. The "managed" attribute has to do with how the version column is changed. In order for OCC to work, some agent must change the value of the version column each time the row is modified. A new value in the version column is what tells the DAS that the row has been modified. If a version column is "managed" then the DAS is responsible for incrementing the value of the column each time some column in the row is changed. The other option is "managed= false" and in this case, the DAS will assume some other agent is responsible for updating the version column. This other agent is likely to be the client application itself or the database via a trigger or some other mechanism.

      + +

      When applying changes made to a graph (see ChangeSummaryProcessing), the DAS will throw an exception if any table row has been modified since the row was read. For example, if a DAS client reads a row representing a specific Customer and then tries to update that Customer, the DAS will throw an exception if the Customer has already been modified by some other agent. The following example illustrates applying changes and checking for a collision failure:

      +
      +
      +DAS das = DAS.FACTORY.createDAS(getConfig("ManagedBooksConfig.xml"), getConnection());
      +   // Read a book instance
      +   Command select = das.getCommand("select book 1");
      +   DataObject root = select.executeQuery();
      +   DataObject book = root.getDataObject("BOOK[1]");
      +   book.setInt("QUANTITY", 2);
      +
      +   // Try to apply changes and catch potential update collision
      +   try {
      +      das.applyChanges(root);
      +   } catch (RuntimeException ex) {
      +      if (!ex.getMessage().equals("An update collision occurred")) {
      +          recover();
      +      }
      +   }
      +
      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithpaging.html b/site/trunk/site-publish/workingwithpaging.html new file mode 100644 index 0000000000..ffced67df1 --- /dev/null +++ b/site/trunk/site-publish/workingwithpaging.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithPaging + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithPaging + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithPaging

      +

      The RDB DAS provides a mechanism for working with the result of large queries one chunk (page) at a time. This capability is modeled after the behavior of web search engines. For example, if I Google "RDB DAS" I am presented with a page representing the first ten references. I am also told that there were close to 500,000 matches and I am given the opportunity to go to the next page or directly to pages two through ten. After moving from the first page I am also provided the opportunity to move back to some previous page.

      + +

      The DAS "Pager" is a wrapper around a provided read command and provides the APIs for paging. Here is the Pager interface:

      +
      +
      +public interface Pager {
      +
      +    /**
      +     * Get the next page of data
      +     */
      +    DataObject next();
      +
      +    /**
      +     * Get the page prior to the last page returned
      +     */
      +    DataObject previous();
      +
      +    /**
      +     * Return a specific identified page.
      +     */
      +    DataObject getPage(int page);
      +
      +}
      +
      +
      +

      A Pager is instantiated on a given read Command and the constructor is used to specify the desired page size (number of database rows per page). The following example illustrates construction and use of a pager:

      +
      +
      +DAS das = DAS.FACTORY.createDAS(getConnection());
      +   // Build command to read all customers
      +   Command custCommand = das.createCommand("select * from CUSTOMER order by ID");
      +
      +   // Create a pager with the command
      +   Pager pager = new PagerImpl(custCommand, 2);
      +
      +   // Get and work with first page
      +   DataObject root = pager.next();
      +   DataObject customer1 = root.getDataObject("CUSTOMER[1]");
      +   DataObject customer2 = root.getDataObject("CUSTOMER[2]");
      +
      +   // Get and work with the second page
      +   root = pager.next();
      +   customer1 = root.getDataObject("CUSTOMER[1]");
      +   customer2 = root.getDataObject("CUSTOMER[2]");
      +
      +   // First page again
      +   root = pager.previous();
      +   customer1 = root.getDataObject("CUSTOMER[1]");
      +   customer2 = root.getDataObject("CUSTOMER[2]");
      +
      +
      +

      The current Pager specification and implementation are very preliminary and will likely change in significant ways! For instance, the pager is intended to work in completely disconnected scenarios so there should be no connection context maintained between invocations of the pager. Currently the Pager references a Command that, in turn, references a connection (oops!). Some work must be done to make the pager lightweight as it will likely be stored in session.

      + +

      We probably should also create a Factory rather than using the impl constructor.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithrelationships.html b/site/trunk/site-publish/workingwithrelationships.html new file mode 100644 index 0000000000..263b28ce67 --- /dev/null +++ b/site/trunk/site-publish/workingwithrelationships.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithRelationships + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithRelationships + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithRelationships

      + +

      As mentioned elsewhere in this guide, the RDB DAS provides a simple, implicit mapping from SDO Types/Properties to Relational Tables/Columns. So, in the absence of configuration to the otherwise, reading a table named CUSTOMER with columns NAME and ADDRESS will result in a data graph containing SDO DataObjects of Type CUSTOMER with properties NAME and ADDRESS.

      + +

      This is great for reading entities from a single table but clients often need to read data from related tables for example Customers and their related Orders. The RDB DAS can work with related database tables and reads that span tables produce graphs of related data objects. Continuing with our Customer->Order example, a client can read a set of Customers and related Orders by using a SELECT statement that includes a join as in the following example:

      +
      +

      DAS das = DAS.FACTORY.createDAS(getConfig("CustomerOrderConfig.xml"), getConnection());
      + // Read some customers and related orders
      + Command select = das.createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID WHERE CUSTOMER.ID = 1");

      + +

      DataObject root = select.executeQuery();
      + DataObject customer = root.getDataObject("CUSTOMER[1]");
      + List orders = customer.getList("orders");

      +
      +

      You can see that the client can work with the data graph as a set of related objects. Once the application has a handle to a customer, it can reference that customers related orders by accessing the customers "orders" property.

      + +

      Notice that the example provides a config file as part of creating the DAS. This file contains mapping information that defines to the DAS how the queried tables are related. Here are the contents of the config file:

      +
      +
      <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      +
      +     <Table tableName="CUSTOMER">
      +        <Column columnName="ID" primaryKey="true"/>
      +     </Table>
      +
      +     <Table tableName="ANORDER">
      +        <Column columnName="ID" primaryKey="true"/>
      +     </Table>
      +
      +     <Relationship name="orders" primaryKeyTable="CUSTOMER" foreignKeyTable="ANORDER" many="true">
      +        <KeyPair primaryKeyColumn="ID" foreignKeyColumn="CUSTOMER_ID"/>
      +     </Relationship>
      +
      +   </Config>
      +
      +
      +

      This config file specifies the primary keys of the related tables and then the relationship between them. It also provides a convenient name for the relationship. In short, this config specifies that the CUSTOMER table and ANORDER table are related via ANORDERs column named "CUSTOMER_ID" which references CUSTOMERS column named "ID". The name of the relationship is "orders"

      + +

      As a side note, the config in this example is not required since the table definitions follow a "convention" recognized by the DAS. See WorkingWithConventions.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithstaticdataobjects.html b/site/trunk/site-publish/workingwithstaticdataobjects.html new file mode 100644 index 0000000000..1604f0e287 --- /dev/null +++ b/site/trunk/site-publish/workingwithstaticdataobjects.html @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithStaticDataObjects + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithStaticDataObjects + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithStaticDataObjects 

      + +

      Although the RDBDAS default behavior is to produce graphs of dynamic DataObjects (see ResultSetDrivenDataObjectTypes), the DAS allows users to work with Static DataObjects as well.

      + +

      Clients can designate a set of Types by providing a piece of configuration (usually in the form of a configuration XML file) to the DAS and the DAS will then use these Types for the DataObject model.

      + +

      Without any name mapping configuration specified, the DAS will attempt to use DataObject Type and Property names equivalent to database Table and Column names. For example, if the database table name is "BANK_EMPLOYEE", the DAS will attempt to create DataObject instances of type BANK_EMPLOYEE. If this Type doesn't exist in the provided Types, an exception will be thrown by SDO.

      + +

      To map these database tables and columns to your SDO types and properties, you can provide a "Type Name" and "Property Name" (see WorkingWithNameMapping). In the above example, if we specify a Type name of "employee", the DAS will attempt to create DataObject instances of type "employee" from the information in the BANK_EMPLOYEE table.

      + +

      It is not necessary to specify any sort of mapping between database column data types and your Property data types. If the data types do not match, a conversion will be made between the two when the property is set on the SDO model. The possible data type conversions are specified in the SDO specification. If there is no valid conversion available between the two data types, you can specify a Converter (see WorkingWithColumnConverters) that the DAS will use to convert the data before setting the value in the DataObject.

      + +

      The following example demostrates the RDB DAS wih Static SDO Types:

      +
      +

      SDOUtil.registerStaticTypes(CustomerFactory.class);

      + +

      DAS das = DAS.FACTORY.createDAS(getConfig("staticCustomerOrder.xml"), getConnection());
      + Command select = das.getCommand("Customer and Orders");
      + select.setParameter(1, Integer.valueOf(1));
      + DataObject root = select.executeQuery();

      + +

      // Modify a customer
      + Customer customer = (Customer) root.getDataObject("Customer[1]");
      + customer.setLastName("Pavick");

      + +

      // Modify an order
      + AnOrder order = (AnOrder) customer.getOrders().get(0);
      + order.setProduct("Kitchen Sink 001");

      + +

      // Flush changes
      + das.applyChanges((DataObject) root);

      +
      +

      And, here is the associated config file:

      +
      +
      <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      +     dataObjectModel="http:///org.apache.tuscany.das.rdb.test/customer.xsd">
      +
      +    <Command name="Customer and Orders" SQL="SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?" kind="Select"/>
      +
      +    <Table tableName="CUSTOMER" typeName="Customer">
      +      <Column columnName="ID" primaryKey="true"/>
      +    </Table>
      +
      +    <Table tableName="ANORDER" typeName="AnOrder">
      +      <Column columnName="ID" primaryKey="true"/>
      +      <Column columnName="CUSTOMER_ID"/>
      +    </Table>
      +
      +    <Relationship name="orders" primaryKeyTable="CUSTOMER" foreignKeyTable="ANORDER" many="true">
      +       <KeyPair primaryKeyColumn="ID" foreignKeyColumn="CUSTOMER_ID"/>
      +    </Relationship>
      +
      +   </Config>
      +
      +
      +

      The first line of the example registers the Static model with the SDO runtime. This step would not normally be intermixed with the data access code but the Types must be registered by some part of the applicaiton. The DAS is provided with the URI or the static types via the config file via the dataObjectModel attribute.

      + +

      You can see that the sample makes use of the Types provided.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithstoredprocedures.html b/site/trunk/site-publish/workingwithstoredprocedures.html new file mode 100644 index 0000000000..197c9715f6 --- /dev/null +++ b/site/trunk/site-publish/workingwithstoredprocedures.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithStoredProcedures + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithStoredProcedures + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

      WorkingWithStoredProcedures

      + +

      The DAS can work with stored procedures in the same way it works with SQL statements. The following example should look familiar except that a stored prcedure call statement replaces the typical SELECT statement:

      +
      +

      DAS das = DAS.FACTORY.createDAS(getConnection());
      +Command read = das.createCommand("{call GETALLCOMPANIES()}");
      +DataObject root = read.executeQuery();

      +
      +

      The predefined stored procedure "GETALLCOMPANIES" returnes a result just like "select * from company" would. There are, however, procedures that do not return
      +results and these calls can also be executed with the same programming model. In fact any arbitrary stored procedure can be invoked in this way. The follwing example calls a proc that deletes an identified company:

      +
      +

      DAS das = DAS.FACTORY.createDAS(getConnection());
      + Command delete = das.createCommand("{call DELETECUSTOMER(?)}");
      + delete.setParameter(1, 1234);
      + delete.execute();

      +
      +

      Stored procedures may also provide IN/OUT and OUT parameters. The following illustrates the use of a stored procedure that returns a result set as well as an OUT parameter:

      +
      +

      DAS das = DAS.FACTORY.createDAS(getConfig("storedProcTest.xml"), getConnection());
      + Command read = das.getCommand("getNamedCustomers");
      + read.setParameter(1, "Williams");
      + DataObject root = read.executeQuery();

      + +

      Integer customersRead = (Integer) read.getParameter(2);

      +
      +

      This example makes use of a configuration file to define the command including the OUT parameter:

      +
      +
      <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">   <Command name="getNamedCustomers" SQL="{call GETNAMEDCUSTOMERS(?,?)}" kind="procedure">
      +
      +     <Parameter direction="IN" columnType="commonj.sdo.String"/>
      +
      +     <Parameter direction="OUT" columnType="commonj.sdo.IntObject"/>
      +
      +   </Command>
      +
      + </Config>
      +
      +
      +

      This stored procedure is defined such that the first argument provides a name to match when looking for customers and the second argument is an OUT parameter and providing the number of customers that match the provided name. The proc also returns the list of matching Customers.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/workingwithtransactions.html b/site/trunk/site-publish/workingwithtransactions.html new file mode 100644 index 0000000000..a7e94c72ea --- /dev/null +++ b/site/trunk/site-publish/workingwithtransactions.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + Apache Tuscany : WorkingWithTransactions + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WorkingWithTransactions + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

       WorkingWithTransactions

      + +

      By default, the RDB DAS assumes responsibility for managing transaction boundaries by executing commit and rollback operations against the database. The boundaries of these transactions are as follows:

      + +

      Reading Data

      + +

      Queries to the database are always made by calling DAS command's "executeQuery()" method. The associated transaction lives for the duration of this method execution. That is, the transaction can be thought to start when control is transferred to "executeQuery" and the transaction ends just prior to return from this method.

      + +

      Writing Data

      + +

      Writes can be accomplished by two DAS APIs. First is calling the DAS "execute()" command against a command the will perform write operations and, in this case, the transaction boundaries are the same as read queries. That is the transaction life matches the life of the "execute" processing. If the method returns without exception then the application can assume that any changes were successfully committed to the database. If an exception is returned then the changes will have all been rolled back.

      + +

      The second API used by clients is the DAS applyChanges() method (see ChangeSummaryProcessing). Again, the boundaries of the transaction match the boundaries fo the call to the method. The DAS will create a set of INSERT/UPDATE and DELETE statments to flush the graph changes to the database and all of these statements will be executed as part of a single transaction. If the method returns without exception then the application can assume that all changes were successfully committed to the database. If an exception is returned then the changes will have all been rolled back.

      + +

      External Transactions

      + +

      The RDB DAS provides a straightforward mechanism for working with external transactions. As mentioned above, the DAS, by default, acts as the transaction manager and commits and rolls back transactions accordingly. However, that DAS can also be configured to not issue commit/rollback and this is the behavior needed to have the DAS participate in a larger transaction since some external party is responsible for these actions. The following pseudo-code illustrates this:

      +
      +
      +tx.begin();
      +try {
      +     doSomeJMSStuff();
      +     doSomeDASStuff();
      +     tx.commit();
      +} catch (AnyException ex) {
      +     tx.rollback();
      +}
      +
      +
      +

      In the example above, the DAS has been configured to not managed transactions since this is handled by the calling program.

      + +

      The DAS is set to behave this way by a piece of configuration (typically via a configuration xml file). The following config file snippet illustrates this setting:

      +
      +
      <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      +
      +        <ConnectionInfo managedtx="false"/>
      +
      +        <Command name="get a customer" SQL="Select * from CUSTOMER where ID = 1" kind="select"/>
      +
      +</Config>
      +
      +
      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/writeoperationordering.html b/site/trunk/site-publish/writeoperationordering.html new file mode 100644 index 0000000000..e5707156a9 --- /dev/null +++ b/site/trunk/site-publish/writeoperationordering.html @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + Apache Tuscany : WriteOperationOrdering + + + + + + + + + + + + + + + +
      + + + + +   + +
      + + +
      +
      + + + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > WriteOperationOrdering + + User List | Dev List | Issue Tracker   +
      + + + + + + + +
      + + +
      + +
      +
      +

       WriteOperationOrdering

      + +

      Relational databases often use Referential Integrity (RI)constraints to maintain database consistency. When RI is enabled, database operations must be performed in a specific order that prevents invalid references. If this order is not adhered to then the database will throw an exception rather than let the write succeed.

      + +

      When an application makes modifications to a data graph and then asks the RDB DAS to "apply changes", the DAS will create a "batch" of database writes that must be sorted and then executed in the correct order to avoid RI Constraint exceptions. A simple example will help here. Assume a database with two tables CUSTOMER and ORDER. Also assume that the ORDER table has a foreign keyreference to the CUSTOMER table. Now assume that the application has made modifications to a data graph that was retrieved by the DAS using a SELECT statement like the following:

      +
      +
      SELECT * FROM CUSTOMER LEFT JOIN ORDER ON CUSTOMER.ID = ORDER.CUSTOMER_ID WHERE CUSTOMER.NAME = ?
      +
      +
      +

      The resulting data graph will contain all matching customers as well as their related orders. Now assume the application uses the SDO API's to delete some customer from the graph and then also deletes the related orders. Although the application deleted the customer first, the DAS must delete the orders first from the database since deleting the customer, with existing referencing orders, would violate the RI constraints and result in an exception.

      +
      +
      +
      + + +
      + + + + + + website stats + + + + + + diff --git a/site/trunk/site-publish/xquery-java-das.html b/site/trunk/site-publish/xquery-java-das.html new file mode 100644 index 0000000000..117e884036 --- /dev/null +++ b/site/trunk/site-publish/xquery-java-das.html @@ -0,0 +1,100 @@ + + + + + + + XQuery Java DAS : Apache Tuscany + + + + + + + + + + + + + + + + +
      + + + + +   + + + +
      + + +
      +
      + + + + + + + +
      +  Apache Tuscany > Home > DAS Overview > XQuery Java DAS + + User List | Dev List | Issue Tracker   +
      + + + + + +
      +
      + +
      +
      + + +
      +

      General

      +

      FAQ
      +Downloads
      +What's new?

      + +

      Guides

      +

      User Guide
      +Architecture Guide
      +Java Doc

      + +

      Development

      +

      Source Code
      +Get Involved

      + + +

      What is XQuery Data Access Service?

      + +

      This project is in progress. Please see mailing list for more detail.
      +Please help to update this page. Thank you

      +
      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file -- cgit v1.2.3