blob: 2b33203770d67921548df44fc1af683bc057b8ba [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX">
<link rel="canonical" href="https://ignite.apache.org/releases/1.5.0-b1/javadoc/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html" />
<!-- Generated by javadoc (version 1.7.0_21) on Tue Dec 01 23:28:49 MSK 2015 -->
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>CacheJdbcStoreSessionListener (Ignite 1.5.0-b1)</title>
<meta name="date" content="2015-12-01">
<link rel="stylesheet" type="text/css" href="../../../../../../javadoc.css" title="Style">
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-61232409-1', 'auto');
ga('send', 'pageview');
</script></head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="CacheJdbcStoreSessionListener (Ignite 1.5.0-b1)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CacheJdbcStoreSessionListener.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactory.html" title="class in org.apache.ignite.cache.store.jdbc"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/ignite/cache/store/jdbc/JdbcType.html" title="class in org.apache.ignite.cache.store.jdbc"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html" target="_top">Frames</a></li>
<li><a href="CacheJdbcStoreSessionListener.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.ignite.cache.store.jdbc</div>
<h2 title="Class CacheJdbcStoreSessionListener" class="title">Class CacheJdbcStoreSessionListener</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.ignite.cache.store.jdbc.CacheJdbcStoreSessionListener</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSessionListener.html" title="interface in org.apache.ignite.cache.store">CacheStoreSessionListener</a>, <a href="../../../../../../org/apache/ignite/lifecycle/LifecycleAware.html" title="interface in org.apache.ignite.lifecycle">LifecycleAware</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">CacheJdbcStoreSessionListener</span>
extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSessionListener.html" title="interface in org.apache.ignite.cache.store">CacheStoreSessionListener</a>, <a href="../../../../../../org/apache/ignite/lifecycle/LifecycleAware.html" title="interface in org.apache.ignite.lifecycle">LifecycleAware</a></pre>
<div class="block">Cache store session listener based on JDBC connection.
<p>
For each session this listener gets a new JDBC connection
from provided <a href="http://docs.oracle.com/javase/7/docs/api/javax/sql/DataSource.html?is-external=true" title="class or interface in javax.sql"><code>DataSource</code></a> and commits (or rolls
back) it when session ends.
<p>
The connection is saved as a store session
<a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSession.html#attachment()"><code>attachment</code></a>.
The listener guarantees that the connection will be
available for any store operation. If there is an
ongoing cache transaction, all operations within this
transaction will be committed or rolled back only when
the session ends.
<p>
As an example, here is how the <code>CacheWriter.write(Cache.Entry)</code>
method can be implemented if <a href="../../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html" title="class in org.apache.ignite.cache.store.jdbc"><code>CacheJdbcStoreSessionListener</code></a>
is configured:
<pre name="code" class="java">
private static class Store extends CacheStoreAdapter&lt;Integer, Integer&gt; {
&#64;CacheStoreSessionResource
private CacheStoreSession ses;
&#64;Override public void write(Cache.Entry&lt;? extends Integer, ? extends Integer&gt; entry) throws CacheWriterException {
// Get connection from the current session.
Connection conn = ses.attachment();
// Execute update SQL query.
try {
conn.createStatement().executeUpdate("...");
}
catch (SQLException e) {
throw new CacheWriterException("Failed to update the store.", e);
}
}
}
</pre>
JDBC connection will be automatically created by the listener
at the start of the session and closed when it ends.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html#CacheJdbcStoreSessionListener()">CacheJdbcStoreSessionListener</a></strong>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/javax/sql/DataSource.html?is-external=true" title="class or interface in javax.sql">DataSource</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html#getDataSource()">getDataSource</a></strong>()</code>
<div class="block">Gets data source.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html#onSessionEnd(org.apache.ignite.cache.store.CacheStoreSession, boolean)">onSessionEnd</a></strong>(<a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSession.html" title="interface in org.apache.ignite.cache.store">CacheStoreSession</a>&nbsp;ses,
boolean&nbsp;commit)</code>
<div class="block">On session end callback.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html#onSessionStart(org.apache.ignite.cache.store.CacheStoreSession)">onSessionStart</a></strong>(<a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSession.html" title="interface in org.apache.ignite.cache.store">CacheStoreSession</a>&nbsp;ses)</code>
<div class="block">On session start callback.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html#setDataSource(javax.sql.DataSource)">setDataSource</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/javax/sql/DataSource.html?is-external=true" title="class or interface in javax.sql">DataSource</a>&nbsp;dataSrc)</code>
<div class="block">Sets data source.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html#start()">start</a></strong>()</code>
<div class="block">Starts grid component, called on grid start.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html#stop()">stop</a></strong>()</code>
<div class="block">Stops grid component, called on grid shutdown.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="CacheJdbcStoreSessionListener()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>CacheJdbcStoreSessionListener</h4>
<pre>public&nbsp;CacheJdbcStoreSessionListener()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="setDataSource(javax.sql.DataSource)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDataSource</h4>
<pre>public&nbsp;void&nbsp;setDataSource(<a href="http://docs.oracle.com/javase/7/docs/api/javax/sql/DataSource.html?is-external=true" title="class or interface in javax.sql">DataSource</a>&nbsp;dataSrc)</pre>
<div class="block">Sets data source.
<p>
This is a required parameter. If data source is not set,
exception will be thrown on startup.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>dataSrc</code> - Data source.</dd></dl>
</li>
</ul>
<a name="getDataSource()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDataSource</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/javax/sql/DataSource.html?is-external=true" title="class or interface in javax.sql">DataSource</a>&nbsp;getDataSource()</pre>
<div class="block">Gets data source.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Data source.</dd></dl>
</li>
</ul>
<a name="start()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>start</h4>
<pre>public&nbsp;void&nbsp;start()
throws <a href="../../../../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></pre>
<div class="block">Starts grid component, called on grid start.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/lifecycle/LifecycleAware.html#start()">start</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/lifecycle/LifecycleAware.html" title="interface in org.apache.ignite.lifecycle">LifecycleAware</a></code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></code> - If failed.</dd></dl>
</li>
</ul>
<a name="stop()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>stop</h4>
<pre>public&nbsp;void&nbsp;stop()
throws <a href="../../../../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></pre>
<div class="block">Stops grid component, called on grid shutdown.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/lifecycle/LifecycleAware.html#stop()">stop</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/lifecycle/LifecycleAware.html" title="interface in org.apache.ignite.lifecycle">LifecycleAware</a></code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></code> - If failed.</dd></dl>
</li>
</ul>
<a name="onSessionStart(org.apache.ignite.cache.store.CacheStoreSession)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onSessionStart</h4>
<pre>public&nbsp;void&nbsp;onSessionStart(<a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSession.html" title="interface in org.apache.ignite.cache.store">CacheStoreSession</a>&nbsp;ses)</pre>
<div class="block">On session start callback.
<p>
Called before any store operation within a session is invoked.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSessionListener.html#onSessionStart(org.apache.ignite.cache.store.CacheStoreSession)">onSessionStart</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSessionListener.html" title="interface in org.apache.ignite.cache.store">CacheStoreSessionListener</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>ses</code> - Current session.</dd></dl>
</li>
</ul>
<a name="onSessionEnd(org.apache.ignite.cache.store.CacheStoreSession, boolean)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>onSessionEnd</h4>
<pre>public&nbsp;void&nbsp;onSessionEnd(<a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSession.html" title="interface in org.apache.ignite.cache.store">CacheStoreSession</a>&nbsp;ses,
boolean&nbsp;commit)</pre>
<div class="block">On session end callback.
<p>
Called after all operations within a session are invoked.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSessionListener.html#onSessionEnd(org.apache.ignite.cache.store.CacheStoreSession, boolean)">onSessionEnd</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/cache/store/CacheStoreSessionListener.html" title="interface in org.apache.ignite.cache.store">CacheStoreSessionListener</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>ses</code> - Current session.</dd><dd><code>commit</code> - <code>True</code> if persistence store transaction
should commit, <code>false</code> for rollback.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CacheJdbcStoreSessionListener.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactory.html" title="class in org.apache.ignite.cache.store.jdbc"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/ignite/cache/store/jdbc/JdbcType.html" title="class in org.apache.ignite.cache.store.jdbc"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html" target="_top">Frames</a></li>
<li><a href="CacheJdbcStoreSessionListener.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><table width="100%" border="0" cellspacing=0 cellpadding=0 style="padding: 5px"> <tr> <td> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <a target=_blank href="https://apache.org/projects/ignite.html"><nobr>2015 Copyright &#169; Apache Software Foundation</nobr></a> </td> </tr> </tbody> </table> </td> <td width="100%" align="right" valign="center"> <a href="https://twitter.com/ApacheIgnite" class="twitter-follow-button" data-show-count="false" data-size="large">Follow @ApacheIgnite</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> </td> </tr> <tr> <td colspan="2" valign="top" align="left"> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <b>Ignite Fabric</b> </td> <td>:&nbsp;&nbsp; ver. <strong>1.5.0-b1</strong> </td> </tr> <tr style="padding: 0; margin: 0"> <td> <b>Release Date</b> </td> <td>:&nbsp;&nbsp; December 1 2015 </td> </tr> </tbody> </table> </td> </tr> </table></small></p>
</body>
</html>