blob: e6a367fd8ef02c1c3864fe819adb8c2b58afa3e4 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
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.
-->
<head>
<title>Apache Felix - iPOJO Ant Task</title>
<link rel="icon" href="/res/favicon.ico">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The most powerful component model for OSGi">
<link href="/ipojo/web/bootstrap/css/bootstrap-cerulean.css" rel="stylesheet">
<link href="/ipojo/web/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
<link href="/ipojo/web/bootstrap/css/font-awesome.min.css" rel="stylesheet">
<link href="/ipojo/web/style.css" rel="stylesheet">
<!-- Overide alert's colors -->
<link href="/ipojo/web/bootstrap/css/alert.css" rel="stylesheet">
<link rel="stylesheet" href="/ipojo/web/github.css" type="text/css" media="all">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="/ipojo/web/bootstrap/js/bootstrap.min.js"></script>
</head>
<body data-spy="scroll" data-target=".subnav">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="/documentation/subprojects/apache-felix-ipojo.html">Apache Felix iPOJO</a>
<div class="nav-collapse" id="main-menu">
<ul class="nav" id="main-menu-left">
<li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-news.html">News</a></li>
<li><a href="http://felix.apache.org/downloads.cgi">Downloads</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials <b class="caret"></b></a>
<ul class="dropdown-menu" id="tutorials-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-why-choose-ipojo.html">Why choose iPOJO</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-successstories.html">Success stories</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-feature-overview.html">Features</a></li>
<li class="divider"></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-in-10-minutes.html">iPOJO in 10 minutes</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html">Using Annotations</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-hello-word-maven-based-tutorial.html">Maven tutorial</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-advanced-tutorial.html">Advanced tutorial</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/apache-felix-ipojo-dosgi.html">Using Distributed OSGi</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-composition-tutorial.html">Application Composition</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation <b class="caret"></b></a>
<ul class="dropdown-menu" id="user-guide-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/service-requirement-handler.html">Requiring a service</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/providing-osgi-services.html">Providing a service</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/lifecycle-callback-handler.html">Lifecycle management</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/configuration-handler.html">Configuration</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/architecture-handler.html">Introspection</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/controller-lifecycle-handler.html">Impacting the lifecycle</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/injecting-bundle-context.html">Accessing the Bundle Context</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-instances.html">Creating instances</a></li>
<li class="divider"></li>
<li class="dropdown-submenu">
<a tabindex="-1" href="#">External <em>handlers</em></a>
<ul class="dropdown-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/event-admin-handlers.html">Asynchronous communication</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/ipojo-jmx-handler.html">JMX management</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/extender-pattern-handler.html">Extender pattern</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/white-board-pattern-handler.html">Whiteboard pattern</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/temporal-service-dependency.html">Temporal dependencies</a></li>
</ul>
</li>
<li class="dropdown-submenu">
<a tabindex="-1" href="#">Configuration Admin &amp; Factories</a>
<ul class="dropdown-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/combining-ipojo-and-configuration-admin.html">iPOJO and config admin</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-factory-service.html">Using the iPOJO Factory service</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/how-to-use-ipojo-factories.html">Factories and Instances</a></li>
</ul>
</li>
<li class="divider"></li>
<li class="dropdown-submenu">
<a tabindex="-1" href="#">Advanced topics</a>
<ul class="dropdown-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/instance-vs-service-controller.html">Instance vs. Service Controllers</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/service-binding-interceptors.html">Service Binding Interceptors</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/using-xml-schemas.html">XML Schemas</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-api.html">Using the iPOJO API</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/constructing-pojo-objects-with-factory-methods.html">Constructing service objects with factory methods</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-ipojo-introspection-api.html">Using the introspection API</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-testing-components.html">Testing components</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-stereotypes.html">Using @Stereotypes</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-eclipse-integration.html">Eclipse Integration</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-extender-configuration.html">Configuring iPOJO's Extender</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-faq.html">FAQ</a></li>
<li class="divider"></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-write-your-own-handler.html">Handler development</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-use-ipojo-manipulation-metadata.html">Manipulation Metadata </a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/dive-into-the-ipojo-manipulation-depths.html">Dive into the iPOJO Manipulation depths</a></li>
<li><a href="http://felix.apache.org/ipojo/api/1.12.1">Javadoc</a></li>
</ul>
</li>
</ul>
</li>
<li class="dropdown" id="tools-menu">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Tools <b class="caret"></b></a>
<ul class="dropdown-menu" id="swatch-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-ant-task.html">Ant Task</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-maven-plug-in.html">Maven Plugin</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-arch-command.html">Architecture commands</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/apache-felix-ipojo-online-manipulator.html">Online Manipulator</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-webconsole-plugin.html">Webconsole plugin</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-karaf-feature.html">Apache Karaf Features</a></li>
</ul>
</li>
<li class="dropdown" id="community-menu">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Community <b class="caret"></b></a>
<ul class="dropdown-menu" id="swatch-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-support.html">Support</a></li>
<li><a href="http://www.apache.org/">ASF</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Sponsors</a></li>
</ul>
</li>
<li class="dropdown" id="misc-menu">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Misc <b class="caret"></b></a>
<ul class="dropdown-menu" id="swatch-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedvms.html">Supported JVMs</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedosgi.html">Supported OSGi Implementations</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/articles-and-presentations.html">Article & Presentations</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/developing-camel-mediators-with-ipojo.html">Developping Camel mediators with iPOJO</a></li>
</ul>
</li>
</ul>
<ul class="nav pull-right" id="main-menu-right">
<li><a rel="tooltip" target="_blank" href="http://felix.apache.org">Apache Felix <i class="icon-share-alt"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<div class="content">
<style type="text/css">
/* The following code is added by mdx_elementid.py
It was originally lifted from http://subversion.apache.org/style/site.css */
/*
* Hide class="elementid-permalink", except when an enclosing heading
* has the :hover property.
*/
.headerlink, .elementid-permalink {
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<h1 id="ipojo-ant-task">iPOJO Ant Task<a class="headerlink" href="#ipojo-ant-task" title="Permanent link">&para;</a></h1>
<p><em>iPOJO Ant Task allows automating the iPOJO manipulation process within an Ant build process. This page explains how to use the iPOJO Ant Task and how to combine them with the BND Tasks.</em></p>
<div class="toc">
<ul>
<li><a href="#ipojo-ant-task">iPOJO Ant Task</a><ul>
<li><a href="#downloading-the-ipojo-ant-task">Downloading the iPOJO Ant Task</a></li>
<li><a href="#how-to-use-the-ant-task">How to use the Ant Task</a></li>
<li><a href="#ant-task-arguments">Ant Task Arguments</a></li>
<li><a href="#combining-the-ipojo-ant-task-and-bnd">Combining the iPOJO Ant Task and BND</a></li>
<li><a href="#directory-manipulation">Directory manipulation</a></li>
</ul>
</li>
</ul>
</div>
<h2 id="downloading-the-ipojo-ant-task">Downloading the iPOJO Ant Task<a class="headerlink" href="#downloading-the-ipojo-ant-task" title="Permanent link">&para;</a></h2>
<p>The iPOJO Ant Task can ben downloaded from <a href="http://felix.apache.org/downloads.cgi">here</a>.</p>
<h2 id="how-to-use-the-ant-task">How to use the Ant Task<a class="headerlink" href="#how-to-use-the-ant-task" title="Permanent link">&para;</a></h2>
<p>The iPOJO Ant task take an input bundle and a metadata file and create the final (i.e. manipulated) bundle.
To use the task declare a target in your build.xml as:</p>
<div class="codehilite"><pre><span class="nt">&lt;target</span> <span class="na">name=</span><span class="s">&quot;main&quot;</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Change the path to point on the iPOJO Ant task jar--&gt;</span>
<span class="nt">&lt;taskdef</span> <span class="na">name=</span><span class="s">&quot;ipojo&quot;</span>
<span class="na">classname=</span><span class="s">&quot;org.apache.felix.ipojo.task.IPojoTask&quot;</span>
<span class="na">classpath=</span><span class="s">&quot;org.apache.felix.ipojo.ant-1.12.1.jar&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;ipojo</span>
<span class="na">input=</span><span class="s">&quot;foo.jar&quot;</span>
<span class="na">metadata =</span> <span class="s">&quot;meta.xml&quot;</span>
<span class="nt">/&gt;</span>
<span class="nt">&lt;/target&gt;</span>
</pre></div>
<p>First, define the new task. Then simply use it. The input argument describe the input bundle (must exists) and the metadata argument describes the metadata file (must exist too). The input bundle must be a well-formed bundle.</p>
<h2 id="ant-task-arguments">Ant Task Arguments<a class="headerlink" href="#ant-task-arguments" title="Permanent link">&para;</a></h2>
<p>The iPOJO Ant Task as three different arguments:
<em> Input: describes the input bundle. This argument is mandatory.
</em> Output: describes the output bundle. This argument is optional. If not present, the output file will be input file.
<em> Metadata: describes the metadata file. This argument is optional. By default, it tries with a metadata.xml file (in the same directory as the build.xml file). If the default file is not present, it tries to use only iPOJO annotations.
</em> IgnoreAnnotations: if set to <code>true</code>, the manipulator skips annotations processing (can reduce significantly the processing time on huge bundle).
* IgnoreEmbeddedSchemas: if set to <code>true</code>, the manipulator doesn't use embedded XML-Schemas</p>
<h2 id="combining-the-ipojo-ant-task-and-bnd">Combining the iPOJO Ant Task and BND<a class="headerlink" href="#combining-the-ipojo-ant-task-and-bnd" title="Permanent link">&para;</a></h2>
<p>The iPOJO Ant Task requires an input bundle. BND is a tools simplifying bundle creation. So, it is possible to combine the two tools to create your bundle automatically. The following build.xml shows you an example of combination.</p>
<div class="codehilite"><pre><span class="nt">&lt;project</span> <span class="na">default=</span><span class="s">&quot;main&quot;</span> <span class="na">basedir=</span><span class="s">&quot;.&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;target</span> <span class="na">name=</span><span class="s">&quot;bnd&quot;</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Change to use the latest BND version --&gt;</span>
<span class="nt">&lt;taskdef</span> <span class="na">resource=</span><span class="s">&quot;aQute/bnd/ant/taskdef.properties&quot;</span>
<span class="na">classpath=</span><span class="s">&quot;bnd-0.0.178.jar&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;bnd</span>
<span class="na">classpath=</span><span class="s">&quot;src&quot;</span>
<span class="na">eclipse=</span><span class="s">&quot;true&quot;</span>
<span class="na">failok=</span><span class="s">&quot;false&quot;</span>
<span class="na">exceptions=</span><span class="s">&quot;true&quot;</span>
<span class="na">files=</span><span class="s">&quot;foo.bnd&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/target&gt;</span>
<span class="nt">&lt;target</span> <span class="na">name=</span><span class="s">&quot;main&quot;</span> <span class="na">depends=</span><span class="s">&quot;bnd&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;echo</span> <span class="na">message=</span><span class="s">&quot;Call main&quot;</span><span class="nt">/&gt;</span>
<span class="c">&lt;!-- Change the path to point on the iPOJO Ant task jar --&gt;</span>
<span class="nt">&lt;taskdef</span> <span class="na">name=</span><span class="s">&quot;ipojo&quot;</span>
<span class="na">classname=</span><span class="s">&quot;org.apache.felix.ipojo.task.IPojoTask&quot;</span>
<span class="na">classpath=</span><span class="s">&quot;org.apache.felix.ipojo.ant-1.12.1.jar&quot;</span> <span class="nt">/&gt;</span>
<span class="c">&lt;!-- the input attribute must fit the .bnd file name --&gt;</span>
<span class="nt">&lt;ipojo</span>
<span class="na">input=</span><span class="s">&quot;foo.jar&quot;</span>
<span class="na">metadata =</span> <span class="s">&quot;meta.xml&quot;</span>
<span class="nt">/&gt;</span>
<span class="nt">&lt;/target&gt;</span>
<span class="nt">&lt;/project&gt;</span>
</pre></div>
<p>The first target creates the bundle with BND. More details on the BND Ant Task are available here. To combine the BND output and the iPOJO input, the iPOJO input need to be the same as the BND file but with the ".jar" extension. For instance, the BND file is foo.bnd, so the input jar must be foo.jar.
To be sure that the BND bundle is already created, you can add the "<em>depends</em>" clause in the target using the iPOJO task to the target creating the bundle.</p>
<p>However, it is possible to create only one target doing the two operations as:</p>
<div class="codehilite"><pre><span class="nt">&lt;target</span> <span class="na">name=</span><span class="s">&quot;main&quot;</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Change to use the latest BND version --&gt;</span>
<span class="nt">&lt;taskdef</span>
<span class="na">resource=</span><span class="s">&quot;aQute/bnd/ant/taskdef.properties&quot;</span>
<span class="na">classpath=</span><span class="s">&quot;bnd-0.0.178.jar&quot;</span><span class="nt">/&gt;</span>
<span class="c">&lt;!-- Change the path to point on the iPOJO Ant task jar --&gt;</span>
<span class="nt">&lt;taskdef</span> <span class="na">name=</span><span class="s">&quot;ipojo&quot;</span>
<span class="na">classname=</span><span class="s">&quot;org.apache.felix.ipojo.task.IPojoTask&quot;</span>
<span class="na">classpath=</span><span class="s">&quot;org.apache.felix.ipojo.ant-1.12.1.jar&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;bnd</span>
<span class="na">classpath=</span><span class="s">&quot;src&quot;</span>
<span class="na">eclipse=</span><span class="s">&quot;true&quot;</span>
<span class="na">failok=</span><span class="s">&quot;false&quot;</span>
<span class="na">exceptions=</span><span class="s">&quot;true&quot;</span>
<span class="na">files=</span><span class="s">&quot;foo.bnd&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;ipojo</span>
<span class="na">input=</span><span class="s">&quot;foo.jar&quot;</span>
<span class="na">metadata =</span> <span class="s">&quot;meta.xml&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/target&gt;</span>
</pre></div>
<h2 id="directory-manipulation">Directory manipulation<a class="headerlink" href="#directory-manipulation" title="Permanent link">&para;</a></h2>
<p>The manipulator can take a directory in input. In this case, classes from this folder is manipulated. You can also set the manifest file location too. Here in an example of configuration using this mode:</p>
<div class="codehilite"><pre><span class="nt">&lt;target</span> <span class="na">name=</span><span class="s">&quot;manipulate&quot;</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Set the manipulated directory and manifest location --&gt;</span>
<span class="nt">&lt;ipojo</span>
<span class="na">dir=</span><span class="s">&quot;${output..}&quot;</span>
<span class="na">metadata=</span><span class="s">&quot;metadata.xml&quot;</span>
<span class="na">manifest=</span><span class="s">&quot;META-INF/MANIFEST.MF&quot;</span>
<span class="nt">/&gt;</span>
<span class="nt">&lt;/target&gt;</span>
</pre></div>
<div class="alert alert-info" markdown="1">
<h4>Manifest location</h4>
If not set, the manifest is searched in the given <code>directory/META-INF</code> folder (<em>i.e.</em> <code>$dir/META-INF/MANIFEST.MF</code>).
</div>
</div>
</div>
<hr/>
<div class="container">
<footer id="footer">
<div class="row">
<div class="trademarkFooter span7">
Apache Felix, Felix, Apache, the Apache feather logo, and the Apache Felix project
logo are trademarks of The Apache Software Foundation. All other marks mentioned
may be trademarks or registered trademarks of their respective owners.
</div>
<div class="timestamp span3 offset2">
Rev. 1700393 by cziegeler on Tue, 1 Sep 2015 06:04:06 +0000
</div>
</div>
</footer>
</div>
</body>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("UA-1518442-4");
pageTracker._trackPageview();
} catch(err) {}
</script>
</html>