diff options
author | coreyg <coreyg@13f79535-47bb-0310-9956-ffa450edef68> | 2014-11-21 09:30:19 +0000 |
---|---|---|
committer | coreyg <coreyg@13f79535-47bb-0310-9956-ffa450edef68> | 2014-11-21 09:30:19 +0000 |
commit | 200a40b332420f94992eb39a6d0ea1cf1490ffc4 (patch) | |
tree | 1c76ef1d254c7bfc91128a313d319bd60da9d01e /site/trunk/site-publish/tuscany-sdo-java-faq.html | |
parent | 85f53ab6ab4f664d63774c94b672a875c9e52b8a (diff) |
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
Diffstat (limited to 'site/trunk/site-publish/tuscany-sdo-java-faq.html')
-rw-r--r-- | site/trunk/site-publish/tuscany-sdo-java-faq.html | 361 |
1 files changed, 361 insertions, 0 deletions
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 @@ + +<!-- + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE- 2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <!-- generateKeywords macro --> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + <!-- generateKeywords macro end --> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico"> + <TITLE>Apache Tuscany : Tuscany SDO Java - FAQ</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <BODY onload="init()"> + <!-- topNav macro --> + <TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg"> + <TR> + <TD valing="top" align="left"> + <A href="https://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A> + </TD> + <TD> + <A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A> + </TD> + + <TD width="100%"> + + </TD> + + <!-- Adds the edit page link to the top banner--> + <TD valign="bottom"> + <DIV style="padding: 2px 10px; margin: 0px;"> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=51434"> + <IMG src="http://tuscany.apache.org/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + </DIV> + </TD> + + </TR> + </TABLE> + <!-- topNav macro end --> + + <!-- breadCrumbs macro --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="home.html" title="Apache Tuscany">Apache Tuscany</A> > <A href="home.html" title="Home">Home</A> > <A href="sdo-overview.html" title="SDO Overview">SDO Overview</A> > <A href="sdo-java.html" title="SDO Java">SDO Java</A> > <A href="" title="Tuscany SDO Java - FAQ">Tuscany SDO Java - FAQ</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + <!-- breadCrumbs macro end --> + + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD align="left" valign="top"> + + <!-- pageContent macro --> + <DIV id="PageContent"> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR> +<TD class="confluenceTd" valign="top" width="15%"> +<DIV class="panel" style="background-color: #ECF4D1;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>General</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;"> +<P><A href="home.html" title="Home">Home</A><BR> +<A href="http://www.apache.org/licenses/LICENSE-2.0.html" class="external-link" rel="nofollow">License </A><BR> +<A href="sdo-java-get-involved.html" title="SDO Java Get Involved">Get Involved</A><BR> +<A href="sdo-java-found-a-bug.html" title="SDO Java Found a Bug">Found a Bug?</A></P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>SDO Java</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;"> +<P><A href="sdo-java.html" title="SDO Java">SDO Java Home</A><BR> +<A href="" title="Tuscany SDO Java - FAQ">FAQ</A><BR> +<A href="sdo-java-releases.html" title="SDO Java Releases">Downloads</A><BR> +<A href="sdo-java-documentation-menu.html" title="SDO Java Documentation Menu">Documentation</A><BR> +<A href="http://svn.apache.org/repos/asf/tuscany/sdo-java/trunk/" class="external-link" rel="nofollow">Source Code</A></P> +</DIV></DIV></TD> +<TD class="confluenceTd" valign="top" width="85%"> +<DIV class="panel" style="background-color: #ECF4D1;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>Apache Tuscany SDO Java Frequently Asked Questions</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;"> +<UL> + <LI><A href="#TuscanySDOJava-FAQ-BuildandDevelopmentQuestions">Build and Devlopment Questions</A> + <UL> + <LI><A href="#TuscanySDOJava-FAQ-DevA">How can I debug into EMF in Eclipse? </A></LI> + <LI><A href="#TuscanySDOJava-FAQ-DevB">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? </A></LI> + <LI><A href="#TuscanySDOJava-FAQ-DevC">Is there support for extending generated SDO implementation classes? </A></LI> + <LI><A href="#TuscanySDOJava-FAQ-DevD">How do I work with javajet files to modify the SDO generator code? </A></LI> + <LI><A href="#TuscanySDOJava-FAQ-DevE">Is there way to turn change summary on and off? </A></LI> + </UL> + </LI> +</UL> +</DIV></DIV> + +<H2><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-BuildandDevelopmentQuestions"></A></H2> + +<DIV class="" style="background-color: #C3CDA1;">Build and Development Questions</DIV> + + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevA"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;">How can I debug into EMF in Eclipse?</DIV> + + +<P>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 <A href="http://www.eclipse.org/modeling/emf/downloads/#archives" class="external-link" rel="nofollow">http://www.eclipse.org/modeling/emf/downloads/#archives</A> (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 ...</P> +<OL> + <LI>wait until you debug into an EMF class file that doesn't have a source association and then click the "Attach Source ..." button, or ...</LI> + <LI>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.</LI> +</OL> + + +<P>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 </P> + +<P>/EMF_SRC/org.eclipse.emf.source_2.2.3.v200705141058/src/org.eclipse.emf.ecore_2.2.3.v200705141058/src.zip</P> + +<P>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.</P> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevB"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;">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?</DIV> + + +<P><B>For example:</B></P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +XSDHelper.INSTANCE.define(is, <SPAN class="code-keyword">null</SPAN>); +</PRE> +</DIV></DIV> +<P><B>and then in another static method xml is loaded</B></P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +XMLDocument xmlDoc = XMLHelper.INSTANCE.load(is); +</PRE> +</DIV></DIV> + +<P><B>Answer:</B> The methods you point out are not static methods, but are executed in the context of the singleton helpers, and the<BR> +metadata generated by the XSDHelper.INSTANCE singleton is stored in the TypeHelper.INSTANCE and accessed from there by the<BR> +XMLHelper.INSTANCEsingleton. Together these singletons form a default set of helpers centred<BR> +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.</P> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevC"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;">Is there support for extending generated SDO implementation classes?</DIV> + + +<P>Here is my understanding:<BR> +1) I cannot have my own superclass of a generated SDO class since this is already occupied <BR> +2) I cannot (yet) simply subclass a generated SDO class, this may be addressed in <A href="https://issues.apache.org/jira/browse/TUSCANY-513" class="external-link" rel="nofollow">TUSCANY-513</A> <BR> +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)?*</P> + +<P><B>Answer:</B> The Tuscany SDO generator is currently reusing the code generator <BR> +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 <BR> +done is create a simple command line invocation of the EMF generator, using our own templates, and a few basic options.</P> + +<P>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 <BR> +dependency. If someone is willing to write a standalone merger for Tuscany, we could support regen.<BR> +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 <BR> +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.</P> + +<P>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 <BR> +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.</P> + + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevD"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;">How do I work with javajet files to modify the SDO generator code?</DIV> + + +<P><B>Answer:</B> You can learn how to set up your Eclipse environment to have javajet function built in using this <A href="http://www.eclipse.org/articles/Article-JET/jet_tutorial1.html" class="external-link" rel="nofollow">tutorial</A>.<BR> +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.</P> + +<P>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.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + File => New => Other + Select <SPAN class="code-quote">"Java Emitter Templates"</SPAN> + Select <SPAN class="code-quote">"Convert Projects to Jet Projects"</SPAN> + Select <SPAN class="code-quote">"tuscany-sdo-tools"</SPAN> + Click <SPAN class="code-quote">"Finish"</SPAN> +</PRE> +</DIV></DIV> +<P>Then in the Package Explorer pane of the Java perspective of Eclipse, right click on the tuscany-sdo-tools project</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + Select <SPAN class="code-quote">"Properties"</SPAN> + Select <SPAN class="code-quote">"Jet Settings"</SPAN> + Change the Source Container to <SPAN class="code-quote">"src/main/java"</SPAN> +</PRE> +</DIV></DIV> +<P>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. </P> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevC"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;">How to make the SDO-Tuscany library work in an eclipse plugin?</DIV> + + +<P><B>Answer:</B> Please refer to the following email thread for answer:<BR> + <A href="http://www.mail-archive.com/tuscany-user@ws.apache.org/msg03101.html" class="external-link" rel="nofollow">http://www.mail-archive.com/tuscany-user@ws.apache.org/msg03101.html</A></P> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevC"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;"> How to use SDO in tuscany SCA?</DIV> + + +<P><B>Answer:</B>- It's possible to use Static SDO or Dynamic SDO</P> +<UL class="alternate" type="square"> + <LI>For the dynamic SDO, you can use DataObject as parameter type.</LI> + <LI>You are required to put something like this in the SCDL (*.composite) file: +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <composite ... + xmlns:dbsdo=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/databinding/sdo/1.0"</SPAN>; +</SPAN> ....> + <dbsdo:<SPAN class="code-keyword">import</SPAN>.sdo location=<SPAN class="code-quote">"wsdl/helloworld.wsdl"</SPAN>/>- +</PRE> +</DIV></DIV> +<P> <SPAN class="error">[Note: It's possible to have multiple <import.sdo> elements]</SPAN></P></LI> +</UL> + + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevC"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;"> I am having issues with Sun JDK 1.4.2 while trying to do SDO build.</DIV> + + +<P><B>Answer:</B> 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.<BR> + 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.<BR> + To avoid this, use the following to control the JAXP implementaion:<BR> + <eclipse-install-dir>eclipse.exe -vmargs -Djava.endorsed.dirs=<path-to-your-xerces-jars-folder></P> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevC"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;"> Is there a way to restrict the version of maven used?</DIV> + + +<P><B>Answer:</B> According to the POM model, you can use the <prerequisites> element to specify the minimum version of Maven required to build the project.<BR> +for example:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<prerequisites> + <maven>2.0.7</maven> +</prerequisites> +</PRE> +</DIV></DIV> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevC"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;"> How can I define multiple XSD files with same namespace in same XSDHelper.INSTANCE?</DIV> + + +<P><B>Answer:</B> 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:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +HelperContext scope = SDOUtil.createHelperContext(<SPAN class="code-keyword">true</SPAN>); + then use the XSDHelper from +XSDHelper xsdHelper = scope.getXSDHelper() +</PRE> +</DIV></DIV> + +<P> if you use this instance of XSDHelper you will be able to add types to your namespace.</P> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevC"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;">Is it possible to generatie a DataObject from XML with XML Schema types?</DIV> + + +<P>*Answer:*Currently, Tuscany doesn't automatically load metadata (schemas) on the fly. It is required to register the types before the instances are loaded.<BR> + It's required to execute something like this before calling XMLHelper.load():</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +URL url = SdoDroolsTest.class.getResource(<SPAN class="code-quote">"/XYZ.xsd"</SPAN>); +getScope().getXSDHelper().define(url.openStream(), url.toString()); +</PRE> +</DIV></DIV> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevC"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;"> How to add Property to an XSDHelper-defined Type‎?</DIV> + + +<P><B>Answer:</B> If you create your HelperContext using SDOUtil.createHelperContext(true); XSDHelper.define() method will then let you add new types to an existing namespace <BR> + and also to replace an existing type with a new version (Note: This is a "use at your own risk" feature).<BR> + 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. </P> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevC"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;"> Why does the DataObject with contained DataGraph causes NullPointerException in ChangePackage$Literals?</DIV> + + +<P><B>Answer:</B> Please refer to the following email thread for answer:<BR> + <A href="http://www.mail-archive.com/tuscany-user@ws.apache.org/msg01178.html" class="external-link" rel="nofollow">http://www.mail-archive.com/tuscany-user@ws.apache.org/msg01178.html</A></P> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevC"></A></H3> + +<DIV class="" style="background-color: #C3CDA1;"> How can I use SDO for my Eclipse RCP application?</DIV> + + +<P><B>Answer:</B> Please refer to the following email thread for answer:<BR> + <A href="http://www.mail-archive.com/tuscany-user@ws.apache.org/msg01129.html" class="external-link" rel="nofollow">http://www.mail-archive.com/tuscany-user@ws.apache.org/msg01129.html</A></P> + +<H3><A name="TuscanySDOJava-FAQ-"></A><A name="TuscanySDOJava-FAQ-DevE"></A></H3> +<DIV class="" style="background-color: #C3CDA1;"> Is there a mechanism or workaround to pause and resume the recording in the ChangeSummary? +</DIV> + +<P><B>Answer:</B> There's no standard "spec-defined" way, but I believe in Tuscany you can<BR> +call endLogging() to suspend and then call<BR> +ChangeSummaryImpl.resumeLogging() instead of beginLogging() to restart.<BR> +Note that you'll need to cast your ChangeSummary to ChangeSummaryImpl to<BR> +call resumeLogging().</P> + +</TD></TR></TBODY></TABLE> + </DIV> + </DIV> + </DIV> + <!-- pageContent macro end --> + + </TD> + </TR> + </TABLE> + + <!-- footer macro --> + <SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript"> + </SCRIPT> + <SCRIPT type="text/javascript"> + _uacct = "UA-1174707-5"; + urchinTracker(); + </SCRIPT> + + <A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A> + + <DIV class="footer"> + Copyright � 2003-2012, The Apache Software Foundation </BR> + Apache Tuscany and the Apache Tuscany project logo are trademarks of The Apache Software Foundation. + </DIV> + <!-- footer macro end --> + + </BODY> +</HTML> |