Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
380c175
Made undefined checks more verbose in Gears adapter; BlackBerries can…
Oct 15, 2010
ea25173
Initial outline of server-based adapter.
Nov 3, 2010
115df34
Server adapter init logic.
Nov 3, 2010
0b588b7
Added XHR wrapper to server adapter, worked out rest of session-based…
Nov 3, 2010
99d3dd4
Rest of server adapter functions written.. now to test.
Nov 3, 2010
99ce802
Woops forgot server-side spec additions.
Nov 3, 2010
a8ba887
Renamed server adaptor.
Nov 3, 2010
a02fd1e
Removed old adaptor.
Nov 3, 2010
818070d
Server adapter fixes: forgot to import namespace and syntax fix!
Nov 3, 2010
69bff03
Server adapter must return something on nuke, and trimming trailing c…
Nov 3, 2010
d802ddc
Server adapter needs to call callbacks with lawnchair as this.
Nov 3, 2010
8c5a9b8
Fixed POSTing data in server adapter, nuke now fires callback.
Nov 3, 2010
24d2a7f
TODOs in spec.
Nov 3, 2010
a5212d8
Merge branch 'master' of http://github.com/brianleroux/lawnchair
Nov 23, 2010
c5cff66
Merge branch 'master' of github.com:filmaj/lawnchair
Nov 23, 2010
a52ab2a
Start of moving specs over to diff. async style with assertion chaini…
Nov 23, 2010
d7408ad
Chainifying specs. everything must be async.
Nov 23, 2010
f057c08
save() and find() specs chainified, added simple inequality test to u…
Nov 23, 2010
c215358
Chained up remove specs.
Nov 23, 2010
1362beb
Set up all adapter spec pages to use new callback in constructor syntax.
Nov 23, 2010
3c08926
Moved JSON checks to top of ctor.
Nov 23, 2010
9f03a10
Formatting.
Nov 23, 2010
41d9b49
Updates/fixes to readme.
Nov 23, 2010
255c546
ima write a build script sometime.
Nov 23, 2010
e27240e
Added build script that will concat appropriate Lawnchair .js files f…
Nov 24, 2010
5d9be80
Updated readme with build instructions.
Nov 24, 2010
469c784
I swear ill learn markdown.
Nov 24, 2010
c345d6f
using terseToVerboseCallback for DOM#save
alunny Nov 24, 2010
a9e3dd2
patching test#chain to accept string callbacks
alunny Nov 24, 2010
6cf0af2
Add specs for terseToVerbose
mwbrooks Dec 8, 2010
f59a679
Update GearsSQLiteAdaptor to pass terseToVerbose specs
mwbrooks Dec 8, 2010
440b891
Update DOMStorageAdaptor to pass terseToVerbose specs
mwbrooks Dec 8, 2010
75aed42
added lib to gitignore
brianleroux Jan 19, 2011
59601e2
wow
brianleroux Jan 26, 2011
503295c
Ignore dirs in build
coreyjewett Apr 26, 2011
ebac0a8
Adding feature detection/sniffing adaptor.
coreyjewett Apr 27, 2011
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.DS_Store
AIRAliases.js
AIRIntrospector.js
/lib/
.c9settings.xml
22 changes: 19 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,16 @@ A very light clientside JSON document store.
adaptor ......... device browsers supported ............ desktop browsers supported ....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
webkitsqlite .... iPhone OS, Android 2.0, Palm webOS ... Safari, Chrome ................
gearssqlite ..... Android 1.5, 1.7 ..................... Whenever gears is present .....
gearssqlite ..... Android 1.5, 1.6, BlackBerry 5.0+..... Whenever gears is present .....
domStorage ...... iPhone OS, Android 2.0, Palm webOS ... IE, Firefox, Safari, Chrome ...
cookie .......... Presumably all of em ................. Presumably all of em ..........
userdata ........ IE ................................... IE ............................
air-async ....... Adobe Air ............................ Adobe Air .....................
air ............. Adobe Air ............................ Adobe Air .....................
blackberry ...... BlackBerry 4.7 and higher ............ N/A ...........................
blackberry ...... BlackBerry 4.7 and higher w/ PhoneGap. N/A ...........................
couchdb ......... All .................................. All ...........................
server .......... All .................................. All ...........................
auto ............ All .................................. All ...........................

INSTALL
===
Expand All @@ -35,11 +37,25 @@ Lawnchair does not assume how you want to use it. At a minimum will be required
- One of the adaptor js files can found in `./src/adaptors`.
- Adobe AIR adaptor example xml config files can be found in `./util`.
- CouchDB adaptor requires the http://localhost:5984/_utils/script/couch.js lib.
- Server adaptor requires a server-side API; see top of ServerAdaptor.js for more details.
- Auto adaptor (actual filename is BeachfrontAdaptor) tries to detect and load other adaptor.

Its probably a good idea to concat/minify the js you require. Its a common request to
Its probably a good idea to concat/minify the js you require (see below). Its a common request to
provide a single file that does some sort of feature detection which, in theory, is nice
but in practice its far more efficient to only load what you need (especially on mobile).

BUILDING
===
Run ./build from your terminal and provide the list of adapters you want to include in your final
Lawnchair build. Does a bit of fuzzy (suffix) matching for you. Examples:

./build air blackberry
./build webkit dom

The first will build a Lawnchair with both AIR adapters plus the BlackBerry one. The second will
build a Lawnchair with WebKitSQLite support as well as DOMStorage support.


TESTING
===

Expand Down
41 changes: 41 additions & 0 deletions build
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/bin/bash
# Help

help() {
echo "------ usage --------------------------------------------------";
echo "| build [adapter1 [adapter 2 [...]]] |";
echo "------ description --------------------------------------------";
echo "| Builds lawnchair with the specified adapters. Does a |";
echo "| wildcard suffix search based on the adapter arguments you |";
echo "| provide. Builds to lc-prod.js in current directory. |";
echo "|----- list of adapters --------------------------------------|";
echo "| AIRSqlite |";
echo "| AIRSqliteAsync |";
echo "| BlackBerry |";
echo "| Cookie |";
echo "| Couch |";
echo "| DOMStorage |";
echo "| GearsSQLite |";
echo "| Server |";
echo "| UserData |";
echo "| WebKitSqlite |";
echo "---------------------------------------------------------------";
}
if [ $# -lt 1 ]
then
help;
echo "ERROR: You need to provide at least one adapter as argument.";
else
echo "Including base Lawnchair JS...";
adapterSrc="src/Lawnchair.js src/adaptors/LawnchairAdaptorHelpers.js";
for arg in "$@"
do
for file in $(find src/adaptors -type f -iname $arg*)
do
echo "Adding adapter '$file' to lc_prod.js...";
adapterSrc="$adapterSrc $file";
done
done
cat $adapterSrc > lc_prod.js;
echo "... done.";
fi
3 changes: 2 additions & 1 deletion spec/public/adaptors/air-async.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript" charset="utf-8">
store = new Lawnchair({table:'test', adaptor:'air-async'});
adapter='air-async';
store = new Lawnchair({adaptor:adapter,table:'test'},function(){});
</script>
<!--
because string callbacks aren't supported, we need to rewrite the tests
Expand Down
3 changes: 2 additions & 1 deletion spec/public/adaptors/air.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript" charset="utf-8">
store = new Lawnchair({table:'test', adaptor:'air'});
adapter='air';
store = new Lawnchair({adaptor:adapter,table:'test'},function(){});
</script>
<!--
because string callbacks aren't supported, we need to rewrite the tests
Expand Down
3 changes: 2 additions & 1 deletion spec/public/adaptors/blackberrystorage.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript" charset="utf-8">
store = new Lawnchair({adaptor:'blackberry'});
adapter='blackberry';
store = new Lawnchair({adaptor:adapter},function(){});
</script>
<script src="../lawnchair-spec.js" type="text/javascript" charset="utf-8"></script>
</head>
Expand Down
3 changes: 2 additions & 1 deletion spec/public/adaptors/cookie.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript" charset="utf-8">
store = new Lawnchair({adaptor:'cookie'});
adapter='cookie';
store = new Lawnchair({adaptor:adapter},function(){});
</script>
<script src="../lawnchair-spec.js" type="text/javascript" charset="utf-8"></script>
</head>
Expand Down
3 changes: 2 additions & 1 deletion spec/public/adaptors/couch.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
<script src="../../../src/adaptors/CouchAdaptor.js" type="text/javascript" charset="utf-8"></script>
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
store = new Lawnchair({adaptor:'couch', name:'test-store'});
adapter='couch';
store = new Lawnchair({adaptor:adapter,name:'test-store'},function(){});
</script>
<script src="../lawnchair-spec.js" type="text/javascript" charset="utf-8"></script>
</head>
Expand Down
3 changes: 2 additions & 1 deletion spec/public/adaptors/dom-session.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript" charset="utf-8">
store = new Lawnchair({storage:sessionStorage, adaptor:'dom'});
adapter='dom';
store = new Lawnchair({adaptor:adapter, storage:sessionStorage},function(){});
</script>
<script src="../lawnchair-spec.js" type="text/javascript" charset="utf-8"></script>

Expand Down
3 changes: 2 additions & 1 deletion spec/public/adaptors/dom.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript" charset="utf-8">
store = new Lawnchair({adaptor:'dom'});
adapter = 'dom';
store = new Lawnchair({adaptor:adapter},function(){});
</script>
<script src="../lawnchair-spec.js" type="text/javascript" charset="utf-8"></script>
</head>
Expand Down
3 changes: 2 additions & 1 deletion spec/public/adaptors/gears.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
<script src="../../../src/adaptors/GearsSQLiteAdaptor.js" type="text/javascript" charset="utf-8"></script>
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
store = new Lawnchair({table:'test', adaptor:'gears'});
adapter = 'gears';
store = new Lawnchair({table:'test', adaptor:adapter},function(){});
</script>
<script src="../lawnchair-spec.js" type="text/javascript" charset="utf-8"></script>
</head>
Expand Down
53 changes: 53 additions & 0 deletions spec/public/adaptors/server-examples/session.jsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<%@ page import="java.io.*, java.util.*" %><%
// TODO: support client-specified IDs for differentiating between stores.
if (request.getParameter("nuke") != null || request.getParameter("all") != null) {
// nuke() and all()
boolean isNuke = (request.getParameter("nuke") != null);
boolean isAll = (request.getParameter("all") != null);
Enumeration attributeNames=(request.getSession(false)).getAttributeNames();
StringBuffer all = new StringBuffer("[");
while(attributeNames.hasMoreElements()){
String attributeName=(String) attributeNames.nextElement();
if (isNuke) {
session.removeAttribute(attributeName);
} else {
all.append((String)session.getAttribute(attributeName));
all.append(",");
}
}
if (isAll) {
if (all.length() > 1) all.deleteCharAt(all.length()-1); // trim trailing comma
all.append("]");
out.print(all.toString());
} else {
out.print("{}");
}
} else if (request.getParameter("get") != null) {
// get()
String key = request.getParameter("get");
StringBuffer json = new StringBuffer();
json.append((String)session.getAttribute(key));
out.print(json.toString());
} else if (request.getParameter("remove") != null) {
// remove()
String key = request.getParameter("remove");
StringBuffer json = new StringBuffer();
json.append((String)session.getAttribute(key));
session.removeAttribute(key);
out.print(json.toString());
} else if (request.getParameter("save") != null) {
// save()
String key = request.getParameter("save");
// Grab POST data
BufferedReader FormBuffer = request.getReader();
StringBuffer BodyContent = new StringBuffer();
String NextLine = FormBuffer.readLine();
while (NextLine != null) {
BodyContent.append(NextLine);
NextLine = FormBuffer.readLine();
}
// Save to session attribute
session.setAttribute(key, BodyContent.toString());
out.print(BodyContent.toString());
}
%>
25 changes: 25 additions & 0 deletions spec/public/adaptors/server.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<title>Lawnchair Server</title>
<link rel="stylesheet" href="../lib/qunit.css" type="text/css" media="screen" title="no title" charset="utf-8">
<script src="../lib/qunit.js" type="text/javascript" charset="utf-8"></script>
<script src="../lib/json2.js" type="text/javascript" charset="utf-8"></script>

<script src="../../../src/adaptors/LawnchairAdaptorHelpers.js" type="text/javascript" charset="utf-8"></script>
<script src="../../../src/adaptors/ServerAdaptor.js" type="text/javascript" charset="utf-8"></script>
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript" charset="utf-8">
alert('You must deploy this on a Tomcat instance to get it to work! Relies on a server-side component!');
store = new Lawnchair({adaptor:'server', endpoint:'server-examples/session.jsp'});
</script>
<script src="../lawnchair-spec.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<h1 id="qunit-header">Lawnchair, Server Adapter Specs</h1>
<h2 id="qunit-banner"></h2>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
</body>
</html>
3 changes: 2 additions & 1 deletion spec/public/adaptors/userdata.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript" charset="utf-8">
store = new Lawnchair({adaptor:'userdata'});
adapter = 'userdata';
store = new Lawnchair({adaptor:adapter},function() {});
</script>
<script src="../lawnchair-spec.js" type="text/javascript" charset="utf-8"></script>
</head>
Expand Down
3 changes: 2 additions & 1 deletion spec/public/adaptors/webkit.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
<script src="../../../src/Lawnchair.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript" charset="utf-8">
store = new Lawnchair({table:'test', adaptor:'webkit'});
adapter = 'webkit';
store = new Lawnchair({table:'test', adaptor:adapter},function() {});
</script>
<script src="../lawnchair-spec.js" type="text/javascript" charset="utf-8"></script>

Expand Down
1 change: 1 addition & 0 deletions spec/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ <h1>Lawnchair! The spec.</h1>
<li><a href="adaptors/air-async.html">adobe air async</a></li>
<li><a href="adaptors/blackberrystorage.html">blackberry storage</a></li>
<li><a href="adaptors/couch.html">couchdb</a></li>
<li><a href="adaptors/server.html">server</a></li>
</ul>


Loading