aboutsummaryrefslogtreecommitdiff
path: root/website-old
diff options
context:
space:
mode:
Diffstat (limited to 'website-old')
-rw-r--r--website-old/all-versions.html88
-rw-r--r--website-old/buttonbar.jpgbin0 -> 13350 bytes
-rw-r--r--website-old/buttonbar.psdbin0 -> 1127163 bytes
-rw-r--r--website-old/buttonbar_unmodified.pngbin0 -> 351877 bytes
-rw-r--r--website-old/changelog.html15
-rw-r--r--website-old/clear.gifbin0 -> 43 bytes
-rw-r--r--website-old/credits.html132
-rw-r--r--website-old/disableCheckedExceptions.html61
-rw-r--r--website-old/download-edge-none.html54
-rw-r--r--website-old/download-edge.html63
-rw-r--r--website-old/download.html97
-rw-r--r--website-old/downloadButton.pngbin0 -> 1273 bytes
-rw-r--r--website-old/downloadButton.svg16
-rw-r--r--website-old/favicon.icobin0 -> 4286 bytes
-rw-r--r--website-old/features/Builder.html187
-rw-r--r--website-old/features/Cleanup.html86
-rw-r--r--website-old/features/Constructor.html109
-rw-r--r--website-old/features/Data.html84
-rw-r--r--website-old/features/EqualsAndHashCode.html97
-rw-r--r--website-old/features/GetterLazy.html66
-rw-r--r--website-old/features/GetterSetter.html105
-rw-r--r--website-old/features/Log.html105
-rw-r--r--website-old/features/NonNull.html86
-rw-r--r--website-old/features/Singular-snippet.html43
-rw-r--r--website-old/features/SneakyThrows.html96
-rw-r--r--website-old/features/Synchronized.html85
-rw-r--r--website-old/features/ToString.html92
-rw-r--r--website-old/features/Value.html87
-rw-r--r--website-old/features/clear.gifbin0 -> 43 bytes
-rw-r--r--website-old/features/configuration.html115
-rw-r--r--website-old/features/delombok.html80
-rw-r--r--website-old/features/experimental/Accessors.html116
-rw-r--r--website-old/features/experimental/Builder.html36
-rw-r--r--website-old/features/experimental/Delegate.html100
-rw-r--r--website-old/features/experimental/ExtensionMethod.html116
-rw-r--r--website-old/features/experimental/FieldDefaults.html95
-rw-r--r--website-old/features/experimental/Value.html36
-rw-r--r--website-old/features/experimental/Wither.html113
-rw-r--r--website-old/features/experimental/index.html77
-rw-r--r--website-old/features/experimental/onX.html92
-rw-r--r--website-old/features/experimental/var.html83
-rw-r--r--website-old/features/features.css179
-rw-r--r--website-old/features/gradient.pngbin0 -> 82 bytes
-rw-r--r--website-old/features/index.html90
-rw-r--r--website-old/features/lombok-background.pngbin0 -> 34208 bytes
-rw-r--r--website-old/features/val.html76
-rw-r--r--website-old/icon_brush_unused.pngbin0 -> 4350 bytes
-rw-r--r--website-old/icon_bugs.pngbin0 -> 6662 bytes
-rw-r--r--website-old/icon_contribute.pngbin0 -> 5353 bytes
-rw-r--r--website-old/icon_discussion.pngbin0 -> 5889 bytes
-rw-r--r--website-old/icon_download.pngbin0 -> 3233 bytes
-rw-r--r--website-old/icon_overview.pngbin0 -> 6741 bytes
-rw-r--r--website-old/index.css182
-rw-r--r--website-old/index.html96
-rwxr-xr-xwebsite-old/logi/iepngfix.htc187
-rwxr-xr-xwebsite-old/logi/iepngfix_tilebg.js178
-rw-r--r--website-old/logi/jQuery-all.js143
-rw-r--r--website-old/logi/reset.css67
-rw-r--r--website-old/lombokBullet.pngbin0 -> 863 bytes
-rw-r--r--website-old/mavenrepo/index.html99
-rw-r--r--website-old/novideo.html57
-rw-r--r--website-old/peppery_background_large.jpgbin0 -> 294799 bytes
-rw-r--r--website-old/poster.pngbin0 -> 114022 bytes
-rw-r--r--website-old/reinier.jpgbin0 -> 6550 bytes
-rw-r--r--website-old/robbertjan.jpgbin0 -> 11605 bytes
-rw-r--r--website-old/roel.jpgbin0 -> 5477 bytes
-rw-r--r--website-old/sander.jpgbin0 -> 53317 bytes
-rw-r--r--website-old/setup/android.html131
-rw-r--r--website-old/setup/ecj.html89
-rw-r--r--website-old/setup/gwt.html68
-rw-r--r--website-old/setup/netbeans-enable-annotation-processing-in-editor.pngbin0 -> 130876 bytes
-rw-r--r--website-old/setup/netbeans.html65
-rw-r--r--website-old/setup/pom.xml78
-rw-r--r--website-old/unknown_person.gifbin0 -> 412 bytes
-rw-r--r--website-old/videos/expressInstall.swfbin0 -> 727 bytes
-rw-r--r--website-old/videos/lombok-iPhone.m4vbin0 -> 8527861 bytes
-rw-r--r--website-old/videos/lombok.mp4bin0 -> 5657272 bytes
-rw-r--r--website-old/videos/lombok.ogvbin0 -> 6320302 bytes
-rw-r--r--website-old/videos/player.swfbin0 -> 51669 bytes
-rw-r--r--website-old/videos/poster.pngbin0 -> 114022 bytes
-rw-r--r--website-old/videos/swfobject.js4
81 files changed, 4702 insertions, 0 deletions
diff --git a/website-old/all-versions.html b/website-old/all-versions.html
new file mode 100644
index 00000000..c597d619
--- /dev/null
+++ b/website-old/all-versions.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="logi/reset.css" />
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok - Historic versions</title>
+ <style type="text/css">
+ code {
+ font-size: 12px;
+ font-family: monospaced;
+ }
+
+ #downloadLink {
+ font-size: 14px;
+ }
+
+ .meat {
+ margin: 16px auto 0 auto;
+ width: 800px;
+ }
+
+ .backLink {
+ padding-top: 100px;
+ width: 100%;
+ text-align: right;
+ }
+
+ h1 {
+ padding-bottom: 0;
+ margin-bottom: 4px;
+ }
+ </style>
+</head><body>
+ <div class="meat download edge">
+ <h1>Download older versions of lombok</h1>
+ <div>See the <a href="changelog.html">changelog</a> for dates and modifications.</div>
+ <ul>
+ <li><a href="downloads/lombok-1.16.4.jar">lombok-1.16.4.jar</a></li>
+ <li><a href="downloads/lombok-1.16.2.jar">lombok-1.16.2.jar</a></li>
+ <li><a href="downloads/lombok-1.16.0.jar">lombok-1.16.0.jar</a></li>
+ <li><a href="downloads/lombok-1.14.8.jar">lombok-1.14.8.jar</a></li>
+ <li><a href="downloads/lombok-1.14.6.jar">lombok-1.14.6.jar</a></li>
+ <li><a href="downloads/lombok-1.14.4.jar">lombok-1.14.4.jar</a></li>
+ <li><a href="downloads/lombok-1.14.2.jar">lombok-1.14.2.jar</a></li>
+ <li><a href="downloads/lombok-1.14.0.jar">lombok-1.14.0.jar</a></li>
+ <li><a href="downloads/lombok-1.12.6.jar">lombok-1.12.6.jar</a></li>
+ <li><a href="downloads/lombok-1.12.4.jar">lombok-1.12.4.jar</a></li>
+ <li><a href="downloads/lombok-1.12.2.jar">lombok-1.12.2.jar</a></li>
+ <li><a href="downloads/lombok-0.12.0.jar">lombok-0.12.0.jar</a></li>
+ <li><a href="downloads/lombok-0.11.8.jar">lombok-0.11.8.jar</a></li>
+ <li><a href="downloads/lombok-0.11.6.jar">lombok-0.11.6.jar</a></li>
+ <li><a href="downloads/lombok-0.11.4.jar">lombok-0.11.4.jar</a></li>
+ <li><a href="downloads/lombok-0.11.2.jar">lombok-0.11.2.jar</a></li>
+ <li><a href="downloads/lombok-0.11.0.jar">lombok-0.11.0.jar</a></li>
+ <li><a href="downloads/lombok-0.10.8.jar">lombok-0.10.8.jar</a></li>
+ <li><a href="downloads/lombok-0.10.6.jar">lombok-0.10.6.jar</a></li>
+ <li><a href="downloads/lombok-0.10.4.jar">lombok-0.10.4.jar</a></li>
+ <li><a href="downloads/lombok-0.10.2.jar">lombok-0.10.2.jar</a></li>
+ <li><a href="downloads/lombok-0.10.1.jar">lombok-0.10.1.jar</a></li>
+ <li><a href="downloads/lombok-0.10.0.jar">lombok-0.10.0.jar</a></li>
+ <li><a href="downloads/lombok-0.9.3.jar">lombok-0.9.3.jar</a></li>
+ <li><a href="downloads/lombok-0.9.2.jar">lombok-0.9.2.jar</a></li>
+ <li><a href="downloads/lombok-0.9.1.jar">lombok-0.9.1.jar</a></li>
+ <li><a href="downloads/lombok-0.9.0.jar">lombok-0.9.0.jar</a></li>
+ <li><a href="downloads/lombok-0.8.jar">lombok-0.8.jar</a></li>
+ <li><a href="downloads/lombok-0.8.5.jar">lombok-0.8.5.jar</a></li>
+ <li><a href="downloads/lombok-0.8.4.jar">lombok-0.8.4.jar</a></li>
+ <li><a href="downloads/lombok-0.8.3.jar">lombok-0.8.3.jar</a></li>
+ <li><a href="downloads/lombok-0.8.2.jar">lombok-0.8.2.jar</a></li>
+ <li><a href="downloads/lombok-0.8.1.jar">lombok-0.8.1.jar</a></li>
+ <li><a href="downloads/lombok-0.4.jar">lombok-0.4.jar</a></li>
+ </ul>
+ <div class="backLink">
+ <a href="index.html">back to the project homepage</a>
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/buttonbar.jpg b/website-old/buttonbar.jpg
new file mode 100644
index 00000000..6eb10e71
--- /dev/null
+++ b/website-old/buttonbar.jpg
Binary files differ
diff --git a/website-old/buttonbar.psd b/website-old/buttonbar.psd
new file mode 100644
index 00000000..b8335cbb
--- /dev/null
+++ b/website-old/buttonbar.psd
Binary files differ
diff --git a/website-old/buttonbar_unmodified.png b/website-old/buttonbar_unmodified.png
new file mode 100644
index 00000000..6a3121af
--- /dev/null
+++ b/website-old/buttonbar_unmodified.png
Binary files differ
diff --git a/website-old/changelog.html b/website-old/changelog.html
new file mode 100644
index 00000000..df09e661
--- /dev/null
+++ b/website-old/changelog.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="logi/reset.css" />
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok - Changelog</title>
+ <style type="text/css">
+ body {
+ margin: 8px;
+ }
+ </style>
+</head><body>
+ @CHANGELOG@
+</body></html>
diff --git a/website-old/clear.gif b/website-old/clear.gif
new file mode 100644
index 00000000..35d42e80
--- /dev/null
+++ b/website-old/clear.gif
Binary files differ
diff --git a/website-old/credits.html b/website-old/credits.html
new file mode 100644
index 00000000..de83981e
--- /dev/null
+++ b/website-old/credits.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="logi/reset.css" />
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok - Credits</title>
+ <style type="text/css">
+ h1 {
+ font-size: 14px;
+ text-align: center;
+ width: 100%;
+ }
+
+ .meat {
+ margin: 16px auto 0 auto;
+ width: 800px;
+ }
+
+ .personList {
+ clear: both;
+ padding-top: 16px;
+ }
+
+ .personList h3 {
+ font-size: 1em;
+ }
+
+ .person {
+ width: 128px;
+ float: left;
+ margin-right: 32px;
+ }
+
+ .person .imgCt {
+ width: 128px;
+ }
+
+ .person img {
+ text-align: center;
+ margin: 0 auto;
+ display: block;
+ }
+
+ .person .name {
+ margin: 0 auto 0 auto;
+ width: 100%;
+ text-align: center;
+ display: block;
+ }
+
+ .thanks {
+ clear: both;
+ padding-top: 32px;
+ }
+
+ .back {
+ margin-top: 32px;
+ }
+
+ ul {
+ list-style-image: url(lombokBullet.png);
+ list-style-position: inside;
+ }
+ </style>
+</head><body>
+ <div class="meat">
+ <h1>Project Lombok - About the authors and everyone that's helped us create Project Lombok.</h1>
+ <div class="credits">
+ <div class="committers personList">
+ <h3>Regular contributors to Project Lombok:</h3>
+ <div class="person">
+ <div class="imgCt"><img class="jappeImg" src="unknown_person.gif" /></div>
+ <span class="name">Jappe van der Hel</span>
+ </div>
+ <div class="person">
+ <div class="imgCt"><img class="philippImg" src="unknown_person.gif" /></div>
+ <span class="name">Philipp Eichhorn</span>
+ </div>
+ <div class="person">
+ <div class="imgCt"><img class="reinierImg" src="reinier.jpg" /></div>
+ <span class="name">Reinier Zwitserloot</span>
+ </div>
+ <div class="person">
+ <div class="imgCt"><img class="rjImg" src="robbertjan.jpg" /></div>
+ <span class="name">Robbert Jan Grootjans</span>
+ </div>
+ <div class="person">
+ <div class="imgCt"><img class="roelImg" src="roel.jpg" /></div>
+ <span class="name">Roel Spilker</span>
+ </div>
+ <div class="person">
+ <div class="imgCt"><img class="sanderImg" src="sander.jpg" /></div>
+ <span class="name">Sander Koning</span>
+ </div>
+ </div>
+ <div class="thanks">
+ We'd like to thank:<ul>
+ <li>Perry Nguyen (pfn on ##java on freenode) for creating the inspiration for project lombok.</li>
+ <li>Tor Norbye, Jan Lahoda, and Petr Jiricka for helping out with Netbeans internals and/or javac.</li>
+ <li><a href="http://javaposse.com/">The Java Posse</a> for making the java community <em>awesome</em>. Listen to their podcast!</li>
+ <li>all contributors who submitted patches or helped answering questions!</li>
+ </ul>
+ as well as the authors of the following tools that we use:<ul>
+ <li><a href="https://github.com/">Github</a> for hosting lombok's repository and issue tracker.</li>
+ <li>The <a href="http://asm.ow2.org/index.html">ASM team</a> at ObjectWeb for creating an excellent class file editing tool.
+ Lombok uses ASM to interact with Eclipse.</li>
+ <li>Markus Gebhard for creating <a href="http://java2html.de/">java2html</a> which we use for the example code snippets on the
+ features pages.</li>
+ <li><a href="http://camendesign.com/code/video_for_everybody">Kroc Camen</a>'s video for everbody. The lombok demo video
+ runs on just about every system imaginable because of it.</a></li>
+ <li>Longtail Video's <a href="http://www.longtailvideo.com/players/jw-flv-player/">JWPlayer</a>, which is bringing the video to
+ those of you who have an aging browser.</li>
+ <li>The <a href="https://code.google.com/p/spi/">spi project</a>, which makes it very easy to extend lombok with your own transformations.</li>
+ <li><a href="http://ant.apache.org/ivy/">Apache Ivy</a> - Dependency management</li>
+ <li><a href="http://cobertura.sourceforge.net/">Cobertura</a> which we use to ensure our tests cover as much as possible.</li>
+ </ul>
+ </div>
+ </div>
+ <div class="back"><a href="index.html">Back to the home page</a>.
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/disableCheckedExceptions.html b/website-old/disableCheckedExceptions.html
new file mode 100644
index 00000000..64ad1cd8
--- /dev/null
+++ b/website-old/disableCheckedExceptions.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="logi/reset.css" />
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok side projects - Disable checked Exceptions</title>
+ <style type="text/css">
+ code {
+ font-size: 12px;
+ font-family: monospaced;
+ }
+
+ .meat {
+ margin: 16px auto 0 auto;
+ width: 800px;
+ }
+
+ .backLink {
+ padding-top: 100px;
+ width: 100%;
+ text-align: right;
+ }
+ </style>
+</head><body>
+ <div class="meat">
+ <h1>Tired of checked exceptions?</h1>
+ <p>
+ This lombok spinoff project consists of a hack that only works in javac - not eclipse or any other IDE.<br />
+ It will completely disable the notion of checked exceptions. You may throw any exception anywhere, and you may
+ also catch any exception anywhere. In standard javac, you may not catch a checked exception that is not declared
+ as thrown by at least 1 statement in your try block, unless it is <code>Exception</code> or <code>Throwable</code>.<br />
+ This restriction is lifted as well.
+ </p>
+ <h3>Usage</h3>
+ <p>
+ Just make sure <code>disableCheckedExceptions-alpha.jar</code> is on the classpath as you compile. For example:<br />
+ <code>javac -cp disableCheckedExceptions-alpha.jar MySource.java</code>
+ </p>
+ <p>
+ Ready to try it out? download it here: <a href="downloads/disableCheckedExceptions-alpha.jar">disableCheckedExceptions-alpha.jar</a>
+ </p>
+ <p>
+ Want to know how its done? Grab the lombok repository <a href="https://github.com/rzwitserloot/lombok/tree/disableCheckedExceptions">here on github</a>,
+ and look in the <code>experimental</code> directory.
+ </p>
+ <div class="backLink">
+ <a href="index.html">back to the project homepage</a>
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/download-edge-none.html b/website-old/download-edge-none.html
new file mode 100644
index 00000000..07091b90
--- /dev/null
+++ b/website-old/download-edge-none.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="logi/reset.css" />
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok - Cutting Edge build</title>
+ <style type="text/css">
+ code {
+ font-size: 12px;
+ font-family: monospaced;
+ }
+
+ #downloadLink {
+ font-size: 14px;
+ }
+
+ .meat {
+ margin: 16px auto 0 auto;
+ width: 800px;
+ }
+
+ .backLink {
+ padding-top: 100px;
+ width: 100%;
+ text-align: right;
+ }
+
+ h1 {
+ padding-bottom: 0;
+ margin-bottom: 4px;
+ }
+ </style>
+</head><body>
+ <div class="meat download edge">
+ <h1>Download Lombok Cutting Edge build</h1>
+ <div class="versionInfo">
+ No edge build as been released since the last <a href="download.html">stable release</a> of lombok.
+ </div>
+ <div class="backLink">
+ <a href="index.html">back to the project homepage</a>
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/download-edge.html b/website-old/download-edge.html
new file mode 100644
index 00000000..4cf794a6
--- /dev/null
+++ b/website-old/download-edge.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="logi/reset.css" />
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok - Cutting Edge build</title>
+ <style type="text/css">
+ code {
+ font-size: 12px;
+ font-family: monospaced;
+ }
+
+ #downloadLink {
+ font-size: 14px;
+ }
+
+ .meat {
+ margin: 16px auto 0 auto;
+ width: 800px;
+ }
+
+ .backLink {
+ padding-top: 100px;
+ width: 100%;
+ text-align: right;
+ }
+
+ h1 {
+ padding-bottom: 0;
+ margin-bottom: 4px;
+ }
+ </style>
+</head><body>
+ <div class="meat download edge">
+ <h1>Download Lombok Cutting Edge build</h1>
+ <div class="versionInfo">
+ version: @VERSION-EDGE@
+ </div>
+ <p id="changelog">
+ @CHANGELOG-EDGE@
+ </p>
+ <a href="lombok-edge.jar" id="downloadLink">
+ Download now!
+ </a>
+ <p>
+ Cutting edge a bit too gutsy for you? You can grab the <a href="download.html">stable release</a> instead.
+ </p>
+ <div class="backLink">
+ <a href="index.html">back to the project homepage</a>
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/download.html b/website-old/download.html
new file mode 100644
index 00000000..f2e85976
--- /dev/null
+++ b/website-old/download.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <script src="logi/jQuery-all.js" type="text/javascript"></script>
+ <link rel="stylesheet" type="text/css" href="logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="index.css" />
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok</title>
+ <!--[if lt IE 7]><script type="text/javascript" src="logi/iepngfix_tilebg.js"></script><![endif]-->
+</head><body>
+ <a id="forkMe" href="https://github.com/rzwitserloot/lombok"><img style="position: absolute; top: 0; right: 0; border: 0;" src="//s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
+ <div class="meat">
+ <h1><a href="/">Project Lombok</a> - Download</h1>
+ <div id="buttonBar" class="buttonBar">
+ <a class="button" href="features/index.html">
+ <img src="icon_overview.png" />
+ <span>Feature Overview</span>
+ </a>
+ <a class="button" href="https://groups.google.com/group/project-lombok">
+ <img src="icon_discussion.png" />
+ <span>Discuss / Help</span>
+ </a>
+ <a class="button" href="https://wiki.github.com/rzwitserloot/lombok/contributing">
+ <img src="icon_contribute.png" />
+ <span>Contribute</span>
+ </a>
+ <a class="button" href="https://github.com/rzwitserloot/lombok/issues">
+ <img src="icon_bugs.png" />
+ <span>Report an issue</span>
+ </a>
+ <div class="downloadContainer">
+ <a class="downloadLink" id="downloadLink" href="download.html">
+ <img src="icon_download.png" />
+ <span>Download!</span>
+ </a>
+ <div class="versionInfo">
+ Version: @VERSION@ | <a href="changelog.html">changelog</a>
+ </div>
+ </div>
+ </div>
+ <div class="downloadHelp">
+ <div class="stableLink">Download <a href="/downloads/lombok.jar">lombok.jar</a> @VERSION@.</div>
+ <div class="edgeLink">Feeling adventurous? Download the latest <a href="download-edge.html">snapshot</a> release.</div>
+
+ <table cellspacing="0" cellpadding="0">
+ <tr><td class="platform">Maven,&nbsp;Ivy&nbsp;or&nbsp;Gradle</td>
+ <td class="instruction">Lombok is in maven central. <a href="mavenrepo/index.html">More&hellip;</a></td></tr>
+
+ <tr><td class="platform">Javac</td>
+ <td class="instruction">Just put <code>lombok.jar</code> on the classpath.</td></tr>
+
+ <tr><td class="platform">NetBeans</td>
+ <td class="instruction">Just put <code>lombok.jar</code> on the classpath and enable annotation processing. <a href="setup/netbeans.html">More&hellip;</a></td></tr>
+
+ <tr><td class="platform">Eclipse&nbsp;and&nbsp;variants</td>
+ <td class="instruction">Run <code>lombok.jar</code> as a java app (i.e. doubleclick it, usually) to install. Also add lombok.jar to your project. <span style="font-size: 0.8em;"><em>Supported variants: Springsource Tool Suite, JBoss Developer Studio</em></span></td></tr>
+
+ <tr><td class="platform">IDEA&nbsp;IntelliJ</td>
+ <td class="instruction"><a href="https://github.com/mplushnikov/lombok-intellij-plugin">A plugin developed by Michael Plushnikov</a> adds support for most features.</td></tr>
+
+ <tr><td class="platform">Javadoc</td>
+ <td class="instruction">First delombok your code then run javadoc on the result. <a href="features/delombok.html">More&hellip;</a></td></tr>
+
+ <tr><td class="platform">Android</td>
+ <td class="instruction">The proper way to use lombok with android is somewhat complicated but possible. <a href="setup/android.html">More&hellip;</a></td></tr>
+
+ <tr><td class="platform">GWT</td>
+ <td class="instruction">Lombok works with GWT. <a href="setup/gwt.html">More&hellip;</a></td></tr>
+
+ <tr><td class="platform">Play!&nbsp;Framework</td>
+ <td class="instruction">Use Aaron Freeman's <a href="https://github.com/aaronfreeman/play-lombok#readme">lombok play plugin</a>.</td></tr>
+
+ <tr><td class="platform">ecj</td>
+ <td class="instruction">Lombok works on ecj and ecj-based tools. <a href="setup/ecj.html">More&hellip;</a></td></tr>
+ </table>
+ <p style="font-size: 0.9em">
+ Or, <a href="all-versions.html">download</a> a previous version of lombok.
+ </p>
+ </div>
+ <div class="endBar">
+ </div>
+ <div class="footer">
+ <a href="credits.html" class="creditsLink">credits</a> | Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/downloadButton.png b/website-old/downloadButton.png
new file mode 100644
index 00000000..8a0c73b8
--- /dev/null
+++ b/website-old/downloadButton.png
Binary files differ
diff --git a/website-old/downloadButton.svg b/website-old/downloadButton.svg
new file mode 100644
index 00000000..ce5e33a8
--- /dev/null
+++ b/website-old/downloadButton.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="800" height="200" version="1.1">
+ <defs id="defs4">
+ <linearGradient id="lg1">
+ <stop id="s1" offset="0" style="stop-color:white;stop-opacity:0;" />
+ <stop id="s2" offset="1" style="stop-color:white;stop-opacity: .3" />
+ </linearGradient>
+ <linearGradient xlink:href="#lg1" id="lg3" x1="191" y1="156" x2="148" y2="10" gradientUnits="userSpaceOnUse" />
+ </defs>
+ <g id="layer1">
+ <rect x="1%" y="1%" width="98%" height="98%" rx="18px" ry="18px" style="stroke:#d40000;fill:#ff5050;stroke-width: 2;" />
+ <rect x="1%" y="1%" width="98%" height="98%" rx="18px" ry="18px" style="fill:url(#lg3);" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/website-old/favicon.ico b/website-old/favicon.ico
new file mode 100644
index 00000000..bf83a474
--- /dev/null
+++ b/website-old/favicon.ico
Binary files differ
diff --git a/website-old/features/Builder.html b/website-old/features/Builder.html
new file mode 100644
index 00000000..d7453c5b
--- /dev/null
+++ b/website-old/features/Builder.html
@@ -0,0 +1,187 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@Builder</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@Builder</h1>
+ <div class="byline">... and Bob's your uncle: No-hassle fancy-pants APIs for object creation!</div>
+ <div class="since">
+ <h3>Since</h3>
+ <p>
+ <code>@Builder</code> was introduced as experimental feature in lombok v0.12.0.
+ </p><p>
+ <code>@Builder</code> gained <code>@Singular</code> support and was promoted to the main <code>lombok</code> package since lombok v1.16.0.
+ </p><p>
+ <code>@Builder</code> with <code>@Singular</code> adds a clear method since lombok v1.16.8.
+ </p><p>
+ <code>@Builder.Default</code> functionality was added in lombok v1.16.16.
+ </div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ The <code>@Builder</code> annotation produces complex builder APIs for your classes.
+ </p><p>
+ <code>@Builder</code> lets you automatically produce the code required to have your class be instantiable with code such as:<br />
+ <code>Person.builder().name("Adam Savage").city("San Francisco").job("Mythbusters").job("Unchained Reaction").build();</code>
+ </p><p>
+ <code>@Builder</code> can be placed on a class, or on a constructor, or on a method. While the "on a class" and "on a constructor"
+ mode are the most common use-case, <code>@Builder</code> is most easily explained with the "method" use-case.
+ </p><p>
+ A method annotated with <code>@Builder</code> (from now on called the <em>target</em>) causes the following 7 things to be generated:<ul>
+ <li>An inner class named <code><em>Foo</em>Builder</code>, with the same type arguments as the method (called the <em>builder</em>).</li>
+ <li>In the <em>builder</em>: One private non-static non-final field for each parameter of the <em>target</em>.</li>
+ <li>In the <em>builder</em>: A package private no-args empty constructor.</li>
+ <li>In the <em>builder</em>: A 'setter'-like method for each parameter of the <em>target</em>: It has the same type as that parameter and the same name.
+ It returns the builder itself, so that the setter calls can be chained, as in the above example.</li>
+ <li>In the <em>builder</em>: A <code>build()</code> method which calls the method, passing in each field. It returns the same type that the
+ <em>target</em> returns.</li>
+ <li>In the <em>builder</em>: A sensible <code>toString()</code> implementation.</li>
+ <li>In the class containing the <em>target</em>: A static <code>builder()</code> method, which creates a new instance of the <em>builder</em>.</li>
+ </ul>
+ Each listed generated element will be silently skipped if that element already exists (disregarding parameter counts and looking only at names). This
+ includes the <em>builder</em> itself: If that class already exists, lombok will simply start injecting fields and methods inside this already existing
+ class, unless of course the fields / methods to be injected already exist. You may not put any other method (or constructor) generating lombok annotation
+ on a builder class though; for example, you can not put <code>@EqualsAndHashCode</code> on the builder class.
+ </p><p>
+ <code>@Builder</code> can generate so-called 'singular' methods for collection parameters/fields. These take 1 element instead of an entire list, and add the
+ element to the list. For example: <code>Person.builder().job("Mythbusters").job("Unchained Reaction").build();</code> would result in the <code>List&lt;String&gt; jobs</code>
+ field to have 2 strings in it. To get this behaviour, the field/parameter needs to be annotated with <code>@Singular</code>. The feature has <a href="#singular">its own documentation</a>.
+ </p><p>
+ Now that the "method" mode is clear, putting a <code>@Builder</code> annotation on a constructor functions similarly; effectively,
+ constructors are just static methods that have a special syntax to invoke them: Their 'return type' is the class they construct, and their
+ type parameters are the same as the type parameters of the class itself.
+ </p><p>
+ Finally, applying <code>@Builder</code> to a class is as if you added <code>@AllArgsConstructor(access = AccessLevel.PACKAGE)</code> to the class and applied the
+ <code>@Builder</code> annotation to this all-args-constructor. This only works if you haven't written any explicit constructors yourself. If you do have an
+ explicit constructor, put the <code>@Builder</code> annotation on the constructor instead of on the class.
+ </p><p>
+ If using <code>@Builder</code> to generate builders to produce instances of your own class (this is always the case unless adding <code>@Builder</code> to a static method that doesn't return your own type), you can use <code>@Builder(toBuilder = true)</code> to also generate an instance method in your class called <code>toBuilder()</code>; it creates a new builder that starts out with all the values of this instance. You can put the <code>@Builder.ObtainVia</code> annotation on the parameters (in case of a constructor or static method) or fields (in case of <code>@Builder</code> on a type) to indicate alternative means by which the value for that field/parameter is obtained from the instance. For example, you can specify a method to be invoked: <code>@Builder.ObtainVia(method = "calculateFoo")</code>.
+ </p><p>
+ The name of the builder class is <code><em>Foobar</em>Builder</code>, where <em>Foobar</em> is the simplified, title-cased form of the return type of the
+ <em>target</em> - that is, the name of your type for <code>@Builder</code> on constructors and types, and the name of the return type for <code>@Builder</code>
+ on methods. For example, if <code>@Builder</code> is applied to a class named <code>com.yoyodyne.FancyList&lt;T&gt;</code>, then the builder name will be
+ <code>FancyListBuilder&lt;T&gt;</code>. If <code>@Builder</code> is applied to a method that returns <code>void</code>, the builder will be named
+ <code>VoidBuilder</code>.
+ </p><p>
+ The configurable aspects of builder are:<ul>
+ <li>The <em>builder's class name</em> (default: return type + 'Builder')</li>
+ <li>The <em>build()</em> method's name (default: <code>"build"</code>)</li>
+ <li>The <em>builder()</em> method's name (default: <code>"builder"</code>)</li>
+ <li>If you want <code>toBuilder()</code> (default: no)</li>
+ </ul>
+ Example usage where all options are changed from their defaults:<br />
+ <code>@Builder(builderClassName = "HelloWorldBuilder", buildMethodName = "execute", builderMethodName = "helloWorld", toBuilder = true)</code><br />
+ </p>
+ </div>
+ <div class="overview">
+ <h3><a id="builderdefault" name="builderdefault">@Builder.Default</a></h3>
+ <p>
+ If a certain field/parameter is never set during a build session, then it always gets 0 / <code>null</code> / false. If you've put <code>@Builder</code> on a class
+ (and not a method or constructor) you can instead specify the default directly on the field, and annotate the field with <code>@Builder.Default</code>:<br />
+ <code>@Builder.Default private final long created = System.currentTimeMillis();</code>
+ </p>
+ </div>
+ <div class="overview">
+ <h3><a id="singular" name="singular">@Singular</a></h3>
+ <p>
+ By annotating one of the parameters (if annotating a method or constructor with <code>@Builder</code>) or fields (if annotating a class with <code>@Builder</code>) with the
+ <code>@Singular</code> annotation, lombok will treat that builder node as a collection, and it generates 2 'adder' methods instead of a 'setter' method. One which adds a single element to the collection, and one
+ which adds all elements of another collection to the collection. No setter to just set the collection (replacing whatever was already added) will be generated. A 'clear' method is also generated. These 'singular' builders
+ are very complicated in order to guarantee the following properties:
+ <ul>
+ <li>When invoking <code>build()</code>, the produced collection will be immutable.</li>
+ <li>Calling one of the 'adder' methods, or the 'clear' method, after invoking <code>build()</code> does not modify any already generated objects, and, if <code>build()</code> is later called again, another collection with all the elements added since the creation of the builder is generated.</li>
+ <li>The produced collection will be compacted to the smallest feasible format while remaining efficient.</li>
+ </ul>
+ </p><p>
+ <code>@Singular</code> can only be applied to collection types known to lombok. Currently, the supported types are:
+ <ul>
+ <li><a href="https://docs.oracle.com/javase/8/docs/api/java/util/package-summary.html"><code>java.util</code></a>:<ul>
+ <li><code>Iterable</code>, <code>Collection</code>, and <code>List</code> (backed by a compacted unmodifiable <code>ArrayList</code> in the general case).</li>
+ <li><code>Set</code>, <code>SortedSet</code>, and <code>NavigableSet</code> (backed by a smartly sized unmodifiable <code>HashSet</code> or <code>TreeSet</code> in the general case).</li>
+ <li><code>Map</code>, <code>SortedMap</code>, and <code>NavigableMap</code> (backed by a smartly sized unmodifiable <code>HashMap</code> or <code>TreeMap</code> in the general case).</li>
+ </ul></li>
+ <li><a href="https://github.com/google/guava">Guava</a>'s <code>com.google.common.collect</code>:<ul>
+ <li><code>ImmutableCollection</code> and <code>ImmutableList</code> (backed by the builder feature of <code>ImmutableList</code>).</li>
+ <li><code>ImmutableSet</code> and <code>ImmutableSortedSet</code> (backed by the builder feature of those types).</li>
+ <li><code>ImmutableMap</code>, <code>ImmutableBiMap</code>, and <code>ImmutableSortedMap</code> (backed by the builder feature of those types).</li>
+ <li><code>ImmutableTable</code> (backed by the builder feature of <code>ImmutableTable</code>).</li>
+ </ul></li>
+ </ul>
+ </p><p>
+ If your identifiers are written in common english, lombok assumes that the name of any collection with <code>@Singular</code> on it is an english plural and will attempt to automatically
+ singularize that name. If this is possible, the add-one method will use this name. For example, if your collection is called <code>statuses</code>, then the add-one method will automatically
+ be called <code>status</code>. You can also specify the singular form of your identifier explictly by passing the singular form as argument to the annotation like so: <code>@Singular("axis") List&lt;Line&gt; axes;</code>.<br />
+ If lombok cannot singularize your identifier, or it is ambiguous, lombok will generate an error and force you to explicitly specify the singular name.
+ </p><p>
+ The snippet below does not show what lombok generates for a <code>@Singular</code> field/parameter because it is rather complicated.
+ You can view a snippet <a href="Singular-snippet.html">here</a>.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.builder.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Builder</code> as a warning or error if configured.</dd>
+ <dt><code>lombok.singular.useGuava</code> = [<code>true</code> | <code>false</code>] (default: false)</dt>
+ <dd>If <code>true</code>, lombok will use guava's <code>ImmutableXxx</code> builders and types to implement <code>java.util</code> collection interfaces, instead of creating
+ implementations based on <code>Collections.unmodifiableXxx</code>. You must ensure that guava is actually available on the classpath and buildpath if you use this setting.
+ Guava is used automatically if your field/parameter has one of the guava <code>ImmutableXxx</code> types.
+ <dt><code>lombok.singular.auto</code> = [<code>true</code> | <code>false</code>] (default: true)</dt>
+ <dd>If <code>true</code> (which is the default), lombok automatically tries to singularize your identifier name by assuming that it is a common english plural.
+ If <code>false</code>, you must always explicitly specify the singular name, and lombok will generate an error if you don't (useful if you write your code in a language other than english).
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ @Singular support for <code>java.util.NavigableMap/Set</code> only works if you are compiling with JDK1.8 or higher.
+ </p><p>
+ You cannot manually provide some or all parts of a <code>@Singular</code> node; the code lombok generates is too complex for this. If you want to
+ manually control (part of) the builder code associated with some field or parameter, don't use <code>@Singular</code> and add everything you need manually.
+ </p><p>
+ The sorted collections (java.util: <code>SortedSet</code>, <code>NavigableSet</code>, <code>SortedMap</code>, <code>NavigableMap</code> and guava: <code>ImmutableSortedSet</code>, <code>ImmutableSortedMap</code>) require that the type argument of the collection has natural order (implements <code>java.util.Comparable</code>). There is no way to pass an explicit <code>Comparator</code> to use in the builder.
+ </p><p>
+ An <code>ArrayList</code> is used to store added elements as call methods of a <code>@Singular</code> marked field, if the target collection is from the <code>java.util</code> package, <em>even if the collection is a set or map</em>. Because lombok ensures that generated collections are compacted, a new backing instance of a set or map must be constructed anyway, and storing the data as an <code>ArrayList</code> during the build process is more efficient that storing it as a map or set. This behaviour is not externally visible, an an implementation detail of the current implementation of the <code>java.util</code> recipes for <code>@Singular @Builder</code>.
+ </p><p>
+ With <code>toBuilder = true</code> applied to static methods, any type parameter on the annotated static method must show up in the returntype.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="Value.html">Previous feature (@Value)</a> | <a href="SneakyThrows.html">Next feature (@SneakyThrows)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/Cleanup.html b/website-old/features/Cleanup.html
new file mode 100644
index 00000000..37e53c18
--- /dev/null
+++ b/website-old/features/Cleanup.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@Cleanup</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@Cleanup</h1>
+ <div class="byline">Automatic resource management: Call your <code>close()</code> methods safely with no hassle.</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ You can use <code>@Cleanup</code> to ensure a given resource is automatically cleaned up before the code execution path exits your
+ current scope. You do this by annotating any local variable declaration with the <code>@Cleanup</code> annotation like so:<br />
+ <code>@Cleanup InputStream in = new FileInputStream("some/file");</code><br />
+ As a result, at the end of the scope you're in, <code>in.close()</code> is called. This call is guaranteed to run by way of a
+ try/finally construct. Look at the example below to see how this works.
+ </p><p>
+ If the type of object you'd like to cleanup does not have a <code>close()</code> method, but some other no-argument method, you can
+ specify the name of this method like so:<br />
+ <code>@Cleanup("dispose") org.eclipse.swt.widgets.CoolBar bar = new CoolBar(parent, 0);</code><br />
+ By default, the cleanup method is presumed to be <code>close()</code>. A cleanup method that takes 1 or more arguments cannot be called via
+ <code>@Cleanup</code>.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.cleanup.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Cleanup</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ In the finally block, the cleanup method is only called if the given resource is not <code>null</code>. However, if you use <code>delombok</code>
+ on the code, a call to <code>lombok.Lombok.preventNullAnalysis(Object o)</code> is inserted to prevent warnings if static code analysis could
+ determine that a null-check would not be needed. Compilation with <code>lombok.jar</code> on the classpath removes that method call,
+ so there is no runtime dependency.
+ </p>
+ <p>
+ If your code throws an exception, and the cleanup method call that is then triggered also throws an exception, then the original exception
+ is hidden by the exception thrown by the cleanup call. You should <em>not</em> rely on this 'feature'. Preferably, lombok would like to generate
+ code so that, if the main body has thrown an exception, any exception thrown by the close call is silently swallowed (but if the main body
+ exited in any other way, exceptions by the close call will not be swallowed). The authors of lombok do not currently know of a feasible way
+ to implement this scheme, but if java updates allow it, or we find a way, we'll fix it.
+ </p><p>
+ You do still need to handle any exception that the cleanup method can generate!
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="NonNull.html">Previous feature (@NonNull)</a> | <a href="GetterSetter.html">Next feature (@Getter / @Setter)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/Constructor.html b/website-old/features/Constructor.html
new file mode 100644
index 00000000..407f54ad
--- /dev/null
+++ b/website-old/features/Constructor.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@XArgsConstructor</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor</h1>
+ <div class="byline">Constructors made to order: Generates constructors that take no arguments, one argument per final / non-null field, or one argument for every field.</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ This set of 3 annotations generate a constructor that will accept 1 parameter for certain fields, and simply assigns this parameter to the field.
+ </p><p>
+ <code>@NoArgsConstructor</code> will generate a constructor with no parameters. If this is not possible (because of final fields), a compiler error will result instead, unless <code>@NoArgsConstructor(force = true)</code> is used, then all final fields are initialized with 0 / false / null. For fields with constraints, such as <code>@NonNull</code> fields, <em>no</em> check or assignment is generated, so be aware that these constraints may then not be
+ fulfilled until those fields are properly initialized later. Certain java constructs, such as hibernate and the Service Provider Interface require a no-args constructor.
+ This annotation is useful primarily in combination with either <code>@Data</code> or one of the other constructor generating annotations.
+ </p><p>
+ <code>@RequiredArgsConstructor</code> generates a constructor with 1 parameter for each field that requires special handling. All non-initialized <code>final</code> fields get a parameter,
+ as well as any fields that are marked as <code>@NonNull</code> that aren't initialized where they are declared. For those fields marked with <code>@NonNull</code>, an explicit
+ null check is also generated. The constructor will throw a <code>NullPointerException</code> if any of the parameters intended for the fields marked with <code>@NonNull</code>
+ contain <code>null</code>. The order of the parameters match the order in which the fields appear in your class.
+ </p><p>
+ <code>@AllArgsConstructor</code> generates a constructor with 1 parameter for each field in your class. Fields marked with <code>@NonNull</code> result in null checks on
+ those parameters.
+ </p><p>
+ Each of these annotations allows an alternate form, where the generated constructor is always private, and an additional static factory method that wraps around the
+ private constructor is generated. This mode is enabled by supplying the <code>staticName</code> value for the annotation, like so: <code>@RequiredArgsConstructor(staticName="of")</code>.
+ Such a static factory method will infer generics, unlike a normal constructor. This means your API users get write <code>MapEntry.of("foo", 5)</code> instead of the much longer
+ <code>new MapEntry&lt;String, Integer&gt;("foo", 5)</code>.
+ </p><p>
+ To put annotations on the generated constructor, you can use <code>onConstructor=@__({@AnnotationsHere})</code>, but be careful; this is an experimental feature. For more details see the documentation on the <a href="experimental/onX.html">onX</a> feature.
+ </p><p>
+ Static fields are skipped by these annotations. Also, a <code>@java.beans.ConstructorProperties</code> annotation is added for all constructors with at least 1 argument,
+ which allows bean editor tools to call the generated constructors. <code>@ConstructorProperties</code> is new in Java 1.6, which means that if your code is intended for
+ compilation on Java 1.5, a compiler error will occur. <em>Running</em> on a JVM 1.5 should be no problem (the annotation will be ignored). To suppress the generation of
+ the <code>@ConstructorProperties</code> annotation, add a parameter to your annotation: <code>@AllArgsConstructor(suppressConstructorProperties=true)</code>. However,
+ as java 1.5, which has already been end-of-lifed, fades into obscurity, this parameter will eventually be removed. It has also been marked deprecated for this reason.
+ </p><p>
+ Unlike most other lombok annotations, the existence of an explicit constructor does not stop these annotations from generating their own constructor. This means you can write your own specialized constructor, and let lombok generate the boilerplate ones as well. If a conflict arises (one of your constructors ends up with the same signature as one that lombok generates), a compiler error will occur.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.anyConstructor.suppressConstructorProperties</code> = [<code>true</code> | <code>false</code>] (default: <code>false</code>)</dt>
+ <dd>If set to <code>true</code>, then lombok will skip adding a <code>@java.beans.ConstructorProperties</code> to generated constructors. This is useful in android and GWT development where that annotation is not usually available.</dd>
+ <dt><code>lombok.</code>[<code>allArgsConstructor</code>|<code>requiredArgsConstructor</code>|<code>noArgsConstructor</code>]<code>.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of the relevant annotation (<code>@AllArgsConstructor</code>, <code>@RequiredArgsConstructor</code> or <code>@NoArgsConstructor</code>) as a warning or error if configured.</dd>
+ <dt><code>lombok.anyConstructor.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of any of the 3 constructor-generating annotations as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ Even if a field is explicitly initialized with <code>null</code>, lombok will consider the requirement to avoid null as fulfilled, and will <em>NOT</em> consider
+ the field as a 'required' argument. The assumption is that if you explicitly assign <code>null</code> to a field that you've also marked as <code>@NonNull</code>
+ signals you must know what you're doing.
+ </p><p>
+ The <code>@java.beans.ConstructorProperties</code> annotation is never generated for a constructor with no arguments. This also explains why <code>@NoArgsConstructor</code>
+ lacks the <code>suppressConstructorProperties</code> annotation method. The generated static factory methods also do not get <code>@ConstructorProperties</code>, as this annotation can only be added to real constructors.
+ </p><p>
+ <code>@XArgsConstructor</code> can also be used on an enum definition. The generated constructor will always be
+ private, because non-private constructors aren't legal in enums. You don't have to specify <code>AccessLevel.PRIVATE</code>.
+ </p><p>
+ While <code>suppressConstructorProperties</code> has been marked deprecated in anticipation of a world where all java environments have the
+ <code>@ConstructorProperties</code> annotation available, first GWT 2.2 and Android 2.3.3, which do not (yet) have this annotation, will have
+ to be ancient history before this annotation parameter will be removed.
+ </p><p>
+ The <code>flagUsage</code> configuration keys do not trigger when a constructor is generated by <code>@Data</code>, <code>@Value</code> or any other lombok annotation.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="EqualsAndHashCode.html">Previous feature (@EqualsAndHashCode)</a> | <a href="Data.html">Next feature (@Data)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/Data.html b/website-old/features/Data.html
new file mode 100644
index 00000000..d69cfac3
--- /dev/null
+++ b/website-old/features/Data.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@Data</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@Data</h1>
+ <div class="byline">All together now: A shortcut for <code>@ToString</code>, <code>@EqualsAndHashCode</code>,
+ <code>@Getter</code> on all fields, <code>@Setter</code> on all non-final fields, and <code>@RequiredArgsConstructor</code>!</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ <code>@Data</code> is a convenient shortcut annotation that bundles the features of <a href="ToString.html"><code>@ToString</code></a>, <a href="EqualsAndHashCode.html"><code>@EqualsAndHashCode</code></a>, <a href="GetterSetter.html"><code>@Getter</code> / <code>@Setter</code></a> and <a href="Constructor.html"><code>@RequiredArgsConstructor</code></a> together: In other words, <code>@Data</code> generates <em>all</em> the boilerplate that is normally associated with simple POJOs (Plain Old Java Objects) and beans: getters for all fields, setters for all non-final fields, and appropriate <code>toString</code>, <code>equals</code> and <code>hashCode</code> implementations that involve the fields of the class, and a constructor that initializes all final fields, as well as all non-final fields with no initializer that have been marked with <code>@NonNull</code>, in order to ensure the field is never null.
+ </p><p>
+ <code>@Data</code> is like having implicit <code>@Getter</code>, <code>@Setter</code>, <code>@ToString</code>, <code>@EqualsAndHashCode</code> and <code>@RequiredArgsConstructor</code> annotations on the class (except that no constructor will be generated if any explicitly written constructor exists). However, the parameters of these annotations (such as <code>callSuper</code>, <code>includeFieldNames</code> and <code>exclude</code>) cannot be set with <code>@Data</code>. If you need to set non-default values for any of these parameters, just add those annotations explicitly; <code>@Data</code> is smart enough to defer to those annotations.
+ </p><p>
+ All generated getters and setters will be <code>public</code>. To override the access level, annotate the field or class with an explicit <code>@Setter</code> and/or <code>@Getter</code> annotation. You can also use this annotation (by combining it with <code>AccessLevel.NONE</code>) to suppress generating a getter and/or setter altogether.
+ </p><p>
+ All fields marked as <code>transient</code> will not be considered for <code>hashCode</code> and <code>equals</code>. All static fields will be skipped entirely (not considered for any of the generated methods, and no setter/getter will be made for them).
+ </p><p>
+ If the class already contains a method with the same name and parameter count as any method that would normally be generated, that method is not generated, and no warning or error is emitted. For example, if you already have a method with signature <code>equals(AnyType param)</code>, no <code>equals</code> method will be generated, even though technically it might be an entirely different method due to having different parameter types. The same rule applies to the constructor (any explicit constructor will prevent <code>@Data</code> from generating one), as well as <code>toString</code>, <code>equals</code>, and all getters and setters. You can mark any constructor or method with <code>@lombok.experimental.Tolerate</code> to hide them from lombok.
+ </p><p>
+ <code>@Data</code> can handle generics parameters for fields just fine. In order to reduce the boilerplate when constructing objects for classes with
+ generics, you can use the <code>staticConstructor</code> parameter to generate a private constructor, as well as a static method that returns a new instance. This way, javac will infer the variable name. Thus, by declaring like so: <code>@Data(staticConstructor="of") class Foo&lt;T&gt; { private T x;}</code> you can create new instances of <code>Foo</code> by writing: <code>Foo.of(5);</code> instead of having to write: <code>new Foo&lt;Integer&gt;(5);</code>.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.data.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Data</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>See the small print of <a href="ToString.html"><code>@ToString</code></a>, <a href="EqualsAndHashCode.html"><code>@EqualsAndHashCode</code></a>,
+ <a href="GetterSetter.html"><code>@Getter / @Setter</code></a> and <a href="Constructor.html">@RequiredArgsConstructor</a>.
+ </p><p>
+ Any annotations named <code>@NonNull</code> (case insensitive) on a field are interpreted as: This field must not ever hold
+ <em>null</em>. Therefore, these annotations result in an explicit null check in the generated constructor for the provided field. Also, these
+ annotations (as well as any annotation named <code>@Nullable</code>) are copied to the constructor parameter, in both the true constructor and
+ any static constructor. The same principle applies to generated getters and setters (see the documentation for <a href="GetterSetter.html">@Getter / @Setter</a>)
+ </p><p>
+ By default, any variables that start with a $ symbol are excluded automatically.
+ You can include them by specifying an explicit annotation (<code>@Getter</code> or <code>@ToString</code>, for example) and using the 'of' parameter.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="Constructor.html">Previous feature (@<em>X</em>Constructor)</a> | <a href="Value.html">Next feature (@Value)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/EqualsAndHashCode.html b/website-old/features/EqualsAndHashCode.html
new file mode 100644
index 00000000..d0298a7b
--- /dev/null
+++ b/website-old/features/EqualsAndHashCode.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@EqualsAndHashCode</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@EqualsAndHashCode</h1>
+ <div class="byline">Equality made easy: Generates <code>hashCode</code> and <code>equals</code> implementations from the fields of your object.</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ Any class definition may be annotated with <code>@EqualsAndHashCode</code> to let lombok generate implementations of the <code>equals(Object other)</code> and <code>hashCode()</code> methods. By default, it'll use all non-static, non-transient fields, but you can exclude more fields by naming them in the optional <code>exclude</code> parameter to the annotation. Alternatively, you can specify exactly which fields you wish to be used by naming them in the <code>of</code> parameter.
+ </p><p>
+ If applying <code>@EqualsAndHashCode</code> to a class that extends another, this feature gets a bit trickier. Normally, auto-generating an <code>equals</code> and <code>hashCode</code> method for such classes is a bad idea, as the superclass also defines fields, which also need equals/hashCode code but
+ this code will not be generated. By setting <code>callSuper</code> to <em>true</em>, you can include the <code>equals</code> and <code>hashCode</code> methods of your superclass in the generated methods. For <code>hashCode</code>, the result of <code>super.hashCode()</code> is included in the hash algorithm, and for <code>equals</code>, the generated method will return false if the super implementation thinks it is not equal to the passed in object. Be aware that not all <code>equals</code> implementations handle this situation properly. However, lombok-generated <code>equals</code> implementations <strong>do</strong> handle this situation properly, so you can safely call your superclass equals if it, too, has a lombok-generated <code>equals</code> method. If you have an explicit superclass you are forced to supply some value for <code>callSuper</code> to acknowledge that you've considered it; failure to do so results in a warning.<br />
+ </p><p>
+ Setting <code>callSuper</code> to <em>true</em> when you don't extend anything (you extend <code>java.lang.Object</code>) is a compile-time error, because it would turn the generated <code>equals()</code> and <code>hashCode()</code> implementations into having the same behaviour as simply inheriting these methods from <code>java.lang.Object</code>: only the same object will be equal to each other and will have the same hashCode. Not setting <code>callSuper</code> to <em>true</em> when you extend another class generates a warning, because unless the superclass has no (equality-important) fields, lombok cannot generate an implementation for you that takes into account the fields declared by your superclasses. You'll need to write your own implementations, or rely on the
+ <code>callSuper</code> chaining facility. You can also use the <code>lombok.equalsAndHashCode.callSuper</code> config key.
+ </p><p>
+ <em>NEW in Lombok 0.10: </em>Unless your class is <code>final</code> and extends <code>java.lang.Object</code>, lombok generates a <code>canEqual</code> method
+ which means JPA proxies can still be equal to their base class, but subclasses that add new state don't break the equals contract. The complicated reasons for
+ why such a method is necessary are explained in this paper: <a href="http://www.artima.com/lejava/articles/equality.html">How to Write an Equality Method in Java</a>.
+ If all classes in a hierarchy are a mix of scala case classes and classes with lombok-generated equals methods, all equality will 'just work'.
+ If you need to write your own equals methods, you should always override <code>canEqual</code> if you change <code>equals</code> and <code>hashCode</code>.
+ </p><p>
+ <em>NEW in Lombok 1.14.0: </em>To put annotations on the <code>other</code> parameter of the <code>equals</code> (and, if relevant, <code>canEqual</code>) method, you can use <code>onParam=@__({@AnnotationsHere})</code>. Be careful though! This is an experimental feature. For more details see the documentation on the <a href="experimental/onX.html">onX</a> feature.
+
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.equalsAndHashCode.doNotUseGetters</code> = [<code>true</code> | <code>false</code>] (default: false)</dt>
+ <dd>If set to <code>true</code>, lombok will access fields directly instead of using getters (if available) when generating <code>equals</code> and <code>hashCode</code> methods. The annotation parameter '<code>doNotUseGetters</code>', if explicitly specified, takes precedence over this setting.</dd>
+ <dt><code>lombok.equalsAndHashCode.callSuper</code> = [<code>call</code> | <code>skip</code> | <code>warn</code>] (default: warn)</dt>
+ <dd>If set to <code>call</code>, lombok will generate calls to the superclass implementation of <code>hashCode</code> and <code>equals</code> if your class extends something. If set to <code>skip</code> no such calls are generated. The default behaviour is like <code>skip</code>, with an additional warning.</dd>
+ <dt><code>lombok.equalsAndHashCode.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@EqualsAndHashCode</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ Arrays are 'deep' compared/hashCoded, which means that arrays that contain themselves will result in <code>StackOverflowError</code>s. However, this behaviour is no different from e.g. <code>ArrayList</code>.
+ </p><p>
+ You may safely presume that the hashCode implementation used will not change between versions of lombok, however this guarantee is not set in stone; if there's a significant performance improvement to be gained from using an alternate hash algorithm, that will be substituted in a future version.
+ </p><p>
+ For the purposes of equality, 2 <code>NaN</code> (not a number) values for floats and doubles are considered equal, eventhough 'NaN == NaN' would return false. This is analogous to <code>java.lang.Double</code>'s equals method, and is in fact required to ensure that comparing an object to an exact copy of itself returns <code>true</code> for equality.
+ </p><p>
+ If there is <em>any</em> method named either <code>hashCode</code> or <code>equals</code>, regardless of return type, no methods will be generated, and a warning is emitted instead. These 2 methods need to be in sync with each other, which lombok cannot guarantee unless it generates all the methods, hence you always get a warning if one <em>or</em> both of the methods already exist. You can mark any method with <code>@lombok.experimental.Tolerate</code> to hide them from lombok.
+ </p><p>
+ Attempting to exclude fields that don't exist or would have been excluded anyway (because they are static or transient) results in warnings on the named fields. You therefore don't have to worry about typos.
+ </p><p>
+ Having both <code>exclude</code> and <code>of</code> generates a warning; the <code>exclude</code> parameter will be ignored in that case.
+ </p><p>
+ By default, any variables that start with a $ symbol are excluded automatically. You can only include them by using the 'of' parameter.
+ </p><p>
+ If a getter exists for a field to be included, it is called instead of using a direct field reference. This behaviour can be suppressed:<br />
+ <code>@EqualsAndHashCode(doNotUseGetters = true)</code>
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="ToString.html">Previous feature (@ToString)</a> | <a href="Constructor.html">Next feature (@<em>X</em>Constructor)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/GetterLazy.html b/website-old/features/GetterLazy.html
new file mode 100644
index 00000000..01a11c55
--- /dev/null
+++ b/website-old/features/GetterLazy.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@Getter(lazy=true)</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@Getter(lazy=true)</h1>
+ <div class="byline">Laziness is a virtue!</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ <em>NEW IN Lombok 0.10: </em>You can let lombok generate a getter which will calculate a value once, the first time this getter is called, and cache it from then on. This can be useful if calculating the value takes a lot of CPU, or the value takes a lot of memory. To use this feature, create a <code>private final</code> variable, initialize it with the expression that's expensive to run, and annotate your field with <code>@Getter(lazy=true)</code>. The field will be hidden from the rest of your code, and the expression will be evaluated no more than once, when the getter is first called. There are no magic marker values (i.e. even if the result of your expensive calculation is <code>null</code>, the result is cached) and your expensive calculation need not be thread-safe, as lombok takes care of locking.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys (in addition to those listed on <a href="GetterSetter.html"><code>@Getter</code>'s main page</a>):</h3>
+ <dl>
+ <dt><code>lombok.getter.lazy.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Getter(lazy=true)</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ You should never refer to the field directly, always use the getter generated by lombok, because the type of the field will be mangled into an <code>AtomicReference</code>. Do not try to directly access this <code>AtomicReference</code>; if it points to itself, the value has been calculated, and it is <code>null</code>. If the reference points to <code>null</code>, then the value has not been calculated. This behaviour may change in future versions. Therefore, <em>always</em> use the generated getter to access your field!
+ </p><p>
+ Other Lombok annotations such as <code>@ToString</code> always call the getter even if you use <code>doNotUseGetters=true</code>.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="Synchronized.html">Previous feature (@Synchronized)</a> | <a href="Log.html">Next feature (@Log)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/GetterSetter.html b/website-old/features/GetterSetter.html
new file mode 100644
index 00000000..f26d24d9
--- /dev/null
+++ b/website-old/features/GetterSetter.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@Getter and @Setter</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@Getter and @Setter</h1>
+ <div class="byline">Never write <code>public int getFoo() {return foo;}</code> again.</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ You can annotate any field with <code>@Getter</code> and/or <code>@Setter</code>, to let lombok generate the default getter/setter automatically.<br />
+ A default getter simply returns the field, and is named <code>getFoo</code> if the field is called <code>foo</code> (or <code>isFoo</code> if the field's type is <code>boolean</code>). A default setter is named <code>setFoo</code> if the field is called <code>foo</code>, returns <code>void</code>, and takes 1 parameter of the same type as the field. It simply sets the field to this value.
+ </p><p>
+ The generated getter/setter method will be <code>public</code> unless you explicitly specify an <code>AccessLevel</code>, as shown in the example below. Legal access levels are <code>PUBLIC</code>, <code>PROTECTED</code>, <code>PACKAGE</code>, and <code>PRIVATE</code>.
+ </p><p>
+ You can also put a <code>@Getter</code> and/or <code>@Setter</code> annotation on a class. In that case, it's as if you annotate all the non-static fields in that class with the annotation.
+ </p><p>
+ You can always manually disable getter/setter generation for any field by using the special <code>AccessLevel.NONE</code> access level. This lets you override the behaviour of a <code>@Getter</code>, <code>@Setter</code> or <code>@Data</code> annotation on a class.
+ </p><p>
+ To put annotations on the generated method, you can use <code>onMethod=@__({@AnnotationsHere})</code>; to put annotations on the only parameter of a generated setter method, you can use <code>onParam=@__({@AnnotationsHere})</code>. Be careful though! This is an experimental feature. For more details see the documentation on the <a href="experimental/onX.html">onX</a> feature.
+ </p><p>
+ <em>NEW in lombok v1.12.0:</em> javadoc on the field will now be copied to generated getters and setters. Normally, all text is copied, and <code>@return</code> is <em>moved</em> to the getter, whilst <code>@param</code> lines are <em>moved</em> to the setter. Moved means: Deleted from the field's javadoc. It is also possible to define unique text for each getter/setter. To do that, you create a 'section' named <code>GETTER</code> and/or <code>SETTER</code>. A section is a line in your javadoc containing 2 or more dashes, then the text 'GETTER' or 'SETTER', followed by 2 or more dashes, and nothing else on the line. If you use sections, <code>@return</code> and <code>@param</code> stripping for that section is no longer done (move the <code>@return</code> or <code>@param</code> line into the section).
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.accessors.chain</code> = [<code>true</code> | <code>false</code>] (default: false)</dt>
+ <dd>If set to <code>true</code>, generated setters will return <code>this</code> (instead of <code>void</code>). An explicitly configured <code>chain</code> parameter of an <a href="experimental/Accessors.html"><code>@Accessors</code></a> annotation takes precedence over this setting.</dd>
+ <dt><code>lombok.accessors.fluent</code> = [<code>true</code> | <code>false</code>] (default: false)</dt>
+ <dd>If set to <code>true</code>, generated getters and setters will not be prefixed with the bean-standard '<code>get</code>, <code>is</code> or <code>set</code>; instead, the methods will use the same name as the field (minus prefixes). An explicitly configured <code>chain</code> parameter of an <a href="experimental/Accessors.html"><code>@Accessors</code></a> annotation takes precedence over this setting.</dd>
+ <dt><code>lombok.accessors.prefix</code> += <em>a field prefix</em> (default: empty list)</dt>
+ <dd>This is a list property; entries can be added with the <code>+=</code> operator. Inherited prefixes from parent config files can be removed with the <code>-=</code> operator. Lombok will strip any matching field prefix from the name of a field in order to determine the name of the getter/setter to generate. For example, if <code>m</code> is one of the prefixes listed in this setting, then a field named <code>mFoobar</code> will result in a getter named <code>getFoobar()</code>, not <code>getMFoobar()</code>. An explicitly configured <code>prefix</code> parameter of an <a href="experimental/Accessors.html"><code>@Accessors</code></a> annotation takes precedence over this setting.</dd>
+ <dt><code>lombok.getter.noIsPrefix</code> = [<code>true</code> | <code>false</code>] (default: false)</dt>
+ <dd>If set to <code>true</code>, getters generated for <code>boolean</code> fields will use the <code>get</code> prefix instead of the default<code>is</code> prefix, and any generated code that calls getters, such as <code>@ToString</code>, will also use <code>get</code> instead of <code>is</code>
+ <dt><code>lombok.setter.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Setter</code> as a warning or error if configured.</dd>
+ <dt><code>lombok.getter.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Getter</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ For generating the method names, the first character of the field, if it is a lowercase character, is title-cased, otherwise, it is left unmodified. Then, get/set/is is prefixed.
+ </p><p>
+ No method is generated if any method already exists with the same name (case insensitive) and same parameter count. For example, <code>getFoo()</code> will not be generated if there's already a method <code>getFoo(String... x)</code> even though it is technically possible to make the method. This caveat exists to prevent confusion. If the generation of a method is skipped for this reason, a warning is emitted instead. Varargs count as 0 to N parameters. You can mark any method with <code>@lombok.experimental.Tolerate</code> to hide them from lombok.
+ </p><p>
+ For <code>boolean</code> fields that start with <code>is</code> immediately followed by a title-case letter, nothing is prefixed to generate the getter name.
+ </p><p>
+ Any variation on <code>boolean</code> will <em>not</em> result in using the <code>is</code> prefix instead of the <code>get</code> prefix; for example,
+ returning <code>java.lang.Boolean</code> results in a <code>get</code> prefix, not an <code>is</code> prefix.
+ </p><p>
+ Any annotations named <code>@NonNull</code> (case insensitive) on the field are interpreted as: This field must not ever hold
+ <em>null</em>. Therefore, these annotations result in an explicit null check in the generated setter. Also, these
+ annotations (as well as any annotation named <code>@Nullable</code> or <code>@CheckForNull</code>) are copied to setter parameter and getter method.
+ </p><p>
+ You can annotate a class with a <code>@Getter</code> or <code>@Setter</code> annotation. Doing so is equivalent to annotating all non-static fields
+ in that class with that annotation. <code>@Getter</code>/<code>@Setter</code> annotations on fields take precedence over the ones on classes.
+ </p><p>
+ Using the <code>AccessLevel.NONE</code> access level simply generates nothing. It's useful only in combination with
+ <a href="Data.html"><code>@Data</code></a> or a class-wide <code>@Getter</code> or <code>@Setter</code>.
+ </p><p>
+ <code>@Getter</code> can also be used on enums. <code>@Setter</code> can't, not for a technical reason, but
+ for a pragmatic one: Setters on enums are an extremely bad idea.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="Cleanup.html">Previous feature (@Cleanup)</a> | <a href="ToString.html">Next feature (@ToString)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/Log.html b/website-old/features/Log.html
new file mode 100644
index 00000000..9415ddd9
--- /dev/null
+++ b/website-old/features/Log.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@Log (and friends)</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@Log (and friends)</h1>
+ <div class="byline">Captain's Log, stardate 24435.7: &quot;What was that line again?&quot;</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ <em>NEW in lombok 0.10: </em>You can annotate any class with a log annotation to let lombok generate a logger field.<br />
+ The logger is named <code>log</code> and the field's type depends on which logger you have selected.
+ </p><p>
+ There are several choices available:<br />
+ <dl>
+ <dt><code>@CommonsLog</code></dt>
+ <dd>Creates <code><span class="keyword">private&nbsp;static&nbsp;final&nbsp;</span><a href="http://commons.apache.org/logging/apidocs/org/apache/commons/logging/Log.html">org.apache.commons.logging.Log</a>&nbsp;<span class="staticfield">log</span>&nbsp;=&nbsp;<a href="http://commons.apache.org/logging/apidocs/org/apache/commons/logging/LogFactory.html#getLog(java.lang.Class)">org.apache.commons.logging.LogFactory.getLog</a>(LogExample.<span class="keyword">class</span>);</code></dd>
+ <dt><code>@JBossLog</code></dt>
+ <dd>Creates <code><span class="keyword">private&nbsp;static&nbsp;final&nbsp;</span><a href="http://docs.jboss.org/jbosslogging/latest/org/jboss/logging/Logger.html">org.jboss.logging.Logger</a>&nbsp;<span class="staticfield">log</span>&nbsp;=&nbsp;<a href="http://docs.jboss.org/jbosslogging/latest/org/jboss/logging/Logger.html#getLogger(java.lang.Class)">org.jboss.logging.Logger.getLogger</a>(LogExample.<span class="keyword">class</span>);</code></dd>
+ <dt><code>@Log</code></dt>
+ <dd>Creates <code><span class="keyword">private&nbsp;static&nbsp;final&nbsp;</span><a href="http://download.oracle.com/javase/6/docs/api/java/util/logging/Logger.html">java.util.logging.Logger</a>&nbsp;<span class="staticfield">log</span>&nbsp;=&nbsp;<a href="http://download.oracle.com/javase/6/docs/api/java/util/logging/Logger.html#getLogger(java.lang.String)">java.util.logging.Logger.getLogger</a>(LogExample.<span class="keyword">class</span>.getName());</code></dd>
+ <dt><code>@Log4j</code></dt>
+ <dd>Creates <code><span class="keyword">private&nbsp;static&nbsp;final&nbsp;</span><a href="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html">org.apache.log4j.Logger</a>&nbsp;<span class="staticfield">log</span>&nbsp;=&nbsp;<a href="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html#getLogger(java.lang.Class)">org.apache.log4j.Logger.getLogger</a>(LogExample.<span class="keyword">class</span>);</code></dd>
+ <dt><code>@Log4j2</code></dt>
+ <dd>Creates <code><span class="keyword">private&nbsp;static&nbsp;final&nbsp;</span><a href="http://logging.apache.org/log4j/2.0/log4j-api/apidocs/org/apache/logging/log4j/Logger.html">org.apache.logging.log4j.Logger</a>&nbsp;<span class="staticfield">log</span>&nbsp;=&nbsp;<a href="http://logging.apache.org/log4j/2.0/log4j-api/apidocs/org/apache/logging/log4j/LogManager.html#getLogger(java.lang.Class)">org.apache.logging.log4j.LogManager.getLogger</a>(LogExample.<span class="keyword">class</span>);</code></dd>
+ <dt><code>@Slf4j</code></dt>
+ <dd>Creates <code><span class="keyword">private&nbsp;static&nbsp;final&nbsp;</span><a href="http://www.slf4j.org/api/org/slf4j/Logger.html">org.slf4j.Logger</a>&nbsp;<span class="staticfield">log</span>&nbsp;=&nbsp;<a href="http://www.slf4j.org/apidocs/org/slf4j/LoggerFactory.html#getLogger(java.lang.Class)">org.slf4j.LoggerFactory.getLogger</a>(LogExample.<span class="keyword">class</span>);</code></dd>
+ <dt><code>@XSlf4j</code></dt>
+ <dd>Creates <code><span class="keyword">private&nbsp;static&nbsp;final&nbsp;</span><a href="http://www.slf4j.org/api/org/slf4j/ext/XLogger.html">org.slf4j.ext.XLogger</a>&nbsp;<span class="staticfield">log</span>&nbsp;=&nbsp;<a href="http://www.slf4j.org/apidocs/org/slf4j/ext/XLoggerFactory.html#getXLogger(java.lang.Class)">org.slf4j.ext.XLoggerFactory.getXLogger</a>(LogExample.<span class="keyword">class</span>);</code></dd>
+ </dl>
+ </p><p>
+ By default, the topic (or name) of the logger will be the class name of the class annotated with the <code>@Log</code> annotation. This can be customised by specifying the <code>topic</code> parameter. For example: <code>@XSlf4j(topic="reporting")</code>.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.log.fieldName</code> = <em>an identifier</em> (default: <code>log</code>)</dt>
+ <dd>The generated logger fieldname is by default '<code>log</code>', but you can change it to a different name with this setting.</dd>
+ <dt><code>lombok.log.fieldIsStatic</code> = [<code>true</code> | <code>false</code>] (default: true)</dt>
+ <dd>Normally the generated logger is a <code>static</code> field. By setting this key to <code>false</code>, the generated field will be an instance field instead.</dd>
+ <dt><code>lombok.log.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of any of the various log annotations as a warning or error if configured.</dd>
+ <dt><code>lombok.log.apacheCommons.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@lombok.extern.apachecommons.CommonsLog</code> as a warning or error if configured.</dd>
+ <dt><code>lombok.log.javaUtilLogging.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@lombok.extern.java.Log</code> as a warning or error if configured.</dd>
+ <dt><code>lombok.log.jbosslog.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@lombok.extern.jbosslog.JBossLog</code> as a warning or error if configured.</dd>
+ <dt><code>lombok.log.log4j.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@lombok.extern.log4j.Log4j</code> as a warning or error if configured.</dd>
+ <dt><code>lombok.log.log4j2.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@lombok.extern.log4j.Log4j2</code> as a warning or error if configured.</dd>
+ <dt><code>lombok.log.slf4j.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@lombok.extern.slf4j.Slf4j</code> as a warning or error if configured.</dd>
+ <dt><code>lombok.log.xslf4j.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@lombok.extern.slf4j.XSlf4j</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ If a field called <code>log</code> already exists, a warning will be emitted and no code will be generated.
+ </p><p>
+ A future feature of lombok's diverse log annotations is to find calls to the logger field and, if the chosen logging framework supports it and the log level can be compile-time determined from the log call, guard it with an <code>if</code> statement. This way if the log statement ends up being ignored, the potentially expensive calculation of the log string is avoided entirely. This does mean that you should <em>NOT</em> put any side-effects in the expression that you log.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="GetterLazy.html">Previous feature (@Getter(lazy=true))</a> | <a href="configuration.html">Next feature (configuration)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/NonNull.html b/website-old/features/NonNull.html
new file mode 100644
index 00000000..c322309e
--- /dev/null
+++ b/website-old/features/NonNull.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@NonNull</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@NonNull</h1>
+ <div class="byline">or: How I learned to stop worrying and love the NullPointerException.</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ <em>NEW in Lombok 0.11.10: </em>You can use <code>@NonNull</code> on the parameter of a method or constructor to have lombok generate a null-check statement for you.<br />
+ </p><p>
+ Lombok has always treated any annotation named <code>@NonNull</code> on a field as a signal to generate a null-check if lombok generates an entire method or constructor for you, via
+ for example <a href="Data.html"><code>@Data</code></a>. Now, however, using lombok's own <code>@lombok.NonNull</code> on a parameter results in the insertion of just the null-check
+ statement inside your own method or constructor.
+ </p><p>
+ The null-check looks like <code>if (param == null) throw new NullPointerException("param");</code> and will be inserted at the very top of your method. For constructors, the null-check
+ will be inserted immediately following any explicit <code>this()</code> or <code>super()</code> calls.
+ </p><p>
+ If a null-check is already present at the top, no additional null-check will be generated.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.nonNull.exceptionType</code> = [<code>NullPointerException</code> | <code>IllegalArgumentException</code>] (default: <code>NullPointerException</code>).
+ <dd>When lombok generates a null-check <code>if</code> statement, by default, a <code>java.lang.NullPointerException</code> will be thrown with the field name as the exception message.
+ However, you can use <code>IllegalArgumentException</code> in this configuration key to have lombok throw that exception, with '<em>fieldName</em> is null' as exception message.</dd>
+ <dt><code>lombok.nonNull.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@NonNull</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ Lombok's detection scheme for already existing null-checks consists of scanning for if statements that look just like lombok's own. Any 'throws' statement as
+ the 'then' part of the if statement, whether in braces or not, counts. The conditional of the if statement <em>must</em> look exactly like <code>PARAMNAME == null</code>.
+ The first statement in your method that is not such a null-check stops the process of inspecting for null-checks.
+ </p><p>
+ While <code>@Data</code> and other method-generating lombok annotations will trigger on any annotation named <code>@NonNull</code> regardless of casing or package name,
+ this feature only triggers on lombok's own <code>@NonNull</code> annotation from the <code>lombok</code> package.
+ </p><p>
+ A <code>@NonNull</code> on a primitive parameter results in a warning. No null-check will be generated.
+ </p><p>
+ A <code>@NonNull</code> on a parameter of an abstract method used to generate a warning; starting with version 1.16.8, this is no longer the case, to acknowledge the notion that <code>@NonNull</code> also has a
+ documentary role. For the same reason, you can annotate a method as <code>@NonNull</code>; this is allowed, generates no warning, and does not generate any code.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="val.html">Previous feature (val)</a> | <a href="Cleanup.html">Next feature (@Cleanup)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/Singular-snippet.html b/website-old/features/Singular-snippet.html
new file mode 100644
index 00000000..8933ef47
--- /dev/null
+++ b/website-old/features/Singular-snippet.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@Builder's @Singular (snippet)</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@Singular snippet</h1>
+ <div class="singleColumnSnippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="footer">
+ <a href="Builder.html">Back to @Builder</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/SneakyThrows.html b/website-old/features/SneakyThrows.html
new file mode 100644
index 00000000..11937e63
--- /dev/null
+++ b/website-old/features/SneakyThrows.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@SneakyThrows</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@SneakyThrows</h1>
+ <div class="byline">To boldly throw checked exceptions where no one has thrown them before!</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ <code>@SneakyThrows</code> can be used to sneakily throw checked exceptions without actually declaring this in your method's <code>throws</code>
+ clause. This somewhat contentious ability should be used carefully, of course. The code generated by lombok will not ignore, wrap, replace,
+ or otherwise modify the thrown checked exception; it simply fakes out the compiler. On the JVM (class file) level, all exceptions, checked or not,
+ can be thrown regardless of the <code>throws</code> clause of your methods, which is why this works.
+ </p><p>
+ Common use cases for when you want to opt out of the checked exception mechanism center around 2 situations:<br /><ul>
+ <li>A needlessly strict interface, such as <code>Runnable</code> - whatever exception propagates out of your <code>run()</code> method,
+ checked or not, it will be passed to the <code>Thread</code>'s unhandled exception handler. Catching a checked exception and wrapping it
+ in some sort of <code>RuntimeException</code> is only obscuring the real cause of the issue.</li>
+ <li>An 'impossible' exception. For example, <code>new String(someByteArray, "UTF-8");</code> declares that it can throw an
+ <code>UnsupportedEncodingException</code> but according to the JVM specification, UTF-8 <em>must</em> always be available. An
+ <code>UnsupportedEncodingException</code> here is about as likely as a <code>ClassNotFoundError</code> when you use a String object,
+ and you don't catch those either!</li></ul>
+ </p><p>
+ Be aware that it is <em>impossible</em> to catch sneakily thrown checked types directly, as javac will not let you write a catch block
+ for an exception type that no method call in the try body declares as thrown. This problem is not relevant in either of the use cases listed
+ above, so let this serve as a warning that you should not use the <code>@SneakyThrows</code> mechanism without some deliberation!
+ </p><p>
+ You can pass any number of exceptions to the <code>@SneakyThrows</code> annotation. If you pass no exceptions, you may throw any
+ exception sneakily.
+ </p><p>
+ <em>NOTE: </em> with lombok versions older than 0.10, unlike other lombok transformations, you need to put <strong>lombok.jar</strong> on your
+ classpath when you run your program.
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.sneakyThrows.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@SneakyThrows</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ Because <code>@SneakyThrows</code> is an implementation detail and not part of your method signature, it is an error if you try to
+ declare a checked exception as sneakily thrown when you don't call any methods that throw this exception. (Doing so is perfectly legal
+ for <code>throws</code> statements to accommodate subclasses). Similarly, <code>@SneakyThrows</code> does not inherit.
+ </p><p>
+ For the nay-sayers in the crowd: Out of the box, Eclipse will offer a 'quick-fix' for uncaught exceptions that wraps the offending
+ statement in a try/catch block with just <code>e.printStackTrace()</code> in the catch block. This is so spectacularly non-productive
+ compared to just sneakily throwing the exception onwards, that Roel and Reinier feel more than justified in claiming that the
+ checked exception system is far from perfect, and thus an opt-out mechanism is warranted.
+ </p><p>
+ If you put <code>@SneakyThrows</code> on a constructor, any call to a sibling or super constructor is <em>excluded</em> from the <code>@SneakyThrows</code> treatment. This is a
+ java restriction we cannot work around: Calls to sibling/super constructors MUST be the first statement in the constructor; they cannot be placed inside try/catch blocks.
+ </p><p>
+ <code>@SneakyThrows</code> on an empty method, or a constructor that is empty or only has a call to a sibling / super constructor results in no try/catch block and a warning.
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="Builder.html">Previous feature (@Builder)</a> | <a href="Synchronized.html">Next feature (@Synchronized)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/Synchronized.html b/website-old/features/Synchronized.html
new file mode 100644
index 00000000..b575e47c
--- /dev/null
+++ b/website-old/features/Synchronized.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@Synchronized</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@Synchronized</h1>
+ <div class="byline"><code>synchronized</code> done right: Don't expose your locks.</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ <code>@Synchronized</code> is a safer variant of the <code>synchronized</code> method modifier. Like <code>synchronized</code>, the
+ annotation can be used on static and instance methods only. It operates similarly to the <code>synchronized</code> keyword, but it locks
+ on different objects. The keyword locks on <code>this</code>, but the annotation locks on a field named <code>$lock</code>, which is private.<br />
+ If the field does not exist, it is created for you. If you annotate a <code>static</code> method, the annotation locks on a static field
+ named <code>$LOCK</code> instead.
+ </p><p>
+ If you want, you can create these locks yourself. The <code>$lock</code> and <code>$LOCK</code> fields will of course not be generated if you
+ already created them yourself. You can also choose to lock on another field, by specifying it as parameter to the <code>@Synchronized</code>
+ annotation. In this usage variant, the fields will not be created automatically, and you must explicitly create them yourself, or an error will be emitted.
+ </p><p>
+ Locking on <code>this</code> or your own class object can have unfortunate side-effects, as other code not under your control can lock on these
+ objects as well, which can cause race conditions and other nasty threading-related bugs.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.synchronized.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Synchronized</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ If <code>$lock</code> and/or <code>$LOCK</code> are auto-generated, the fields are initialized with an empty <code>Object[]</code> array, and not
+ just a <code>new Object()</code> as most snippets showing this pattern in action use. Lombok does this because a new object is <em>NOT</em>
+ serializable, but 0-size array is. Therefore, using <code>@Synchronized</code> will not prevent your object from being serialized.
+ </p><p>
+ Having at least one <code>@Synchronized</code> method in your class means there will be a lock field, but if you later remove all such methods,
+ there will no longer be a lock field. That means your predetermined <code>serialVersionUID</code> changes. We suggest you <em>always</em> add
+ a <code>serialVersionUID</code> to your classes if you intend to store them long-term via java's serialization mechanism. If you do so, removing
+ all <code>@Synchronized</code> annotations from your method will not break serialization.
+ </p><p>
+ If you'd like to know why a field is not automatically generated when you choose your own name for the lock object: Because otherwise making a typo
+ in the field name will result in a <em>very</em> hard to find bug!
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="SneakyThrows.html">Previous feature (@SneakyThrows)</a> | <a href="GetterLazy.html">Next feature (@Getter(lazy=true))</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/ToString.html b/website-old/features/ToString.html
new file mode 100644
index 00000000..6571714d
--- /dev/null
+++ b/website-old/features/ToString.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@ToString</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@ToString</h1>
+ <div class="byline">No need to start a debugger to see your fields: Just let lombok generate a <code>toString</code> for you!</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ Any class definition may be annotated with <code>@ToString</code> to let lombok generate an implementation of the <code>toString()</code> method. By default, it'll print your class name, along with each field, in order, separated by commas.
+ </p><p>
+ By setting the <code>includeFieldNames</code> parameter to <em>true</em> you can add some clarity (but also quite some length) to the output of the <code>toString()</code> method.
+ </p><p>
+ By default, all non-static fields will be printed. If you want to skip some fields, you can name them in the <code>exclude</code> parameter; each named field will not be printed at all. Alternatively, you can specify exactly which fields you wish to be used by naming them in the <code>of</code> parameter.
+ </p><p>
+ By setting <code>callSuper</code> to <em>true</em>, you can include the output of the superclass implementation of <code>toString</code> to the output. Be aware that the default implementation of <code>toString()</code> in <code>java.lang.Object</code> is pretty much meaningless, so you probably don't want to do this unless you are extending another class.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.toString.includeFieldNames</code> = [<code>true</code> | <code>false</code>] (default: true)</dt>
+ <dd>Normally lombok generates a fragment of the toString response for each field in the form of <code>fieldName = fieldValue</code>. If this setting is set to <code>false</code>, lombok will omit the name of the field and simply deploy a comma-separated list of all the field values. The annotation parameter '<code>includeFieldNames</code>', if explicitly specified, takes precedence over this setting.</dd>
+ <dt><code>lombok.toString.doNotUseGetters</code> = [<code>true</code> | <code>false</code>] (default: false)</dt>
+ <dd>If set to <code>true</code>, lombok will access fields directly instead of using getters (if available) when generating <code>toString</code> methods. The annotation parameter '<code>doNotUseGetters</code>', if explicitly specified, takes precedence over this setting.</dd>
+ <dt><code>lombok.toString.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@ToString</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ If there is <em>any</em> method named <code>toString</code> with no arguments, regardless of return type, no method will be generated, and instead a warning is emitted explaining that your <code>@ToString</code> annotation is doing nothing. You can mark any method with <code>@lombok.experimental.Tolerate</code> to hide them from lombok.
+ </p><p>
+ Arrays are printed via <code>Arrays.deepToString</code>, which means that arrays that contain themselves will result in <code>StackOverflowError</code>s. However,
+ this behaviour is no different from e.g. <code>ArrayList</code>.
+ </p><p>
+ Attempting to exclude fields that don't exist or would have been excluded anyway (because they are static) results in warnings on the named fields.
+ You therefore don't have to worry about typos.
+ </p><p>
+ Having both <code>exclude</code> and <code>of</code> generates a warning; the <code>exclude</code> parameter will be ignored in that case.
+ </p><p>
+ We don't promise to keep the output of the generated <code>toString()</code> methods the same between lombok versions. You should never design your API so that
+ other code is forced to parse your <code>toString()</code> output anyway!
+ </p><p>
+ By default, any variables that start with a $ symbol are excluded automatically. You can only include them by using the 'of' parameter.
+ </p><p>
+ If a getter exists for a field to be included, it is called instead of using a direct field reference. This behaviour can be suppressed:<br />
+ <code>@ToString(doNotUseGetters = true)</code>
+ </p><p>
+ <code>@ToString</code> can also be used on an enum definition.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="GetterSetter.html">Previous feature (@Getter / @Setter)</a> | <a href="EqualsAndHashCode.html">Next feature (@EqualsAndHashCode)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/Value.html b/website-old/features/Value.html
new file mode 100644
index 00000000..6c86a77b
--- /dev/null
+++ b/website-old/features/Value.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@Value</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>@Value</h1>
+ <div class="byline">Immutable classes made very easy.</div>
+ <div class="since">
+ <h3>Since</h3>
+ <p>
+ <code>@Value</code> was introduced as experimental feature in lombok v0.11.4.
+ </p><p>
+ <code>@Value</code> no longer implies <code>@Wither</code> since lombok v0.11.8.
+ </p><p>
+ <code>@Value</code> promoted to the main <code>lombok</code> package since lombok v0.12.0.
+ </p>
+ </div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ <code>@Value</code> is the immutable variant of <a href="Data.html"><code>@Data</code></a>; all fields are made <code>private</code> and <code>final</code> by default, and setters are not generated. The class itself is also made <code>final</code> by default, because immutability is not something that can be forced onto a subclass. Like <code>@Data</code>, useful <code>toString()</code>, <code>equals()</code> and <code>hashCode()</code> methods are also generated, each field gets a getter method, and a constructor that covers every
+ argument (except <code>final</code> fields that are initialized in the field declaration) is also generated.
+ </p><p>
+ In practice, <code>@Value</code> is shorthand for: <code>final @ToString @EqualsAndHashCode @AllArgsConstructor @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) @Getter</code>, except that explicitly including an implementation of any of the relevant methods simply means that part won't be generated and no warning will be emitted. For example, if you write your own <code>toString</code>, no error occurs, and lombok will not generate a <code>toString</code>. Also, <em>any</em> explicit constructor, no matter the arguments list, implies lombok will not generate a constructor. If you do want lombok to generate the all-args constructor, add <code>@AllArgsConstructor</code> to the class. You can mark any constructor or method with <code>@lombok.experimental.Tolerate</code> to hide them from lombok.
+ </p><p>
+ It is possible to override the final-by-default and private-by-default behavior using either an explicit access level on a field, or by using the <code>@NonFinal</code> or <code>@PackagePrivate</code> annotations.<br />
+ It is possible to override any default behavior for any of the 'parts' that make up <code>@Value</code> by explicitly using that annotation.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.value.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Value</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ Look for the documentation on the 'parts' of <code>@Value</code>: <a href="ToString.html"><code>@ToString</code></a>, <a href="EqualsAndHashCode.html"><code>@EqualsAndHashCode</code></a>, <a href="Constructor.html"><code>@AllArgsConstructor</code></a>, <a href="experimental/FieldDefaults.html"><code>@FieldDefaults</code></a>, and <a href="GetterSetter.html"><code>@Getter</code></a>.
+ </p><p>
+ For classes with generics, it's useful to have a static method which serves as a constructor, because inference of generic parameters via static methods works in java6 and avoids having to use the diamond operator. While you can force this by applying an explicit <code>@AllArgsConstructor(staticConstructor="of")</code> annotation, there's also the <code>@Value(staticConstructor="of")</code> feature, which will make the generated all-arguments constructor private, and generates a public static method named <code>of</code> which is a wrapper around this private constructor.
+ </p><p>
+ <code>@Value</code> was an experimental feature from v0.11.4 to v0.11.9 (as <code>@lombok.experimental.Value</code>). It has since been moved into the core package. The old annotation is still
+ around (and is an alias). It will eventually be removed in a future version, though.
+ </p><p>
+ It is not possible to use <code>@FieldDefaults</code> to 'undo' the private-by-default and final-by-default aspect of fields in the annotated class. Use <code>@NonFinal</code> and <code>@PackagePrivate</code> on the fields in the class to override this behaviour.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="Data.html">Previous feature (@Data)</a> | <a href="Builder.html">Next feature (@Builder)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/clear.gif b/website-old/features/clear.gif
new file mode 100644
index 00000000..35d42e80
--- /dev/null
+++ b/website-old/features/clear.gif
Binary files differ
diff --git a/website-old/features/configuration.html b/website-old/features/configuration.html
new file mode 100644
index 00000000..ee7dabd5
--- /dev/null
+++ b/website-old/features/configuration.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Configuration system</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>Configuration system</h1>
+ <div class="byline">Lombok, made to order: Configure lombok features in one place for your entire project or even your workspace.</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ <em>NEW in lombok 1.14: </em>You can create <code>lombok.config</code> files in any directory and put configuration directives in it. These apply to all source files in this directory and all child directories.<br />
+ The configuration system is particularly useful for configurable aspects of lombok which tend to be the same across an entire project, such as the name of your log variable. The configuration system can also be used to tell lombok to flag any usage of some lombok feature you don't like as a warning or even an error.
+ </p><p>
+ Usually, a user of lombok puts a <code>lombok.config</code> file with their preferences in a workspace or project root directory, with the special <code>config.stopBubbling = true</code> key to tell lombok this is your root directory. You can then create <code>lombok.config</code> files in any subdirectories (generally representing projects or source packages) with different settings.
+ </p><p>
+ An up to date list of all configuration keys supported by your version of lombok can be generated by running:
+ <div class="snippet example">
+ <code>java -jar lombok.jar config -g --verbose</code>
+ </div>
+ The output of the <em>config</em> tool is itself a valid <code>lombok.config</code> file.<br />
+ The <em>config</em> tool can also be used to display the complete lombok configuration used for any given directory or source file by supplying these as arguments.
+ </p><p>
+ A sample of available configuration options (see the feature pages of the lombok features for their related config keys, as well as <code>java -jar lombok.jar config -g</code> for the complete list):
+ <dl>
+ <dt><code>lombok.accessors.chain</code></dt>
+ <dd>If set to <code>true</code>, generated setters will 'chain' by default (They will return <code>this</code> instead of having a <code>void</code> return type).</dd>
+ <dt><code>lombok.accessors.fluent</code></dt>
+ <dd>If set to <code>true</code>, generated setters and getters will simply be named the same as the field name, without a <code>get</code> or <code>set</code> prefix.</dd>
+ <dt><code>lombok.anyConstructor.suppressConstructorProperties</code></dt>
+ <dd>If <code>true</code>, lombok will not generate a <code>@java.beans.ConstructorProperties</code> annotation when generating constructors. This is particularly useful for GWT and Android development.</dd>
+ <dt><code>lombok.log.fieldName</code></dt>
+ <dd>The name of the generated log field (default: <code>log</code>).</dd>
+ <dt><code>lombok.<em>(featureName)</em>.flagUsage</code></dt>
+ <dd>Allows you to forcibly stop or discourage use of a lombok feature. Legal values for this key are <code>warning</code> or <code>error</code>. Some examples of values for <em>(featureName)</em> are: "<code>experimental</code>" (flags use of any of the <a href="experimental/index.html">experimental</a> features)</li>, "<a href="experimental/Builder.html"><code>builder</code></a>", "<a href="SneakyThrows.html"><code>sneakyThrows</code></a>", or "<a href="experimental/ExtensionMethod.html"><code>extensionMethod</code></a>".</dd>
+ </dl>
+ </p><p>
+ Configuration files are hierarchical: Any configuration setting applies to all source files in that directory, and all source files in subdirectories, but configuration settings closer to the source file take precedence. For example, if you have in <code>/Users/me/projects/lombok.config</code> the following:
+ <div class="snippet example">
+ <code>lombok.log.fieldName = foobar</code>
+ </div>
+ and in <code>/Users/me/projects/MyProject/lombok.config</code> you have:
+ <div class="snippet example">
+ <code>lombok.log.fieldName = xyzzy</code>
+ </div>
+
+ Then the various <a href="Log.html"><code>@Log</code></a> annotations will use <code>foobar</code> instead of the default <code>log</code> as a field name to generate in all your projects,
+ except for your project in <code>/Users/me/projects/MyProject</code>, where <code>xyzzy</code> is used instead.
+ </p><p>
+ To restore a configuration key set by a parent config file back to the default, the <code>clear</code> option can be used. For example, if a parent configuration file has configured all use of <code>val</code> to emit a warning, you can turn off the warnings for a subdirectory by including in it a <code>lombok.config</code> file with:
+ <div class="snippet example">
+ <code>clear lombok.val.flagUsage</code>
+ </div>
+ </p><p>
+ Some configuration keys take lists. For lists, use <code>+=</code> to add an entry. You can remove a single item from the list (useful to undo a parent configuration file's setting) with <code>-=</code>. For example:
+ <div class="snippet example">
+ <code>lombok.accessors.prefix += m_</code>
+ </div>
+ </p><p>
+ Comments can be included in <code>lombok.config</code> files; any line that starts with <code>#</code> is considered a comment.
+ </p>
+ </div>
+ <div class="overview" style="clear: left;">
+ <h3>Global config keys</h3>
+ <p>
+ To stop lombok from looking at parent directories for more configuration files, the special key:
+ <div class="snippet example">
+ <code>config.stopBubbling = true</code>
+ </div>
+ can be included. We suggest you put this in the root of your workspace directory.
+ </p><p>
+ Lombok normally adds <code>@javax.annotation.Generated</code> annotations to all generated nodes where possible. You can stop this with:
+ <div class="snippet example">
+ <code>lombok.addGeneratedAnnotation = false</code>
+ </div>
+ </p><p>
+ Lombok can add the <code>@SuppressFBWarnings</code> annotation which is useful if you want to run <a href="http://findbugs.sourceforge.net/">FindBugs</a> on your class files. To enable this feature, make sure findbugs is on the classpath when you compile, and add the following config key:
+ <div class="snippet example">
+ <code>lombok.extern.findbugs.addSuppressFBWarnings = true</code>
+ </div>
+ </div>
+ <div class="overview" style="clear: left;">
+ <h3>Config keys that can even affect source files with 0 lombok annotations</h3>
+ <p>
+ <div class="snippet example">
+ <code>lombok.fieldDefaults.defaultPrivate = true</code><br />
+ <code>lombok.fieldDefaults.defaultFinal = true</code>
+ </div>
+ Turning either of these options on means lombok will make <em>every</em> field in <em>every</em> source file final and/or private unless it has an explicit access modifier or annotation to suppress this. <a href="experimental/FieldDefaults.html">See the <code>@FieldDefaults</code> documentation for more</a>.
+ </div>
+ <div style="clear: left;"></div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <a href="Log.html">Previous feature (@Log)</a> | <span class="disabled">Next feature</span><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/delombok.html b/website-old/features/delombok.html
new file mode 100644
index 00000000..f321db45
--- /dev/null
+++ b/website-old/features/delombok.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>delombok</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>delombok</h1>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ Normally, lombok adds support for all the lombok features directly to your IDE and compiler by plugging into them.<br />
+ However, lombok doesn't cover all tools. For example, lombok cannot plug into javadoc, nor can it plug into the Google Widget Toolkit, both of which
+ run on java sources. Delombok still allows you to use lombok with these tools by preprocessing your java code into java code with all of lombok's
+ transformations already applied.
+ </p><p>
+ Delombok can of course also help understand what's happening with your source by letting you look at exactly what lombok is doing 'under the hood'.
+ </p><p>
+ Delombok's standard mode of operation is that it copies an entire directory into another directory, recursively, skipping class files, and applying
+ lombok transformations to any java source files it encounters.
+ </p><p>
+ Delombok's output format can be configured with command line options (use <code>--format-help</code> for a complete list). A few such options are automatically scanned from input if possible (such as indent). If delombok's formatting is not conforming to your preferred code style, have a look!
+ </p>
+ <h3>Running delombok on the command line</h3>
+ <p>
+ Delombok is included in <code>lombok.jar</code>. To use it, all you need to run on the command line is:
+ <div class="snippet"><pre>java -jar lombok.jar delombok src -d src-delomboked</pre></div>
+ <br />
+ Which will duplicate the contents of the <code>src</code> directory into the <code>src-delomboked</code> directory, which will be created if it
+ doesn't already exist, but delomboked of course. Delombok on the command line has a few more options; use the <code>--help</code> parameter to see more options.
+ </p><p>
+ To let delombok print the transformation result of a single java file directly to standard output, you can use:
+ <div class="snippet"><pre>java -jar lombok.jar delombok -p MyJavaFile.java</pre></div>
+ </p>
+ <h3>Running delombok in ant</h3>
+ <code>lombok.jar</code> includes an ant task which can apply delombok for you. For example, to create javadoc for your project, your <code>build.xml</code> file
+ would look something like:
+ <div class="snippet"><pre>&lt;target name="javadoc"&gt;
+ &lt;taskdef classname="lombok.delombok.ant.Tasks$Delombok" classpath="lib/lombok.jar" name="delombok" /&gt;
+ &lt;mkdir dir="build/src-delomboked" /&gt;
+ <strong>&lt;delombok verbose="true" encoding="UTF-8" to="build/src-delomboked" from="src"&gt;</strong>
+ <strong>&lt;format value="suppressWarnings:skip" /&gt;</strong>
+ <strong>&lt;/delombok&gt;</strong>
+ &lt;mkdir dir="build/api" /&gt;
+ &lt;javadoc sourcepath="build/src-delomboked" defaultexcludes="yes" destdir="build/api" /&gt;
+&lt;/target&gt;</pre></div>
+ <br />
+ Instead of a <code>from</code> attribute, you can also nest <code>&lt;fileset&gt;</code> nodes.
+ <h3>Running delombok in maven</h3>
+ Anthony Whitford has written a <a href="https://github.com/awhitford/lombok.maven">maven plugin</a> for delomboking your source code.
+ <h3>Limitations</h3>
+ Delombok tries to preserve your code as much as it can, but comments may move around a little bit, especially comments that are in the middle of
+ a syntax node. For example, any comments appearing in the middle of a list of method modifiers, such as <code>public /*comment*/ static ...</code> will
+ move towards the front of the list of modifiers. In practice, any java source parsing tool will not be affected.<br />
+ To keep any changes to your code style to a minimum, delombok just copies a source file directly without changing any of it if the source file contains
+ no lombok transformations.
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/experimental/Accessors.html b/website-old/features/experimental/Accessors.html
new file mode 100644
index 00000000..909c0873
--- /dev/null
+++ b/website-old/features/experimental/Accessors.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../features.css" />
+ <link rel="shortcut icon" href="../../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>EXPERIMENTAL – @Accessors</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../../index.html">Project Lombok</a></div>
+ <h1>@Accessors</h1>
+ <div class="byline">A more fluent API for getters and setters.</div>
+ <div class="since">
+ <h3>Since</h3>
+ <p>
+ @Accessors was introduced as experimental feature in lombok v0.11.0.
+ </p>
+ </div>
+ <div class="experimental">
+ <h3>Experimental</h3>
+ <p>
+ Experimental because:
+ <ul>
+ <li>We may want to roll these features into a more complete property support concept.</li>
+ <li>New feature - community feedback requested.</li>
+ </ul>
+ Current status: <em>positive</em> - Currently we feel this feature may move out of experimental status with no or minor changes soon.
+ </div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ The <code>@Accessors</code> annotation is used to configure how lombok generates and looks for getters and setters.
+ </p><p>
+ By default, lombok follows the <em>bean specification</em> for getters and setters: The getter for a field named <code>pepper</code>
+ is <code>getPepper</code> for example. However, some might like to break with the <em>bean specification</em> in order to end up with
+ nicer looking APIs. <code>@Accessors</code> lets you do this.
+ </p><p>
+ Some programmers like to use a prefix for their fields, i.e. they write <code>fPepper</code> instead of <code>pepper</code>.
+ We <em>strongly</em> discourage doing this, as you can't unit test the validity of your prefixes, and refactor scripts may turn fields
+ into local variables or method names. Furthermore, your tools (such as your editor) can take care of rendering the identifier in a
+ certain way if you want this information to be instantly visible. Nevertheless, you can list the prefixes that your project uses via
+ <code>@Accessors</code> as well.
+ </p><p>
+ <code>@Accessors</code> therefore has 3 options:<ul>
+ <li><code>fluent</code> - A boolean. If <em>true</em>, the getter for <code>pepper</code> is just <code>pepper()</code>, and the
+ setter is <code>pepper(T newValue)</code>. Furthermore, unless specified, <code>chain</code> defaults to <em>true</em>.<br />
+ Default: <em>false</em>.</li>
+ <li><code>chain</code> - A boolean. If <em>true</em>, generated setters return <code>this</code> instead of <code>void</code>.<br />
+ Default: <em>false</em>, unless <code>fluent=true</code>, then Default: <em>true</em>.</li>
+ <li><code>prefix</code> - A list of strings. If present, fields must be prefixed with any of these prefixes. Each field name is
+ compared to each prefix in the list in turn, and if a match is found, the prefix is stripped out to create the base name for
+ the field. It is legal to include an empty string in the list, which will always match. For characters which are letters, the
+ character following the prefix must not be a lowercase letter, i.e. <code>pepper</code> is not a match even to prefix <code>p</code>,
+ but <code>pEpper</code> would be (and would mean the base name of this field is <code>epper</code>).</li>
+ </p><p>
+ The <code>@Accessors</code> annotation is legal on types and fields; the annotation that applies is the one on the field if present,
+ otherwise the one on the class. When a <code>@Accessors</code> annotation on a field is present, any <code>@Accessors</code> annotation
+ also present on that field's type is ignored.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.accessors.chain</code> = [<code>true</code> | <code>false</code>] (default: false)</dt>
+ <dd>If set to <code>true</code>, any class that either doesn't have an <code>@Accessors</code> annotation, or it does, but that annotation does not have an explicit value for the <code>chain</code> parameter, will act as if <code>@Accessors(chain = true)</code> is present.</dd>
+ <dt><code>lombok.accessors.fluent</code> = [<code>true</code> | <code>false</code>] (default: false)</dt>
+ <dd>If set to <code>true</code>, any class that either doesn't have an <code>@Accessors</code> annotation, or it does, but that annotation does not have an explicit value for the <code>fluent</code> parameter, will act as if <code>@Accessors(fluent = true)</code> is present.</dd>
+ <dt><code>lombok.accessors.prefix</code> += <em>a field prefix</em> (default: empty list)</dt>
+ <dd>This is a list property; entries can be added with the <code>+=</code> operator. Inherited prefixes from parent config files can be removed with the <code>-=</code> operator. Any class that either doesn't have an <code>@Accessors</code> annotation, or it does, but that annotation does not have an explicit value for the <code>prefix</code> parameter, will act as if <code>@Accessors(prefix = {<em>prefixes listed in configuration</em>})</code> is present.</dd>
+ <dt><code>lombok.accessors.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Accessors</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ The nearest <code>@Accessors</code> annotation is also used for the various methods in lombok that look for getters, such as
+ <code>@EqualsAndHashCode</code>.
+ </p><p>
+ If a prefix list is provided and a field does not start with one of them, that field is skipped entirely by lombok, and
+ a warning will be generated.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to experimental features</a> | <a href="var.html">Previous feature (var)</a> | <a href="ExtensionMethod.html">Next feature (@ExtensionMethod)</a><br />
+ <a href="../../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/experimental/Builder.html b/website-old/features/experimental/Builder.html
new file mode 100644
index 00000000..e1c545fc
--- /dev/null
+++ b/website-old/features/experimental/Builder.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../features.css" />
+ <link rel="shortcut icon" href="../../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>@Builder</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../../index.html">Project Lombok</a></div>
+ <h1>@Builder</h1>
+ <div class="byline">... and Bob's your uncle: No-hassle fancy-pants APIs for object creation!</div>
+ <div class="moved">
+ @Builder has been promoted to the core package in lombok release v1.16.0.<br />
+ The documentation has been moved here: <a href="../Builder.html">@lombok.Builder</a>.
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to experimental features</a><br />
+ <a href="../../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/experimental/Delegate.html b/website-old/features/experimental/Delegate.html
new file mode 100644
index 00000000..5173376d
--- /dev/null
+++ b/website-old/features/experimental/Delegate.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../features.css" />
+ <link rel="shortcut icon" href="../../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>EXPERIMENTAL – @Delegate</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../../index.html">Project Lombok</a></div>
+ <h1>@Delegate</h1>
+ <div class="byline">Don't lose your composition.</div>
+ <div class="since">
+ <h3>Since</h3>
+ <p>
+ @Delegate was introduced as feature in lombok v0.10. It was moved to the experimental package in lombok v1.14; the old version from the main lombok package is now deprecated.
+ </p>
+ </div>
+ <div class="experimental">
+ <h3>Experimental</h3>
+ <p>
+ Experimental because:
+ <ul>
+ <li>Not used that much</li>
+ <li>Difficult to support for edge cases, such as recursive delegation.</li>
+ <li>API is rather unfriendly; it would be a lot nicer if you can simply implement some methods and let <code>@Delegate</code> generate delegates for whatever you didn't manually implement, but due to issues with generics erasure this also can't be made to work without caveats.
+ </ul>
+ Current status: <em>negative</em> - Currently we feel this feature will not move out of experimental status anytime soon, and support for this feature may be dropped if future versions of javac or ecj make it difficult to continue to maintain the feature.
+ </div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ Any field or no-argument method can be annotated with <code>@Delegate</code> to let lombok generate delegate methods that forward the call to this field (or the result of invoking this method).
+ </p><p>
+ Lombok delegates all <code>public</code> methods of the field's type (or method's return type), as well as those of its supertypes except for all
+ methods declared in <code>java.lang.Object</code>.
+ </p><p>
+ You can pass any number of classes into the <code>@Delegate</code> annotation's <code>types</code> parameter.
+ If you do that, then lombok will delegate all <code>public</code> methods in those types (and their supertypes, except <code>java.lang.Object</code>) instead of looking at the field/method's type.
+ </p><p>
+ All public non-<code>Object</code> methods that are part of the calculated type(s) are copied, whether or not you also wrote implementations for those methods. That would thus result in duplicate method errors. You can avoid these
+ by using the <code>@Delegate(excludes=SomeType.class)</code> parameter to exclude all public methods in the excluded type(s), and their supertypes.
+ </p><p>
+ To have very precise control over what is delegated and what isn't, write private inner interfaces with method signatures, then specify these
+ private inner interfaces as types in <code>@Delegate(types=PrivateInnerInterfaceWithIncludesList.class, excludes=SameForExcludes.class)</code>.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.delegate.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Delegate</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ When passing classes to the annotation's <code>types</code> or <code>excludes</code> parameter, you cannot include generics.
+ This is a limitation of java. Use private inner interfaces or classes that extend the intended type including the
+ generics parameter to work around this problem.
+ </p><p>
+ When passing classes to the annotation, these classes do not need to be supertypes of the field. See the example.
+ </p><p>
+ <code>@Delegate</code> cannot be used on static fields or methods.
+ </p><p>
+ <code>@Delegate</code> cannot be used when the calculated type(s) to delegate / exclude themselves contain <code>@Delegate</code> annotations; in other words, <code>@Delegate</code> will error if you attempt to use it recursively.
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to experimental features</a> | <a href="FieldDefaults.html">Previous feature (@FieldDefaults)</a> | <a href="Wither.html">Next feature (@Wither)</a><br />
+ <a href="../../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/experimental/ExtensionMethod.html b/website-old/features/experimental/ExtensionMethod.html
new file mode 100644
index 00000000..7090fd19
--- /dev/null
+++ b/website-old/features/experimental/ExtensionMethod.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../features.css" />
+ <link rel="shortcut icon" href="../../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>EXPERIMENTAL – @ExtensionMethod</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../../index.html">Project Lombok</a></div>
+ <h1>@ExtensionMethod</h1>
+ <div class="byline">Annoying API? Fix it yourself: Add new methods to existing types!</div>
+ <div class="since">
+ <h3>Since</h3>
+ <p>
+ @ExtensionMethod was introduced as experimental feature in lombok v0.11.2.
+ </p>
+ </div>
+ <div class="experimental">
+ <h3>Experimental</h3>
+ <p>
+ Experimental because:
+ <ul>
+ <li>High-impact on code style</li>
+ <li>Really would like to ship with utility methods to expand common classes, but so far lombok doesn't have a good distribution method for such runtime dependencies</li>
+ <li>Affects quite a bit of eclipse, and auto-complete e.d. do not work yet in netbeans</li>
+ <li>Should @ExtensionMethod be legal on methods? Should it be legal on packages?</li>
+ </ul>
+ Current status: <em>positive</em> - Currently we feel this feature may move out of experimental status with no or minor changes soon.
+ </div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ You can make a class containing a bunch of <code>public</code>, <code>static</code> methods which all take at least 1
+ parameter. These methods will extend the type of the first parameter, as if they were instance methods, using the
+ <code>@ExtensionMethod</code> feature.
+ </p>
+ </p><p>
+ For example, if you create <code>public static String toTitleCase(String in) { ... }</code>, you can use the
+ <code>@ExtensionMethod</code> feature to make it look like the <code>java.lang.String</code> class has a method named
+ <code>toTitleCase</code>, which has no arguments. The first argument of the static method fills the role of <code>this</code>
+ in instance methods.
+ </p><p>
+ All methods that are <code>public</code>, <code>static</code>, and have at least 1 argument whose type is not primitive, are
+ considered extension methods, and each will be injected into the namespace of the type of the first parameter as if they were
+ instance methods. As in the above example, a call that looks like: <code>foo.toTitleCase()</code> is replaced with
+ <code>ClassContainingYourExtensionMethod.toTitleCase(foo);</code>. Note that it is actually not an instant
+ <code>NullPointerException</code> if <code>foo</code> is null - it is passed like any other parameter.
+ </p><p>
+ You can pass any number of classes to the <code>@ExtensionMethod</code> annotation; they will all be searched for
+ extension methods. These extension methods apply for any code that is in the annotated class.
+ </p><p>
+ Lombok does not (currently) have any runtime dependencies which means lombok does not (currently) ship with any useful
+ extension methods so you'll have to make your own. However, here's one that might spark your imagination:
+ <pre>public class ObjectExtensions {
+ public static &lt;T&gt; or(T object, T ifNull) {
+ return object != null ? object : ifNull;
+ }
+}</pre>
+ With the above class, if you add <code>@ExtensionMethod(ObjectExtensions.class)</code> to your class definition, you can write:
+ <pre>String x = null;
+System.out.println(x.or("Hello, World!"));</pre>
+ The above code will not fail with a <code>NullPointerException</code>; it will actually output <code>Hello, World!</code>
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.extensionMethod.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@ExtensionMethod</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ Calls are rewritten to a call to the extension method; the static method itself is not inlined. Therefore, the
+ extension method must be present both at compile and at runtime.
+ </p><p>
+ Generics is fully applied to figure out extension methods. i.e. if the first parameter of your extension method is
+ <code>List&lt;? extends String&gt;</code>, then any expression that is compatible with that will have your extension method,
+ but other kinds of lists won't. So, a <code>List&lt;Object&gt;</code> won't get it, but a <code>List&lt;String&gt;</code> will.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to experimental features</a> | <a href="Accessors.html">Previous feature (@Accessors)</a> | <a href="FieldDefaults.html">Next feature (@FieldDefaults)</a><br />
+ <a href="../../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/experimental/FieldDefaults.html b/website-old/features/experimental/FieldDefaults.html
new file mode 100644
index 00000000..a253198b
--- /dev/null
+++ b/website-old/features/experimental/FieldDefaults.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../features.css" />
+ <link rel="shortcut icon" href="../../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>EXPERIMENTAL – @FieldDefaults</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../../index.html">Project Lombok</a></div>
+ <h1>@FieldDefaults</h1>
+ <div class="byline">New default field modifiers for the 21st century.</div>
+ <div class="since">
+ <h3>Since</h3>
+ <p>
+ @FieldDefaults was introduced as experimental feature in lombok v0.11.4.
+ </p>
+ </div>
+ <div class="experimental">
+ <h3>Experimental</h3>
+ <p>
+ Experimental because:
+ <ul>
+ <li>New feature; unsure if this busts enough boilerplate</li>
+ <li>Would be nice if you could stick this on the package-info.java package to set the default for all classes in that package</li>
+ <li>Part of the work on @Value, which is experimental</li>
+ </ul>
+ Current status: <em>positive</em> - Currently we feel this feature may move out of experimental status with no or minor changes soon.
+ </div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ The <code>@FieldDefaults</code> annotation can add an access modifier (<code>public</code>, <code>private</code>, or <code>protected</code>)
+ to each field in the annotated class or enum. It can also add <code>final</code> to each field in the annotated class or enum.
+ </p>
+ </p><p>
+ To add <code>final</code> to each (instance) field, use <code>@FieldDefaults(makeFinal=true)</code>. Any non-final field which must remain nonfinal
+ can be annotated with <code>@NonFinal</code> (also in the <code>lombok.experimental</code> package).
+ </p><p>
+ To add an access modifier to each (instance) field, use <code>@FieldDefaults(level=AccessLevel.PRIVATE)</code>. Any field that does not already have an
+ access modifier (i.e. any field that looks like package private access) is changed to have the appropriate access modifier. Any package private
+ field which must remain package private can be annotated with <code>@PackagePrivate</code> (also in the <code>lombok.experimental</code> package).
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.fieldDefaults.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@FieldDefaults</code> as a warning or error if configured.</dd>
+ <dt><code>lombok.fieldDefaults.defaultPrivate</code> = [<code>true</code> | <code>false</code>] (default: false)</dt>
+ <dd>(Since 1.16.8) If set to <code>true</code>, <em>every</em> field in <em>every</em> class or enum anywhere in the sources being compiled will be marked as <code>private</code> unless it has an explicit access modifier or the <code>@PackagePrivate</code> annotation, or an explicit <code>@FieldDefaults</code> annotation is present to override this config key.</dd>
+ <dt><code>lombok.fieldDefaults.defaultFinal</code> = [<code>true</code> | <code>false</code>] (default: false)</dt>
+ <dd>(Since 1.16.8) If set to <code>true</code>, <em>every</em> field in <em>every</em> class or enum anywhere in the sources being compiled will be marked as <code>final</code> unless it has the <code>@NonFinal</code> annotation, or an explicit <code>@FieldDefaults</code> annotation is present to override this config key.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ Like other lombok handlers that touch fields, any field whose name starts with a dollar (<code>$</code>) symbol is skipped entirely.
+ Such a field will not be modified at all.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to experimental features</a> | <a href="ExtensionMethod.html">Previous feature (@ExtensionMethod)</a> | <a href="Delegate.html">Next feature (@Delegate)</a><br />
+ <a href="../../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/experimental/Value.html b/website-old/features/experimental/Value.html
new file mode 100644
index 00000000..ec0ff9e4
--- /dev/null
+++ b/website-old/features/experimental/Value.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../features.css" />
+ <link rel="shortcut icon" href="../../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>EXPERIMENTAL – @Value</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../../index.html">Project Lombok</a></div>
+ <h1>@Value</h1>
+ <div class="byline">Immutable classes made very easy.</div>
+ <div class="moved">
+ @Value has been promoted to the core package in lombok release v1.12.0.<br />
+ The documentation has been moved here: <a href="../Value.html">@lombok.Value</a>.
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to experimental features</a><br />
+ <a href="../../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/experimental/Wither.html b/website-old/features/experimental/Wither.html
new file mode 100644
index 00000000..c8030bd9
--- /dev/null
+++ b/website-old/features/experimental/Wither.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../features.css" />
+ <link rel="shortcut icon" href="../../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>EXPERIMENTAL – @Wither</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../../index.html">Project Lombok</a></div>
+ <h1>@Wither</h1>
+ <div class="byline">Immutable 'setters' - methods that create a clone but with one changed field.</div>
+ <div class="since">
+ <h3>Since</h3>
+ <p>
+ @Wither was introduced as experimental feature in lombok v0.11.4.
+ </p>
+ </div>
+ <div class="experimental">
+ <h3>Experimental</h3>
+ <p>
+ Experimental because:
+ <ul>
+ <li>Still not sure that <code>@Wither</code> is an appropriate name for this feature.</li>
+ <li>Should there be an option to supply a way of cloning the input somehow?</li>
+ <li>Should the way that the clone is created by configurable?</li>
+ <li>Should we replace @Wither entirely with a builder class?</li>
+ </ul>
+ Current status: <em>neutral</em> - More feedback requires on the items in the above list before promotion to the main package is warranted.
+ </div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ The next best alternative to a setter for an immutable property is to construct a clone of the object, but with a new value for this one field.
+ A method to generate this clone is precisely what <code>@Wither</code> generates: a <code>withFieldName(newValue)</code> method which produces a clone
+ except for the new value for the associated field.
+ </p><p>
+ For example, if you create <code>public class Point { private final int x, y; }</code>, setters make no sense because the fields
+ are final. <code>@Wither</code> can generate a <code>withX(int newXValue)</code> method for you which will return a new point with the supplied
+ value for <code>x</code> and the same value for <code>y</code>.
+ </p><p>
+ Like <a href="../GetterSetter.html"><code>@Setter</code></a>, you can specify an access level in case you want the generated wither to be something other than <code>public</code>:<br />
+ <code>@Wither(level = AccessLevel.PROTECTED)</code>. Also like <a href="../GetterSetter.html"><code>@Setter</code></a>, you can also put a <code>@Wither</code> annotation on a type, which means
+ a 'wither' is generated for each field (even non-final fields).
+ </p><p>
+ To put annotations on the generated method, you can use <code>onMethod=@__({@AnnotationsHere})</code>; to put annotations on the only parameter of a generated wither method, you can use <code>onParam=@__({@AnnotationsHere})</code>. Be careful though! This is an experimental feature. For more details see the documentation on the <a href="onX.html">onX</a> feature.
+ </p><p>
+ <em>NEW in lombok v1.12.0:</em> javadoc on the field will now be copied to generated withers. Normally, all text is copied, and <code>@param</code> is <em>moved</em> to the wither, whilst <code>@return</code> lines are stripped from the wither's javadoc. Moved means: Deleted from the field's javadoc. It is also possible to define unique text for the wither's javadoc. To do that, you create a 'section' named <code>WITHER</code>. A section is a line in your javadoc containing 2 or more dashes, then the text 'WITHER', followed by 2 or more dashes, and nothing else on the line. If you use sections, <code>@return</code> and <code>@param</code> stripping / copying for that section is no longer done (move the <code>@param</code> line into the section).
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.wither.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>@Wither</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ Withers cannot be generated for static fields because that makes no sense.
+ </p><p>
+ Withers can be generated for abstract classes, but this generates an abstract method with the appropriate signature.
+ </p><p>
+ When applying <code>@Wither</code> to a type, static fields and fields whose name start with a $ are skipped.
+ </p><p>
+ For generating the method names, the first character of the field, if it is a lowercase character, is title-cased, otherwise, it is left unmodified.
+ Then, <code>with</code> is prefixed.
+ </p><p>
+ No method is generated if any method already exists with the same name (case insensitive) and same parameter count. For example, <code>withX(int x)</code>
+ will not be generated if there's already a method <code>withX(String... x)</code> even though it is technically possible to make the method. This caveat
+ exists to prevent confusion. If the generation of a method is skipped for this reason, a warning is emitted instead. Varargs count as 0 to N parameters.
+ </p><p>
+ For <code>boolean</code> fields that start with <code>is</code> immediately followed by a title-case letter, nothing is prefixed to generate the wither name.
+ </p><p>
+ Any annotations named <code>@NonNull</code> (case insensitive) on the field are interpreted as: This field must not ever hold
+ <em>null</em>. Therefore, these annotations result in an explicit null check in the generated wither. Also, these
+ annotations (as well as any annotation named <code>@Nullable</code> or <code>@CheckForNull</code>) are copied to wither parameter.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to experimental features</a> | <a href="Delegate.html">Previous feature (@Delegate)</a> | <a href="onX.html">Next feature (onX)</a><br />
+ <a href="../../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/experimental/index.html b/website-old/features/experimental/index.html
new file mode 100644
index 00000000..4a6d12bb
--- /dev/null
+++ b/website-old/features/experimental/index.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../features.css" />
+ <link rel="shortcut icon" href="../../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Lombok feature overview</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../../index.html">Project Lombok</a></div>
+ <h1>Lombok experimental features</h1>
+ <div class="index overview">
+ Experimental features are available in your normal lombok installation, but are not as robustly supported as lombok's main features.
+ In particular, experimental features:<ul>
+ <li>Are not tested as well as the core features.</li>
+ <li>Do not get bugs fixed as quickly as core features.</li>
+ <li>May have APIs that will change, possibly drastically if we find a different, better way to solve the same problem.</li>
+ <li>May disappear entirely if the feature is too difficult to support or does bust enough boilerplate.</li>
+ </ul>
+ Features that receive positive community feedback and which seem to produce clean, flexible code will eventually become accepted
+ as a core feature and move out of the experimental package.
+ <dl>
+ <dt><a href="var.html"><code>@var</code></a></dt>
+ <dd>The same as @val but modifiable.</dd>
+ <dt><a href="Accessors.html"><code>@Accessors</code></a></dt>
+ <dd>A more fluent API for getters and setters.</dd>
+ <dt><a href="ExtensionMethod.html"><code>@ExtensionMethod</code></a></dt>
+ <dd>Annoying API? Fix it yourself: Add new methods to existing types!</dd>
+ <dt><a href="FieldDefaults.html"><code>@FieldDefaults</code></a></dt>
+ <dd>New default field modifiers for the 21st century.</dd>
+ <dt><a href="Delegate.html"><code>@Delegate</code></a></dt>
+ <dd>Don't lose your composition.</dd>
+ <dt><a href="Wither.html"><code>@Wither</code></a></dt>
+ <dd>Immutable 'setters' - methods that create a clone but with one changed field.</dd>
+ <dt><a href="onX.html"><code>onMethod= / onConstructor= / onParam=</code></a></dt>
+ <dd>Sup dawg, we heard you like annotations, so we put annotations in your annotations so you can annotate while you're annotating.</dd>
+ <dt><a href="UtilityClass.html"><code>@UtilityClass</code></a></dt>
+ <dd>Utility, metility, wetility! Utility classes for the masses.</dd>
+ <dt><a href="Helper.html"><code>@Helper</code></a></dt>
+ <dd>With a little help from my friends... Helper methods for java.</dd>
+ </dl>
+ </div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.experimental.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of any of the features listed here as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="index overview">
+ <h3>Putting the "Ex" in "Experimental": promoted or deleted experimental features.</h3>
+ <dl>
+ <dt><a href="../Value.html"><code>@Value</code></a>: Promoted</dt>
+ <dd><code>@Value</code> has proven its value and has been moved to the main package.</li>
+ <dt><a href="../Builder.html"><code>@Builder</code></a>: Promoted</dt>
+ <dd><code>@Builder</code> is a solid base to build APIs on, and has been moved to the main package.</li>
+ </dl>
+ </div>
+ <div class="footer">
+ <a href="../../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/experimental/onX.html b/website-old/features/experimental/onX.html
new file mode 100644
index 00000000..39faa1bf
--- /dev/null
+++ b/website-old/features/experimental/onX.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../features.css" />
+ <link rel="shortcut icon" href="../../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>EXPERIMENTAL – onX</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../../index.html">Project Lombok</a></div>
+ <h1>onX</h1>
+ <div class="byline">Sup dawg, we heard you like annotations, so we put annotations in your annotations so you can annotate while you're annotating.</div>
+ <div class="since">
+ <h3>Since</h3>
+ <p>
+ onX was introduced as experimental feature in lombok v0.11.8.
+ </p>
+ </div>
+ <div class="experimental">
+ <h3>Experimental</h3>
+ <p>
+ Experimental because:
+ <ul>
+ <li>Ugly syntax. The syntax of this feature is not optimal, but it is the least convoluted syntax that could possibly work (for now!)</li>
+ <li>Possibly java 9 will offer (much) better ways of supporting this feature.</li>
+ <li>Uncertainty: Future versions of javac may break this feature, and we may not be able to restore it.</li>
+ </ul>
+ Current status: <em>uncertain</em> - Currently we feel this feature cannot move out of experimental status.
+ </div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ <strong>This feature is considered 'workaround status' - it exists in order to allow users of lombok that cannot work without this feature to have access to it anyway. If we find a better way to implement this feature, or some future java version introduces an alternative strategy, this feature can disappear without a reasonable deprecation period. Also, this feature may not work in future versions of javac. Use at your own discretion.</strong>
+ </p><p>
+ Most annotations that make lombok generate methods or constructors can be configured to also make lombok put custom annotations on elements in the generated code.
+ </p><p>
+ <code>@Getter</code>, <code>@Setter</code>, and <code>@Wither</code> support the <code>onMethod</code> option, which will put the listed annotations on the generated method.
+ </p><p>
+ <code>@AllArgsConstructor</code>, <code>@NoArgsConstructor</code>, and <code>@RequiredArgsConstructor</code> support the <code>onConstructor</code> option which will put the listed annotations on the generated constructor.
+ </p><p>
+ <code>@Setter</code> and <code>@Wither</code> support <code>onParam</code> in addition to <code>onMethod</code>; annotations listed will be put on the only parameter that the generated method has. <code>@EqualsAndHashCode</code> also supports <code>onParam</code>; the listed annotation(s) will be placed on the single parameter of the generated <code>equals</code> method, as well as any generated <code>canEqual</code> method.
+ </p><p>
+ The syntax is a little strange and depends on the javac you are using.<br />
+ On javac7, to use any of the 3 <code>onX</code> features, you must wrap the annotations to be applied to the constructor / method / parameter in <code>@__(@AnnotationGoesHere)</code>. To apply multiple annotations, use <code>@__({@Annotation1, @Annotation2})</code>. The annotations can themselves obviously have parameters as well.<br />
+ On javac8 and up, you add an underscore after <code>onMethod</code>, <code>onParam</code>, or <code>onConstructor</code>.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ The reason of the weird syntax is to make this feature work in javac 7 compilers; the <code>@__</code> type is an annotation reference to the annotation type <code>__</code> (double underscore) which doesn't actually exist; this makes javac 7 delay aborting the compilation process due to an error because it is possible an annotation processor will later create the <code>__</code> type. Instead, lombok applies the annotations and removes the references so that the error will never actually occur. The point is: The <code>__</code> type <em>must not exist</em>, otherwise the feature does not work. In the rare case that the <code>__</code> type does exist (and is imported or in the package), you can simply add more underscores. Technically any non-existent type would work, but to maintain consistency and readability and catch erroneous use, lombok considers it an error if the 'wrapper' annotation is anything but a series of underscores.
+ </p><p>
+ In javac8, the above feature should work but due to a bug in javac8 it does not. However, starting in javac8, if the parameter name does not exist in the annotation type, compilation proceeds to a phase where lombok can fix it.
+ </p><p>
+ To reiterate: This feature can disappear at any time; if you use this feature, be prepared to adjust your code when we find a nicer way of implementing this feature, or, if a future version of javac forces us to remove this feature entirely with no alternative.
+ </p><p>
+ The <code>onX</code> parameter is not legal on any type-wide variant. For example, a <code>@Getter</code> annotation on a class does not support <code>onMethod</code>.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to experimental features</a> | <a href="Wither.html">Previous feature (@Wither)</a> | <a href="UtilityClass.html">Next feature (@UtilityClass)</a><br />
+ <a href="../../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/experimental/var.html b/website-old/features/experimental/var.html
new file mode 100644
index 00000000..dde9c35e
--- /dev/null
+++ b/website-old/features/experimental/var.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../features.css" />
+ <link rel="shortcut icon" href="../../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>EXPERIMENTAL – @var</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../../index.html">Project Lombok</a></div>
+ <h1>@var</h1>
+ <div class="byline">Modifiable local variables with a type inferred by assigning value.</div>
+ <div class="since">
+ <h3>Since</h3>
+ <p>
+ @var was introduced as experimental feature in lombok v1.16.12.
+ </p>
+ </div>
+ <div class="experimental">
+ <h3>Experimental</h3>
+ <p>
+ Experimental because:
+ <ul>
+ <li>This feature is very controversial.</li>
+ <li>There is <a href="http://openjdk.java.net/jeps/286">JEP 286</a> that should make the @var obsolete.</li>
+ </ul>Current status: <em>uncertain</em> - Currently we feel this feature cannot move out of experimental status.
+ </div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ The <code>@var</code> has the same mission as the <a href="../val.html">@val</a> annotation but modifable.
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.val.flagUsage</code> = [<code>allow</code>] (default: not set)</dt>
+ <dd><strong>Lombok will flag any usage of <code>var</code> as an error if not configured.</strong></dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ For compound types, the most common superclass is inferred, not any shared interfaces. For example, <code>bool ? new HashSet() : new ArrayList()</code>
+ is an expression with a compound type: The result is both <code>AbstractCollection</code> as well as <code>Serializable</code>. The type inferred will be
+ <code>AbstractCollection</code>, as that is a class, whereas <code>Serializable</code> is an interface.
+ </p><p>
+ In ambiguous cases, <code>java.lang.Object</code> is inferred.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to experimental features</a> | <span class="disabled">Previous feature</span> | <a href="Accessors.html">Next feature (@Accessors)</a><br />
+ <a href="../../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/features.css b/website-old/features/features.css
new file mode 100644
index 00000000..58897ccd
--- /dev/null
+++ b/website-old/features/features.css
@@ -0,0 +1,179 @@
+.confType {
+ font-weight: bold;
+}
+
+body {
+ font-family: Verdana;
+ background-image: url(gradient.png);
+ background-repeat: repeat-x;
+ background-attachment: fixed;
+}
+
+#pepper {
+ background-image: url(lombok-background.png);
+ background-repeat: no-repeat;
+ background-attachment: fixed;
+ background-position: 50px 20px;
+}
+
+* html #pepper {
+ background: none;
+}
+
+.meat {
+ padding: 0px 48px;
+}
+
+.meat .header {
+ position: absolute;
+ top: 10px;
+ left: 30px;
+}
+
+.minimumHeight {
+ height: 700px;
+ width: 1px;
+ float: right;
+}
+
+* html .minimumHeight {
+ height: 0px;
+}
+
+h1 {
+ padding: 8px 0 10px 0;
+ font-size: 20px;
+ width: 100%;
+ text-align: center;
+}
+
+.byline {
+ width: 100%;
+ text-align: center;
+ font-style: italic;
+ font-size: 1.3em;
+}
+
+.index {
+ font-size: 1.2em;
+ margin: 48px 0px 32px 64px;
+}
+
+.index dt {
+ margin-top: 8px;
+ font-size: 1.2em;
+}
+
+.index dd {
+ margin-left: 32px;
+}
+
+dt {
+ margin-top: 4px;
+ font-size: 1.2em;
+}
+
+dd {
+ margin-left: 16px;
+}
+
+.overview code {
+ font-size: 1.1em;
+ white-space: nowrap;
+}
+
+.smallprint {
+ font-size: 0.8em;
+ color: #444;
+}
+
+.smallprint code {
+ font-size: 1em;
+ white-space: nowrap;
+}
+
+.snippets, .singleColumnSnippets {
+ margin-top: 0px;
+}
+
+.snippets .pre {
+ float: left;
+ width: 45%;
+}
+
+.snippet {
+ overflow: auto;
+ padding: 4px;
+ border: 1px dotted #888;
+}
+
+.snippet font {
+ white-space: pre;
+}
+
+.snippets .sep {
+ display: block;
+ width: 5%;
+ height: 1px;
+ float: left;
+}
+
+.snippets .post {
+ float: left;
+ width: 45%;
+}
+
+.snippets .end {
+ clear: both;
+}
+
+.snippet code {
+ font-size: 14px;
+}
+
+.snippet.example {
+ margin: 8px 16px 8px 16px;
+}
+
+.footer {
+ clear: left;
+ margin: 0 auto 0 auto;
+ padding: 16px 0 16px 0;
+ display: block;
+ text-align: center;
+}
+
+.footer .disabled {
+ color: #aaa;
+}
+
+.footer .copyright {
+ color: #555;
+ font-size: 11px;
+ font-style: italic;
+}
+
+.creditsLink {
+ font-style: normal;
+ font-weight: bold;
+}
+
+code a {
+ color: black;
+ text-decoration: none;
+}
+
+code a:hover {
+ color: black;
+ text-decoration: underline;
+}
+
+code .keyword {
+ color: #7f0055;
+ font-weight: bold;
+}
+
+code .staticfield {
+ color: #2a00ff;
+ font-style: italic;
+} \ No newline at end of file
diff --git a/website-old/features/gradient.png b/website-old/features/gradient.png
new file mode 100644
index 00000000..3ffcde2c
--- /dev/null
+++ b/website-old/features/gradient.png
Binary files differ
diff --git a/website-old/features/index.html b/website-old/features/index.html
new file mode 100644
index 00000000..bfa33217
--- /dev/null
+++ b/website-old/features/index.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Lombok feature overview</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>Lombok features</h1>
+ <div class="index overview">
+ <dl>
+ <dt><a href="val.html"><code>val</code></a></dt>
+ <dd>Finally! Hassle-free final local variables.</dd>
+ <dt><a href="NonNull.html"><code>@NonNull</code></a></dt>
+ <dd>or: How I learned to stop worrying and love the NullPointerException.</dd>
+ <dt><a href="Cleanup.html"><code>@Cleanup</code></a></dt>
+ <dd>Automatic resource management: Call your <code>close()</code> methods safely with no hassle.</dd>
+ <dt><a href="GetterSetter.html"><code>@Getter</code> / <code>@Setter</code></a></dt>
+ <dd>Never write <code>public int getFoo() {return foo;}</code> again.</dd>
+ <dt><a href="ToString.html"><code>@ToString</code></a></dt>
+ <dd>No need to start a debugger to see your fields: Just let lombok generate a <code>toString</code> for you!</dd>
+ <dt><a href="EqualsAndHashCode.html"><code>@EqualsAndHashCode</code></a></dt>
+ <dd>Equality made easy: Generates <code>hashCode</code> and <code>equals</code> implementations from the fields of your object.</dd>
+ <dt><a href="Constructor.html"><code>@NoArgsConstructor</code>, <code>@RequiredArgsConstructor</code> and <code>@AllArgsConstructor</code></a></dt>
+ <dd>Constructors made to order: Generates constructors that take no arguments, one argument per final / non-null field, or one argument for every field.</dd>
+ <dt><a href="Data.html"><code>@Data</code></a></dt>
+ <dd>All together now: A shortcut for <code>@ToString</code>, <code>@EqualsAndHashCode</code>,
+ <code>@Getter</code> on all fields, and <code>@Setter</code> on all non-final fields, and <code>@RequiredArgsConstructor</code>!</dd>
+ <dt><a href="Value.html"><code>@Value</code></a></dt>
+ <dd>Immutable classes made very easy.</dd>
+ <dt><a href="Builder.html"><code>@Builder</code></a></dt>
+ <dd>... and Bob's your uncle: No-hassle fancy-pants APIs for object creation!</dd>
+ <dt><a href="SneakyThrows.html"><code>@SneakyThrows</code></a></dt>
+ <dd>To boldly throw checked exceptions where no one has thrown them before!</dd>
+ <dt><a href="Synchronized.html"><code>@Synchronized</code></a></dt>
+ <dd><code>synchronized</code> done right: Don't expose your locks.</dd>
+ <dt><a href="GetterLazy.html"><code>@Getter(lazy=true)</code></a></dt>
+ <dd>Laziness is a virtue!</dd>
+ <dt><a href="Log.html"><code>@Log</code></a></dt>
+ <dd>Captain's Log, stardate 24435.7: &quot;What was that line again?&quot;</dd>
+ <dt><a href="configuration.html">Configuration system</a></dt>
+ <dd>Lombok, made to order: Configure lombok features in one place for your entire project or even your workspace.</dd>
+ <dt><a href="experimental/index.html">Experimental features</a></dt>
+ <dd>Here be dragons: Extra features which aren't quite ready for prime time yet.</dd>
+ </dl>
+ </div>
+ <div class="pointer">
+ If you'd rather read a longer tutorial, <a href="http://jnb.ociweb.com/jnb/jnbJan2010.html">here is a great tutorial (including a walkthrough through some of the above features)</a> written by Michael Kimberlin.
+ </div>
+ <div class="pointer">
+ The documentation above is a lot easier to follow, but if you want to build your own transformations,
+ or you want to add javadoc to <code>lombok.jar</code> in your IDE, you can also check out <a href="../api/index.html">the javadoc</a>.
+ </div>
+ <h1>Running Lombok</h1>
+ <h3>On eclipse</h3>
+ Execute lombok.jar (doubleclick it, or run java -jar lombok.jar). Follow instructions.
+ <h3>On javac (and maven, ant, and other build tools)</h3>
+ Include lombok.jar on the classpath as you compile. That's all there is to it!<br />
+ Lombok hosts its own maven repository, so adding lombok to maven is very simple. <a href="/mavenrepo/index.html">full instructions are here</a>.
+ <h3>On GWT (Google Widget Toolkit)</h3>
+ See <a href="../setup/gwt.html">gwt</a> setup.
+ <h3>On javadoc, and other source-based tools</h3>
+ Use <a href="delombok.html">delombok</a> first, then run javadoc or GWT on the delombok-ed code.
+ <h1>Running delombok</h1>
+ <div>Delombok copies your source files to another directory, replacing all lombok annotations with their desugared form. So, it'll turn <code>@Getter</code>
+ back into the actual getter. It then removes the annotation. This is useful for all sorts of reasons; you can check out what's happening under the hood,
+ if the unthinkable happens and you want to stop using lombok, you can easily remove all traces of it in your source, and you can use delombok to preprocess
+ your source files for source-level tools such as javadoc and GWT. More information about how to run delombok, including instructions for build tools
+ can be found at the <a href="delombok.html">delombok page</a>.</div>
+ <div class="footer">
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/features/lombok-background.png b/website-old/features/lombok-background.png
new file mode 100644
index 00000000..aac3195a
--- /dev/null
+++ b/website-old/features/lombok-background.png
Binary files differ
diff --git a/website-old/features/val.html b/website-old/features/val.html
new file mode 100644
index 00000000..82c96b39
--- /dev/null
+++ b/website-old/features/val.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="features.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>val</title>
+</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
+ <div class="meat">
+ <div class="header"><a href="../index.html">Project Lombok</a></div>
+ <h1>val</h1>
+ <div class="byline">Finally! Hassle-free final local variables.</div>
+ <div class="overview">
+ <h3>Overview</h3>
+ <p>
+ <em>NEW in Lombok 0.10: </em>You can use <code>val</code> as the type of a local variable declaration instead of actually writing the type. When you do this,
+ the type will be inferred from the initializer expression. The local variable will also be made final. This feature works
+ on local variables and on foreach loops only, not on fields. The initializer expression is required.
+ </p><p>
+ <code>val</code> is actually a 'type' of sorts, and exists as a real class in the <code>lombok</code> package. You must import it for val to work (or use <code>lombok.val</code> as the type).
+ The existence of this type on a local variable declaration triggers both the adding of the <code>final</code> keyword as well as copying the type of the initializing expression which overwrites
+ the 'fake' <code>val</code> type.
+ </p><p>
+ <em>WARNING: This feature does not currently work in NetBeans. We're working on fixing that.</em>
+ </p>
+ </div>
+ <div class="snippets">
+ <div class="pre">
+ <h3>With Lombok</h3>
+ <div class="snippet">@HTML_PRE@</div>
+ </div>
+ <div class="sep"></div>
+ <div class="post">
+ <h3>Vanilla Java</h3>
+ <div class="snippet">@HTML_POST@</div>
+ </div>
+ </div>
+ <div style="clear: left;"></div>
+ <div class="overview confKeys">
+ <h3>Supported configuration keys:</h3>
+ <dl>
+ <dt><code>lombok.val.flagUsage</code> = [<code>warning</code> | <code>error</code>] (default: not set)</dt>
+ <dd>Lombok will flag any usage of <code>val</code> as a warning or error if configured.</dd>
+ </dl>
+ </div>
+ <div class="overview">
+ <h3>Small print</h3><div class="smallprint">
+ <p>
+ For compound types, the most common superclass is inferred, not any shared interfaces. For example, <code>bool ? new HashSet() : new ArrayList()</code>
+ is an expression with a compound type: The result is both <code>AbstractCollection</code> as well as <code>Serializable</code>. The type inferred will be
+ <code>AbstractCollection</code>, as that is a class, whereas <code>Serializable</code> is an interface.
+ </p><p>
+ In ambiguous cases, such as when the initializer expression is <code>null</code>, <code>java.lang.Object</code> is inferred.
+ </p>
+ </div>
+ </div>
+ <div class="footer">
+ <a href="index.html">Back to features</a> | <span class="disabled">Previous feature</span> | <a href="NonNull.html">Next feature (@NonNull)</a><br />
+ <a href="../credits.html" class="creditsLink">credits</a> | <span class="copyright">Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div>
+<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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+</script>
+</body></html>
diff --git a/website-old/icon_brush_unused.png b/website-old/icon_brush_unused.png
new file mode 100644
index 00000000..7ebf2f06
--- /dev/null
+++ b/website-old/icon_brush_unused.png
Binary files differ
diff --git a/website-old/icon_bugs.png b/website-old/icon_bugs.png
new file mode 100644
index 00000000..713b6fe8
--- /dev/null
+++ b/website-old/icon_bugs.png
Binary files differ
diff --git a/website-old/icon_contribute.png b/website-old/icon_contribute.png
new file mode 100644
index 00000000..a7f630a5
--- /dev/null
+++ b/website-old/icon_contribute.png
Binary files differ
diff --git a/website-old/icon_discussion.png b/website-old/icon_discussion.png
new file mode 100644
index 00000000..d1e3fd5e
--- /dev/null
+++ b/website-old/icon_discussion.png
Binary files differ
diff --git a/website-old/icon_download.png b/website-old/icon_download.png
new file mode 100644
index 00000000..bfe07288
--- /dev/null
+++ b/website-old/icon_download.png
Binary files differ
diff --git a/website-old/icon_overview.png b/website-old/icon_overview.png
new file mode 100644
index 00000000..806b4421
--- /dev/null
+++ b/website-old/icon_overview.png
Binary files differ
diff --git a/website-old/index.css b/website-old/index.css
new file mode 100644
index 00000000..eeb330ce
--- /dev/null
+++ b/website-old/index.css
@@ -0,0 +1,182 @@
+img,div,a,input,button,.pngfix {
+ behavior: url(logi/iepngfix.htc);
+}
+
+body {
+ font-family: Verdana;
+}
+
+.meat {
+ width: 800px;
+ margin: 0 auto 0 auto;
+}
+
+h1 {
+ padding: 8px 0 10px 0;
+ font-size: 20px;
+ width: 100%;
+ text-align: center;
+}
+
+#buttonBar a.button, a.downloadLink {
+ text-decoration: none;
+ color: black;
+}
+
+#buttonBar a.button:hover, a.downloadLink:hover {
+ text-decoration: underline;
+ color: blue;
+}
+
+.buttonBar {
+ -webkit-border-top-right-radius: 15px 15px;
+ -webkit-border-top-left-radius: 15px 15px;
+ -moz-border-radius-topright: 15px;
+ -moz-border-radius-topleft: 15px;
+ border-top-right-radius: 15px 15px;
+ border-top-left-radius: 15px 15px;
+ background-image: url(buttonbar.jpg);
+ width: 800px;
+ height: 170px;
+}
+
+.separator {
+ background-image: url(buttonbar.jpg);
+ width: 800px;
+ height: 8px;
+ line-height: 8px;
+ font-size: 14px;
+ text-align: center;
+ clear: both;
+}
+
+.endBar {
+ -webkit-border-bottom-right-radius: 15px 15px;
+ -webkit-border-bottom-left-radius: 15px 15px;
+ -moz-border-radius-bottomright: 15px;
+ -moz-border-radius-bottomleft: 15px;
+ border-bottom-right-radius: 15px 15px;
+ border-bottom-left-radius: 15px 15px;
+ background-image: url(buttonbar.jpg);
+ width: 800px;
+ height: 30px;
+ line-height: 30px;
+ font-size: 14px;
+ text-align: center;
+ clear: both;
+}
+
+.button {
+ margin: 30px 16px auto 16px;
+ float: left;
+ width: 80px;
+ height: 100px;
+}
+
+.button:first-child {
+ margin-left: 64px;
+}
+
+.button img {
+ padding: 0 8px 0 8px;
+ display: block;
+}
+
+.button span {
+ display: block;
+ width: 80px;
+ text-align: center;
+ font-size: 14px;
+}
+
+.downloadContainer {
+ float: left;
+ margin: 34px 8px 57px 40px;
+}
+
+code {
+ font-weight: bold;
+}
+
+.attribution {
+ font-size: 0.6em;
+}
+
+.downloadLink {
+ background-image: url(downloadButton.png);
+ display: block;
+ line-height: 56px;
+ width: 225px;
+ height: 56px;
+}
+
+.downloadLink img {
+ margin: 4px 20px 4px 16px;
+ float: left;
+ width: 48px;
+}
+
+.downloadLink span {
+ display: block;
+ font-size: 16px;
+ font-weight: bold;
+}
+
+.versionInfo {
+ font-size: 12px;
+ margin-top: 4px;
+ font-weight: normal;
+ width: 100%;
+ text-align: center;
+}
+
+#downloadInfo {
+ font-size: 14px;
+}
+
+#downloadInfo p {
+ padding: 8px;
+}
+
+.downloadActions {
+ margin-top: 8px;
+ margin-left: 32px;
+}
+
+.note {
+ color: grey;
+}
+
+.footer {
+ margin-top: 8px;
+ display: block;
+ color: #555;
+ font-style: italic;
+ font-size: 11px;
+ width: 100%;
+ text-align: center;
+}
+
+.creditsLink {
+ font-style: normal;
+ font-weight: bold;
+}
+
+.downloadHelp {
+ margin: 32px 16px 32px 0px;
+}
+
+.downloadHelp .platform {
+ font-size: 1.2em;
+ font-weight: bold;
+ padding-right: 32px;
+}
+
+.stableLink {
+ font-size: 1.5em;
+ margin-bottom: 16px;
+}
+
+.edgeLink {
+ margin-bottom: 16px;
+}
diff --git a/website-old/index.html b/website-old/index.html
new file mode 100644
index 00000000..bc89941c
--- /dev/null
+++ b/website-old/index.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta name="google-site-verification" content="uCgX3Or3kDRGpbJ6JCsQc3Ub4JsnR5-p0itfsKAYZ_U" />
+ <script src="logi/jQuery-all.js" type="text/javascript"></script>
+ <link rel="stylesheet" type="text/css" href="logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="index.css" />
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok</title>
+ <script type="text/javascript" src="videos/swfobject.js"></script>
+ <script type="text/javascript">
+ swfobject.registerObject("player","9.0.98","videos/expressInstall.swf");
+ </script>
+ <!--[if lt IE 7]><script type="text/javascript" src="logi/iepngfix_tilebg.js"></script><![endif]-->
+</head><body>
+ <a id="forkMe" href="https://github.com/rzwitserloot/lombok"><img style="position: absolute; top: 0; right: 0; border: 0;" src="//s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
+ <div class="meat">
+ <h1>Project Lombok</h1>
+ <div id="buttonBar" class="buttonBar">
+ <a class="button" href="features/index.html">
+ <img src="icon_overview.png" />
+ <span>Feature Overview</span>
+ </a>
+ <a class="button" href="https://groups.google.com/group/project-lombok">
+ <img src="icon_discussion.png" />
+ <span>Discuss / Help</span>
+ </a>
+ <a class="button" href="https://wiki.github.com/rzwitserloot/lombok/contributing">
+ <img src="icon_contribute.png" />
+ <span>Contribute</span>
+ </a>
+ <a class="button" href="https://github.com/rzwitserloot/lombok/issues">
+ <img src="icon_bugs.png" />
+ <span>Report an issue</span>
+ </a>
+ <div class="downloadContainer">
+ <a class="downloadLink" id="downloadLink" href="download.html">
+ <img src="icon_download.png" />
+ <span>Download!</span>
+ </a>
+ <div class="versionInfo">
+ Version: @VERSION@ | <a href="changelog.html">changelog</a>
+ </div>
+ </div>
+ </div>
+ <div class="video">
+ <video width="800" height="480" poster="videos/poster.png" controls="controls" preload="none">
+ <source src="videos/lombok.ogv" type="video/ogg" />
+ <source src="videos/lombok.mp4" type="video/mp4" />
+ <source src="videos/lombok-iPhone.m4v" type="video/mp4" />
+ <object id="player" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="500">
+ <param name="movie" value="videos/player.swf?image=poster.png&amp;file=lombok.mp4" />
+ <param name="allowfullscreen" value="true" />
+ <!--[if !IE]>-->
+ <object width="800" height="500" type="application/x-shockwave-flash"
+ data="videos/player.swf?image=poster.png&amp;file=lombok.mp4" allowfullscreen="true">
+ <!--<![endif]-->
+ <h3>Video: Lombok Demo</h3>
+ <p>
+ <strong>No video playback capabilities detected.</strong>
+ Why not download it instead?<br />
+ <a href="videos/lombok.mp4">MPEG4 / H.264 (Windows / Mac)</a> |
+ <a href="videos/lombok.ogv">Ogg Theora &amp; Vorbis ".ogv" (Linux)</a>
+ </p><p>
+ To play the video in the webpage, please do one of the following:
+ </p><ul>
+ <li>Upgrade to <a href="https://www.mozilla.org/firefox/">Firefox</a> or
+ <a href="https://www.google.com/chrome/">Chrome</a>
+ </li>
+ <li>Install <a href="https://get.adobe.com/flashplayer/">Adobe Flash</a></li>
+ </ul>
+ <!--[if !IE]>-->
+ </object>
+ <!--<![endif]-->
+ </object>
+ </video>
+ </div>
+ <div class="endBar">
+ <a href="novideo.html">I can't see the video</a> | <a href="http://jnb.ociweb.com/jnb/jnbJan2010.html">Show me a text and images based explanation and tutorial instead!</a>
+ </div>
+ <div class="footer">
+ <a href="credits.html" class="creditsLink">credits</a> | Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/logi/iepngfix.htc b/website-old/logi/iepngfix.htc
new file mode 100755
index 00000000..bbfb23c5
--- /dev/null
+++ b/website-old/logi/iepngfix.htc
@@ -0,0 +1,187 @@
+<public:component>
+<script type="text/javascript">
+
+// IE5.5+ PNG Alpha Fix v2.0 Alpha
+// (c) 2004-2008 Angus Turnbull http://www.twinhelix.com
+
+// This is licensed under the GNU LGPL, version 2.1 or later.
+// For details, see: http://creativecommons.org/licenses/LGPL/2.1/
+
+var IEPNGFix = window.IEPNGFix || {};
+IEPNGFix.data = IEPNGFix.data || {};
+
+
+// This must be a path to a blank image, relative to the HTML document(s).
+// In production use I suggest '/images/blankImg' or similar. That's all!
+IEPNGFix.blankImg = 'clear.gif';
+
+
+IEPNGFix.fix = function(elm, src, t) {
+ // Applies an image 'src' to an element 'elm' using the DirectX filter.
+ // If 'src' is null, filter is disabled.
+ // Disables the 'hook' to prevent infinite recursion on setting BG/src.
+ // 't' = type, where background tile = 0, background = 1, IMG SRC = 2.
+
+ var h = this.hook.enabled;
+ this.hook.enabled = 0;
+
+ var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
+ src = (src || '').replace(/\(/g, '%28').replace(/\)/g, '%29');
+
+ if (
+ src && !(/IMG|INPUT/.test(elm.nodeName) && (t != 2)) &&
+ elm.currentStyle.width == 'auto' && elm.currentStyle.height == 'auto'
+ ) {
+ elm.style.width = elm.offsetWidth + 'px';
+ elm.style.height = elm.clientHeight + 'px';
+ if (elm.currentStyle.display == 'inline') {
+ elm.style.display = 'inline-block';
+ }
+ }
+
+ if (t == 1) {
+ elm.style.backgroundImage = 'url("' + this.blankImg + '")';
+ }
+ if (t == 2) {
+ elm.src = this.blankImg;
+ }
+
+ if (elm.filters[f]) {
+ elm.filters[f].enabled = src ? true : false;
+ if (src) {
+ elm.filters[f].src = src;
+ }
+ } else if (src) {
+ elm.style.filter = 'progid:' + f + '(src="' + src +
+ '",sizingMethod="' + (t == 2 ? 'scale' : 'crop') + '")';
+ }
+
+ this.hook.enabled = h;
+};
+
+
+IEPNGFix.process = function(elm, init) {
+ // Checks the onpropertychange event (on first 'init' run, a fake event)
+ // and calls the filter-applying-functions.
+
+ if (
+ !/MSIE (5\.5|6)/.test(navigator.userAgent) ||
+ typeof elm.filters == 'unknown'
+ ) {
+ return;
+ }
+ if (!this.data[elm.uniqueID]) {
+ this.data[elm.uniqueID] = {
+ className: ''
+ };
+ }
+ var data = this.data[elm.uniqueID],
+ evt = init ? { propertyName: 'src,backgroundImage' } : event,
+ isSrc = /src/.test(evt.propertyName),
+ isBg = /backgroundImage/.test(evt.propertyName),
+ isPos = /width|height|background(Pos|Rep)/.test(evt.propertyName),
+ isClass = !init && ((elm.className != data.className) &&
+ (elm.className || data.className));
+ if (!(isSrc || isBg || isPos || isClass)) {
+ return;
+ }
+ data.className = elm.className;
+ var blank = this.blankImg.match(/([^\/]+)$/)[1],
+ eS = elm.style,
+ eCS = elm.currentStyle;
+
+ // Required for Whatever:hover - erase set BG if className changes.
+ if (
+ isClass && (eS.backgroundImage.indexOf('url(') == -1 ||
+ eS.backgroundImage.indexOf(blank) > -1)
+ ) {
+ return setTimeout(function() {
+ eS.backgroundImage = '';
+ }, 0);
+ }
+
+ // Foregrounds.
+ if (isSrc && elm.src && { IMG: 1, INPUT: 1 }[elm.nodeName]) {
+ if ((/\.png/i).test(elm.src)) {
+ this.fix(elm, elm.src, 2);
+ } else if (elm.src.indexOf(blank) == -1) {
+ this.fix(elm, '');
+ }
+ }
+
+ // Backgrounds.
+ var bgSrc = eCS.backgroundImage || eS.backgroundImage;
+ if ((bgSrc + elm.src).indexOf(blank) == -1) {
+ var bgPNG = bgSrc.match(/url[("']+(.*\.png[^\)"']*)[\)"']/i);
+ if (bgPNG) {
+ if (this.tileBG && !{ IMG: 1, INPUT: 1 }[elm.nodeName]) {
+ this.tileBG(elm, bgPNG[1]);
+ this.fix(elm, '', 1);
+ } else {
+ if (data.tiles && data.tiles.src) {
+ this.tileBG(elm, '');
+ }
+ this.fix(elm, bgPNG[1], 1);
+ this.childFix(elm);
+ }
+ } else {
+ if (data.tiles && data.tiles.src) {
+ this.tileBG(elm, '');
+ }
+ this.fix(elm, '');
+ }
+ } else if ((isPos || isClass) && data.tiles && data.tiles.src) {
+ this.tileBG(elm, data.tiles.src);
+ }
+
+ if (init) {
+ this.hook.enabled = 1;
+ elm.attachEvent('onpropertychange', this.hook);
+ }
+};
+
+
+IEPNGFix.childFix = function(elm) {
+ // "hasLayout" fix for unclickable children inside PNG backgrounds.
+ var tags = [
+ 'a',
+ 'input',
+ 'select',
+ 'textarea',
+ 'button',
+ 'iframe',
+ 'object'
+ ],
+ t = tags.length,
+ tFix = [];
+ while (t--) {
+ var pFix = elm.all.tags(tags[t]),
+ e = pFix.length;
+ while (e--) {
+ tFix.push(pFix[e]);
+ }
+ }
+ t = tFix.length;
+ if (t && (/relative|absolute/i).test(elm.currentStyle.position)) {
+ alert('IEPNGFix: Unclickable children of element:' +
+ '\n\n<' + elm.nodeName + (elm.id && ' id=' + elm.id) + '>');
+ }
+ while (t--) {
+ if (!(/relative|absolute/i).test(tFix[t].currentStyle.position)) {
+ tFix[t].style.position = 'relative';
+ }
+ }
+};
+
+
+IEPNGFix.hook = function() {
+ if (IEPNGFix.hook.enabled) {
+ IEPNGFix.process(element, 0);
+ }
+};
+
+
+IEPNGFix.process(element, 1);
+
+</script>
+</public:component>
diff --git a/website-old/logi/iepngfix_tilebg.js b/website-old/logi/iepngfix_tilebg.js
new file mode 100755
index 00000000..48795631
--- /dev/null
+++ b/website-old/logi/iepngfix_tilebg.js
@@ -0,0 +1,178 @@
+// IE5.5+ PNG Alpha Fix v2.0 Alpha: Background Tiling Support
+// (c) 2008 Angus Turnbull http://www.twinhelix.com
+
+// This is licensed under the GNU LGPL, version 2.1 or later.
+// For details, see: http://creativecommons.org/licenses/LGPL/2.1/
+
+var IEPNGFix = window.IEPNGFix || {};
+
+IEPNGFix.tileBG = function(elm, pngSrc, ready) {
+ // Params: A reference to a DOM element, the PNG src file pathname, and a
+ // hidden "ready-to-run" passed when called back after image preloading.
+
+ var data;
+ try {
+ data = this.data[elm.uniqueID],
+ elmW = Math.max(elm.clientWidth, elm.scrollWidth),
+ elmH = Math.max(elm.clientHeight, elm.scrollHeight),
+ bgX = elm.currentStyle.backgroundPositionX,
+ bgY = elm.currentStyle.backgroundPositionY,
+ bgR = elm.currentStyle.backgroundRepeat;
+ } catch ( e ) {
+ return;
+ }
+
+ // Cache of DIVs created per element, and image preloader/data.
+ if (!data.tiles) {
+ data.tiles = {
+ elm: elm,
+ src: '',
+ cache: [],
+ img: new Image(),
+ old: {}
+ };
+ }
+ var tiles = data.tiles,
+ pngW = tiles.img.width,
+ pngH = tiles.img.height;
+
+ if (pngSrc) {
+ if (!ready && pngSrc != tiles.src) {
+ // New image? Preload it with a callback to detect dimensions.
+ tiles.img.onload = function() {
+ this.onload = null;
+ IEPNGFix.tileBG(elm, pngSrc, 1);
+ };
+ return tiles.img.src = pngSrc;
+ }
+ } else {
+ // No image?
+ if (tiles.src) ready = 1;
+ pngW = pngH = 0;
+ }
+ tiles.src = pngSrc;
+
+ if (!ready && elmW == tiles.old.w && elmH == tiles.old.h &&
+ bgX == tiles.old.x && bgY == tiles.old.y && bgR == tiles.old.r) {
+ return;
+ }
+
+ // Convert English and percentage positions to pixels.
+ var pos = {
+ top: '0%',
+ left: '0%',
+ center: '50%',
+ bottom: '100%',
+ right: '100%'
+ },
+ x,
+ y,
+ pc;
+ x = pos[bgX] || bgX;
+ y = pos[bgY] || bgY;
+ if (pc = x.match(/(\d+)%/)) {
+ x = Math.round((elmW - pngW) * (parseInt(pc[1]) / 100));
+ }
+ if (pc = y.match(/(\d+)%/)) {
+ y = Math.round((elmH - pngH) * (parseInt(pc[1]) / 100));
+ }
+ x = parseInt(x);
+ y = parseInt(y);
+
+ // Handle backgroundRepeat.
+ var repeatX = { 'repeat': 1, 'repeat-x': 1 }[bgR],
+ repeatY = { 'repeat': 1, 'repeat-y': 1 }[bgR];
+ if (repeatX) {
+ x %= pngW;
+ if (x > 0) x -= pngW;
+ }
+ if (repeatY) {
+ y %= pngH;
+ if (y > 0) y -= pngH;
+ }
+
+ // Go!
+ this.hook.enabled = 0;
+ if (!({ relative: 1, absolute: 1 }[elm.currentStyle.position])) {
+ elm.style.position = 'relative';
+ }
+ var count = 0,
+ xPos,
+ maxX = repeatX ? elmW : x + 0.1,
+ yPos,
+ maxY = repeatY ? elmH : y + 0.1,
+ d,
+ s,
+ isNew;
+ if (pngW && pngH) {
+ for (xPos = x; xPos < maxX; xPos += pngW) {
+ for (yPos = y; yPos < maxY; yPos += pngH) {
+ isNew = 0;
+ if (!tiles.cache[count]) {
+ tiles.cache[count] = document.createElement('div');
+ isNew = 1;
+ }
+ var clipR = (xPos + pngW > elmW ? elmW - xPos : pngW),
+ clipB = (yPos + pngH > elmH ? elmH - yPos : pngH);
+ d = tiles.cache[count];
+ s = d.style;
+ s.behavior = 'none';
+ s.left = xPos + 'px';
+ s.top = yPos + 'px';
+ s.width = clipR + 'px';
+ s.height = clipB + 'px';
+ s.clip = 'rect(' +
+ (yPos < 0 ? 0 - yPos : 0) + 'px,' +
+ clipR + 'px,' +
+ clipB + 'px,' +
+ (xPos < 0 ? 0 - xPos : 0) + 'px)';
+ s.display = 'block';
+ if (isNew) {
+ s.position = 'absolute';
+ s.zIndex = -999;
+ if (elm.firstChild) {
+ elm.insertBefore(d, elm.firstChild);
+ } else {
+ elm.appendChild(d);
+ }
+ }
+ this.fix(d, pngSrc, 0);
+ count++;
+ }
+ }
+ }
+ while (count < tiles.cache.length) {
+ this.fix(tiles.cache[count], '', 0);
+ tiles.cache[count++].style.display = 'none';
+ }
+
+ this.hook.enabled = 1;
+
+ // Cache so updates are infrequent.
+ tiles.old = {
+ w: elmW,
+ h: elmH,
+ x: bgX,
+ y: bgY,
+ r: bgR
+ };
+};
+
+
+IEPNGFix.update = function() {
+ // Update all PNG backgrounds.
+ for (var i in IEPNGFix.data) {
+ var t = IEPNGFix.data[i].tiles;
+ if (t && t.elm && t.src) {
+ IEPNGFix.tileBG(t.elm, t.src);
+ }
+ }
+};
+IEPNGFix.update.timer = 0;
+
+if (window.attachEvent && !window.opera) {
+ window.attachEvent('onresize', function() {
+ clearTimeout(IEPNGFix.update.timer);
+ IEPNGFix.update.timer = setTimeout(IEPNGFix.update, 100);
+ });
+}
diff --git a/website-old/logi/jQuery-all.js b/website-old/logi/jQuery-all.js
new file mode 100644
index 00000000..9f8ffce7
--- /dev/null
+++ b/website-old/logi/jQuery-all.js
@@ -0,0 +1,143 @@
+/*
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
+/*
+ * Sizzle CSS Selector Engine - v0.9.3
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
+
+/*
+ * jQuery Color Animations
+ * Copyright 2007 John Resig
+ * Released under the MIT and GPL licenses.
+ */
+
+(function(jQuery){
+
+ // We override the animation for all of these color styles
+ jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
+ jQuery.fx.step[attr] = function(fx){
+ if ( fx.state == 0 ) {
+ fx.start = getColor( fx.elem, attr );
+ fx.end = getRGB( fx.end );
+ }
+
+ fx.elem.style[attr] = "rgb(" + [
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
+ ].join(",") + ")";
+ }
+ });
+
+ // Color Conversion functions from highlightFade
+ // By Blair Mitchelmore
+ // http://jquery.offput.ca/highlightFade/
+
+ // Parse strings looking for color tuples [255,255,255]
+ function getRGB(color) {
+ var result;
+
+ // Check if we're already dealing with an array of colors
+ if ( color && color.constructor == Array && color.length == 3 )
+ return color;
+
+ // Look for rgb(num,num,num)
+ if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
+ return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];
+
+ // Look for rgb(num%,num%,num%)
+ if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
+ return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
+
+ // Look for #a0b1c2
+ if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
+ return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
+
+ // Look for #fff
+ if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
+ return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
+
+ // Otherwise, we're most likely dealing with a named color
+ return colors[jQuery.trim(color).toLowerCase()];
+ }
+
+ function getColor(elem, attr) {
+ var color;
+
+ do {
+ color = jQuery.curCSS(elem, attr);
+
+ // Keep going until we find an element that has color, or we hit the body
+ if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
+ break;
+
+ attr = "backgroundColor";
+ } while ( elem = elem.parentNode );
+
+ return getRGB(color);
+ };
+
+ // Some named colors to work with
+ // From Interface by Stefan Petre
+ // http://interface.eyecon.ro/
+
+ var colors = {
+ aqua:[0,255,255],
+ azure:[240,255,255],
+ beige:[245,245,220],
+ black:[0,0,0],
+ blue:[0,0,255],
+ brown:[165,42,42],
+ cyan:[0,255,255],
+ darkblue:[0,0,139],
+ darkcyan:[0,139,139],
+ darkgrey:[169,169,169],
+ darkgreen:[0,100,0],
+ darkkhaki:[189,183,107],
+ darkmagenta:[139,0,139],
+ darkolivegreen:[85,107,47],
+ darkorange:[255,140,0],
+ darkorchid:[153,50,204],
+ darkred:[139,0,0],
+ darksalmon:[233,150,122],
+ darkviolet:[148,0,211],
+ fuchsia:[255,0,255],
+ gold:[255,215,0],
+ green:[0,128,0],
+ indigo:[75,0,130],
+ khaki:[240,230,140],
+ lightblue:[173,216,230],
+ lightcyan:[224,255,255],
+ lightgreen:[144,238,144],
+ lightgrey:[211,211,211],
+ lightpink:[255,182,193],
+ lightyellow:[255,255,224],
+ lime:[0,255,0],
+ magenta:[255,0,255],
+ maroon:[128,0,0],
+ navy:[0,0,128],
+ olive:[128,128,0],
+ orange:[255,165,0],
+ pink:[255,192,203],
+ purple:[128,0,128],
+ violet:[128,0,128],
+ red:[255,0,0],
+ silver:[192,192,192],
+ white:[255,255,255],
+ yellow:[255,255,0]
+ };
+
+})(jQuery);
diff --git a/website-old/logi/reset.css b/website-old/logi/reset.css
new file mode 100644
index 00000000..91c616e9
--- /dev/null
+++ b/website-old/logi/reset.css
@@ -0,0 +1,67 @@
+html,body,div,span,applet,object,iframe,
+pre,abbr,address,cite,code,del,dfn,em,img,
+ins,kbd,q,strong,tt,var,dl,dt,dd,blockquote,
+fieldset,form,i,b,caption,tbody,tfoot,thead,tr,th,td{
+ margin:0;
+ padding:0;
+ vertical-align:baseline;
+}
+
+body{
+ background:#fff;
+ color:#000;
+ font:75%/1.5em Verdana, Helvetica, Arial, sans-serif;
+}
+
+:focus{
+ outline:0;
+}
+
+code,kbd,tt{
+ font-family: "Courier new", Courier;
+ line-height:1;
+ *line-height:1.5;
+}
+
+del{
+ text-decoration:line-through;
+}
+
+*::-moz-focus-inner {
+ border: 0;
+}
+
+img{
+ border: 0;
+ display:inline-block;
+ vertical-align:bottom;
+}
+
+ol{
+ list-style:inside decimal;
+}
+
+ul{
+ list-style:inside disc;
+}
+
+pre{
+ font-family:"Courier New", Courier;
+ margin:0 0 1.5em;
+}
+
+sub{
+ top:0.4em;
+ font-size:0.85em;
+ line-height:1;
+ position:relative;
+ vertical-align:baseline;
+}
+
+sup{
+ font-size:0.85em;
+ line-height:1;
+ position:relative;
+ bottom:0.5em;
+ vertical-align:baseline;
+}
diff --git a/website-old/lombokBullet.png b/website-old/lombokBullet.png
new file mode 100644
index 00000000..b19beee2
--- /dev/null
+++ b/website-old/lombokBullet.png
Binary files differ
diff --git a/website-old/mavenrepo/index.html b/website-old/mavenrepo/index.html
new file mode 100644
index 00000000..a51a5a20
--- /dev/null
+++ b/website-old/mavenrepo/index.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok</title>
+ <style type="text/css">
+ code {
+ font-size: 12px;
+ font-family: monospaced;
+ }
+
+ .snippet {
+ white-space: pre;
+ border: 1px dashed #888;
+ margin: 8px 8px 8px 0px;
+ padding: 8px;
+ font-family: "Courier New", Courier;
+ }
+
+ .meat {
+ margin: 16px auto 0 auto;
+ width: 800px;
+ }
+
+ .backLink {
+ padding-top: 100px;
+ width: 100%;
+ text-align: right;
+ }
+
+ h1 {
+ padding-bottom: 0;
+ margin-bottom: 8px;
+ }
+
+ #downloadLink {
+ display: block;
+ margin-top: 32px;
+ font-size: 14px;
+ }
+ </style>
+</head><body>
+ <div class="meat">
+ <h2>Maven</h1>
+ <div>
+ You can use lombok with maven by adding the following to your <strong>pom.xml</strong>:
+ <div class="snippet">&lt;dependencies&gt;
+ &lt;dependency&gt;
+ &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
+ &lt;artifactId&gt;lombok&lt;/artifactId&gt;
+ &lt;version&gt;@VERSION@&lt;/version&gt;
+ &lt;scope&gt;provided&lt;/scope&gt;
+ &lt;/dependency&gt;
+&lt;/dependencies&gt;</div>
+ </div>
+ <h2>Ivy</h2>
+ <div>
+ You can use lombok with ivy by adding the following to your <strong>ivy.xml</strong>:
+ <div class="snippet">&lt;dependency org="org.projectlombok" name="lombok" rev="@VERSION@" conf="build" /&gt;</div>
+ </div>
+ <h2>SBT</h2>
+ <div>
+ You can use lombok with SBT by adding the following to your <strong>build.sbt</strong>:
+ <div class="snippet">libraryDependencies += "org.projectlombok" % "lombok" % "@VERSION@"</div>
+ </div>
+ <h2>Gradle</h2>
+
+ <div>
+ If your gradle version is <strong> >= 2.12</strong> you can use lombok by adding the following to your <strong>build.gradle</strong> in the <strong>dependencies</strong> block:
+ <div class="snippet">compileOnly "org.projectlombok:lombok:@VERSION@"</div>
+ </div>
+ <div>
+ If you use an older version you can still use the following:
+ <div class="snippet">provided "org.projectlombok:lombok:@VERSION@"</div>
+ as long as your gradle build include a war task (otherwise the "provided" scope is not available and you have to create your own configuration as <a href="https://issues.gradle.org/browse/GRADLE-784">explained here</a> )
+ </div>
+ <br>
+ <div>
+ <strong><em>NOTE:</em></strong> You'll still need to download lombok, or doubleclick on the lombok.jar file downloaded by maven / ivy / gradle, to install lombok into your eclipse installation.
+ </div>
+ <a id="downloadLink" href="https://projectlombok.org/downloads/lombok.jar">Download lombok.jar</a>
+ </div>
+ <div class="backLink">
+ <a href="../index.html">back to the project homepage</a>
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/novideo.html b/website-old/novideo.html
new file mode 100644
index 00000000..10a6f701
--- /dev/null
+++ b/website-old/novideo.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="logi/reset.css" />
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok</title>
+ <style type="text/css">
+ code {
+ font-size: 12px;
+ font-family: monospaced;
+ }
+
+ .meat {
+ margin: 16px auto 0 auto;
+ width: 800px;
+ }
+
+ .backLink {
+ padding-top: 100px;
+ width: 100%;
+ text-align: right;
+ }
+ </style>
+</head><body>
+ <div class="meat">
+ <h1>Can't see the video?</h1>
+ <p>See it on Youtube:
+ <a href="https://www.youtube.com/watch?v=y6zMyM-YTgg">https://www.youtube.com/watch?v=y6zMyM-YTgg</a>
+ </p><p>
+ Or why not download it instead?<br />
+ <a href="videos/lombok.mp4">MPEG4 / H.264 (Windows / Mac)</a> |
+ <a href="videos/lombok.ogv">Ogg Theora &amp; Vorbis ".ogv" (Linux)</a>
+ </p><p>
+ If the video won't play on the webpage and you want it to, please do one of the following:
+ </p><ul>
+ <li>Upgrade to <a href="https://getfirefox.com/">Firefox 3.5</a>,
+ <a href="https://apple.com/safari">Safari 4</a> or
+ <a href="https://www.google.com/chrome/">Chrome 2</a></li>
+ <li>Install <a href="https://get.adobe.com/flashplayer/">Adobe Flash</a></li>
+ <li>Install <a href="https://apple.com/quicktime/download/">QuickTime</a></li>
+ </ul>
+ <div class="backLink">
+ <a href="index.html">back to the project homepage</a>
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/peppery_background_large.jpg b/website-old/peppery_background_large.jpg
new file mode 100644
index 00000000..6524dc6f
--- /dev/null
+++ b/website-old/peppery_background_large.jpg
Binary files differ
diff --git a/website-old/poster.png b/website-old/poster.png
new file mode 100644
index 00000000..4911408f
--- /dev/null
+++ b/website-old/poster.png
Binary files differ
diff --git a/website-old/reinier.jpg b/website-old/reinier.jpg
new file mode 100644
index 00000000..dcb09700
--- /dev/null
+++ b/website-old/reinier.jpg
Binary files differ
diff --git a/website-old/robbertjan.jpg b/website-old/robbertjan.jpg
new file mode 100644
index 00000000..a0839e6c
--- /dev/null
+++ b/website-old/robbertjan.jpg
Binary files differ
diff --git a/website-old/roel.jpg b/website-old/roel.jpg
new file mode 100644
index 00000000..e5ce02ce
--- /dev/null
+++ b/website-old/roel.jpg
Binary files differ
diff --git a/website-old/sander.jpg b/website-old/sander.jpg
new file mode 100644
index 00000000..f3be1b28
--- /dev/null
+++ b/website-old/sander.jpg
Binary files differ
diff --git a/website-old/setup/android.html b/website-old/setup/android.html
new file mode 100644
index 00000000..9edb9c95
--- /dev/null
+++ b/website-old/setup/android.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <script src="../logi/jQuery-all.js" type="text/javascript"></script>
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../index.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok</title>
+ <!--[if lt IE 7]><script type="text/javascript" src="../logi/iepngfix_tilebg.js"></script><![endif]-->
+</head><body>
+ <a id="forkMe" href="https://github.com/rzwitserloot/lombok"><img style="position: absolute; top: 0; right: 0; border: 0;" src="//s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
+ <div class="meat">
+ <h1><a href="/">Project Lombok</a> - android instructions</h1>
+ <div id="buttonBar" class="buttonBar">
+ <a class="button" href="../features/index.html">
+ <img src="../icon_overview.png" />
+ <span>Feature Overview</span>
+ </a>
+ <a class="button" href="https://groups.google.com/group/project-lombok">
+ <img src="../icon_discussion.png" />
+ <span>Discuss / Help</span>
+ </a>
+ <a class="button" href="https://wiki.github.com/rzwitserloot/lombok/contributing">
+ <img src="../icon_contribute.png" />
+ <span>Contribute</span>
+ </a>
+ <a class="button" href="https://github.com/rzwitserloot/lombok/issues">
+ <img src="../icon_bugs.png" />
+ <span>Report an issue</span>
+ </a>
+ <div class="downloadContainer">
+ <a class="downloadLink" id="downloadLink" href="../download.html">
+ <img src="../icon_download.png" />
+ <span>Download!</span>
+ </a>
+ <div class="versionInfo">
+ Version: @VERSION@ | <a href="../changelog.html">changelog</a>
+ </div>
+ </div>
+ </div>
+ <div class="downloadHelp">
+ <p>
+ Android development with lombok is possible. Lombok should be a compile-time only dependency, as otherwise
+ the entirety of lombok will end up in your DEX files, wasting precious space on android devices. Also, errors will occur due
+ to the native libraries present in lombok.jar itself. Unfortunately, android does not (yet) understand the concept of a
+ compile-time-only dependency, so you need to mess with your build files to make it work.
+ </p><p>
+ Android also does not have a complete JRE library stack; in particular, it does not have the <code>@java.beans.ConstructorProperties</code> annotation, therefore you have to stop lombok from generating these:
+ <ul>
+ <li>The <code>suppressConstructorProperties</code> property can be set to <code>false</code> when using <a href="/features/Constructor.html">@XArgsConstructor Annotations</a>.</li>
+ <li>Starting with Lombok <code>&gt;= 1.14.0</code> you can instead a <code>lombok.config</code> file to the root of your project to disable <code>ConstructorProperties</code> project wide. Add the following line to <code>lombok.config</code>:<br />
+ <pre>lombok.anyConstructor.suppressConstructorProperties = true</pre><br />
+ See the <a href="/features/configuration.html">configuration</a> documentation for more information on how to set up your project with a lombok config file.
+ </ul>
+ </p><p>
+ The instructions listed below are excerpts from <a href="https://github.com/excilys/androidannotations/wiki/Cookbook">The
+ AndroidAnnotations project cookbook</a>. You may wish to refer to that documentation for complete instructions; lombok is just
+ the equivalent to <code>androidannotations-VERSION.jar</code>; there is no <code>-api</code> aspect.
+ </p>
+ <h3>Eclipse</h3>
+ <div>
+ In eclipse, create a 'lightweight' lombok jar that contains only the annotations by running:<br /><br />
+ <pre>
+java -jar lombok.jar publicApi</pre>
+ Then, add the <code>lombok-api.jar</code> file created by running this command
+ to your android project instead of the complete <code>lombok.jar</code>, and,
+ as usual, install lombok into eclipse by double-clicking <code>lombok.jar</code>.
+ </div>
+ <h3>Ant</h3>
+ <div>
+ <ul>
+ <li>Find <code>build.xml</code> in <code>${ANDROID_SDK_ROOT}/tools/ant/build.xml</code> and copy the <code>-compile</code> target into the paste buffer.
+ <li>Copy this to the <code>build.xml</code> of your own project, right before the <code>&lt;import file="${sdk.dir}/tools/ant/build.xml"&gt;</code> line.
+ <li>Create a <code>compile-libs</code> directory in your own project and copy the complete <code>lombok.jar</code> to it.
+ <li>Now modify the <code>&lt;classpath&gt;</code> entry inside the <code>&lt;javac&gt;</code> task in the <code>-compile</code> target you just copied:<br />
+ add <code>&lt;fileset dir="compile-libs" includes="*.jar" /&gt;</code> to it.
+ </ul>
+ </div>
+ <h3>Maven</h3>
+ <div>
+ You should be able to just follow the normal <a href="../mavenrepo/index.html">lombok with maven instructions</a>.<br />
+ Note that if you use android, eclipse, and maven together you may have to replace <code>lombok.jar</code> in your eclipse android project's build path
+ (which you can modify in that project's properties page) with <code>lombok-api.jar</code>, as produced in the procedure explained for <em>Eclipse</em>,
+ above.
+ </div>
+ <h3>Gradle</h3>
+ <div>
+ <ul>
+ <li>Make sure that the version of your android plugin is <code>&gt;= 0.4.3</code></li>
+ <li>Add Lombok to your application's <code>dependencies</code> block:<br /><br />
+<pre>
+ provided "org.projectlombok:lombok:1.12.6"
+</pre>
+ </li>
+ <li>When using <a href="https://bitbucket.org/hvisser/android-apt">android-apt</a>, you also have to specify Lombok as an annotation processor (with the <code>apt</code> directive) in the <code>dependencies</code> block:<br /><br />
+<pre>
+ provided "org.projectlombok:lombok:1.12.6"
+ apt "org.projectlombok:lombok:1.12.6"
+</pre>
+ </li>
+ </ul>
+ </div>
+ <h3>Android Studio</h3>
+ <div>
+ Follow the previous instructions (<em>Gradle</em>). In addition to setting up your gradle project correctly, you need to add the <a href="https://plugins.jetbrains.com/plugin/6317">Lombok IntelliJ plugin</a> to add lombok support to Android Studio:
+ <ul>
+ <li>Go to <code>File &gt; Settings &gt; Plugins</code></li>
+ <li>Click on <code>Browse repositories...</code></li>
+ <li>Search for <code>Lombok Plugin</code></li>
+ <li>Click on <code>Install plugin</code></li>
+ <li>Restart Android Studio</li>
+ </ul>
+ </div>
+ <div class="endBar">
+ </div>
+ <div class="footer">
+ <a href="../credits.html" class="creditsLink">credits</a> | Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/setup/ecj.html b/website-old/setup/ecj.html
new file mode 100644
index 00000000..cc70c566
--- /dev/null
+++ b/website-old/setup/ecj.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <script src="../logi/jQuery-all.js" type="text/javascript"></script>
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../index.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok</title>
+ <!--[if lt IE 7]><script type="text/javascript" src="../logi/iepngfix_tilebg.js"></script><![endif]-->
+</head><body>
+ <a id="forkMe" href="https://github.com/rzwitserloot/lombok"><img style="position: absolute; top: 0; right: 0; border: 0;" src="//s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
+ <div class="meat">
+ <h1><a href="/">Project Lombok</a> - ecj instructions</h1>
+ <div id="buttonBar" class="buttonBar">
+ <a class="button" href="../features/index.html">
+ <img src="../icon_overview.png" />
+ <span>Feature Overview</span>
+ </a>
+ <a class="button" href="https://groups.google.com/group/project-lombok">
+ <img src="../icon_discussion.png" />
+ <span>Discuss / Help</span>
+ </a>
+ <a class="button" href="https://wiki.github.com/rzwitserloot/lombok/contributing">
+ <img src="../icon_contribute.png" />
+ <span>Contribute</span>
+ </a>
+ <a class="button" href="https://github.com/rzwitserloot/lombok/issues">
+ <img src="../icon_bugs.png" />
+ <span>Report an issue</span>
+ </a>
+ <div class="downloadContainer">
+ <a class="downloadLink" id="downloadLink" href="../download.html">
+ <img src="../icon_download.png" />
+ <span>Download!</span>
+ </a>
+ <div class="versionInfo">
+ Version: @VERSION@ | <a href="../changelog.html">changelog</a>
+ </div>
+ </div>
+ </div>
+ <div class="downloadHelp">
+ ecj (the eclipse standalone compiler) is compatible with lombok. Use the following command line to enable lombok with ecj:
+ <p>
+ <pre>java <strong>-javaagent:lombok.jar=ECJ</strong> -jar ecj.jar -cp lombok.jar -source 1.8 <em class="note">(rest of arguments)</em></pre>
+ <p>
+ You may have to add the following VM argument, if you're using an older version of lombok or java:
+ <pre><strong>-Xbootclasspath/p:lombok.jar</strong></pre>
+ <p>
+ If you're using a tool based on ecj, adding these VM arguments and adding lombok.jar to the classpath should work.
+ </div>
+ <div class="separator">
+ </div>
+ <div class="downloadHelp">
+ <h3>Using ecj with Maven</h3>
+ <p>
+ It is possible to <a href="pom.xml">configure</a> <code>maven-compiler-plugin</code> with <code>maven-dependency-plugin</code> and <code>plexus-compiler-eclipse</code>.
+ </p>
+ <p>
+ Before the <code>compile</code> phase, you will have to set your <code>MAVEN_OPTS</code> environment variable to include the <code>javaagent</code> argument.
+ In the example below, <code>target</code> is your <code>${project.build.directory}</code>.
+ </p>
+ <p>
+ Use the following commands in sequence to enable lombok with ecj in your Maven build:
+<pre>
+mvn clean <strong>dependency:copy@get-lombok</strong>
+set MAVEN_OPTS=<strong>-javaagent:target/lombok.jar=ECJ</strong> <em class="note">(or your OS's equivalent)</em>
+mvn install
+set MAVEN_OPTS= <em class="note">(or your OS's equivalent)</em>
+</pre>
+ </p>
+ </div>
+ <div class="endBar">
+ </div>
+ <div class="footer">
+ <a href="../credits.html" class="creditsLink">credits</a> | Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/setup/gwt.html b/website-old/setup/gwt.html
new file mode 100644
index 00000000..d7bcad56
--- /dev/null
+++ b/website-old/setup/gwt.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <script src="../logi/jQuery-all.js" type="text/javascript"></script>
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../index.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok</title>
+ <!--[if lt IE 7]><script type="text/javascript" src="../logi/iepngfix_tilebg.js"></script><![endif]-->
+</head><body>
+ <a id="forkMe" href="https://github.com/rzwitserloot/lombok"><img style="position: absolute; top: 0; right: 0; border: 0;" src="//s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
+ <div class="meat">
+ <h1><a href="/">Project Lombok</a> - gwt instructions</h1>
+ <div id="buttonBar" class="buttonBar">
+ <a class="button" href="../features/index.html">
+ <img src="../icon_overview.png" />
+ <span>Feature Overview</span>
+ </a>
+ <a class="button" href="https://groups.google.com/group/project-lombok">
+ <img src="../icon_discussion.png" />
+ <span>Discuss / Help</span>
+ </a>
+ <a class="button" href="https://wiki.github.com/rzwitserloot/lombok/contributing">
+ <img src="../icon_contribute.png" />
+ <span>Contribute</span>
+ </a>
+ <a class="button" href="https://github.com/rzwitserloot/lombok/issues">
+ <img src="../icon_bugs.png" />
+ <span>Report an issue</span>
+ </a>
+ <div class="downloadContainer">
+ <a class="downloadLink" id="downloadLink" href="../download.html">
+ <img src="../icon_download.png" />
+ <span>Download!</span>
+ </a>
+ <div class="versionInfo">
+ Version: @VERSION@ | <a href="../changelog.html">changelog</a>
+ </div>
+ </div>
+ </div>
+ <div class="downloadHelp">
+ gwt (Google Web Toolkit) is compatible with lombok.
+ <p>
+ Edit your proj-debug and proj-compile batch scripts to add the following VM arguments:
+ <pre>
+java <strong>-javaagent:lombok.jar=ECJ</strong> <em>(rest of arguments)</em>
+ </pre>
+ <p>
+ Thanks to Stephen Haberman for figuring this out.
+ </div>
+ <div class="endBar">
+ </div>
+ <div class="footer">
+ <a href="../credits.html" class="creditsLink">credits</a> | Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/setup/netbeans-enable-annotation-processing-in-editor.png b/website-old/setup/netbeans-enable-annotation-processing-in-editor.png
new file mode 100644
index 00000000..d8a6b4c3
--- /dev/null
+++ b/website-old/setup/netbeans-enable-annotation-processing-in-editor.png
Binary files differ
diff --git a/website-old/setup/netbeans.html b/website-old/setup/netbeans.html
new file mode 100644
index 00000000..4ef1d392
--- /dev/null
+++ b/website-old/setup/netbeans.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <script src="../logi/jQuery-all.js" type="text/javascript"></script>
+ <link rel="stylesheet" type="text/css" href="../logi/reset.css" />
+ <link rel="stylesheet" type="text/css" href="../index.css" />
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
+ <meta name="description" content="Spice up your java" />
+ <title>Project Lombok</title>
+ <!--[if lt IE 7]><script type="text/javascript" src="../logi/iepngfix_tilebg.js"></script><![endif]-->
+</head><body>
+ <a id="forkMe" href="https://github.com/rzwitserloot/lombok"><img style="position: absolute; top: 0; right: 0; border: 0;" src="//s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
+ <div class="meat">
+ <h1><a href="/">Project Lombok</a> - NetBeans instructions</h1>
+ <div id="buttonBar" class="buttonBar">
+ <a class="button" href="../features/index.html">
+ <img src="../icon_overview.png" />
+ <span>Feature Overview</span>
+ </a>
+ <a class="button" href="https://groups.google.com/group/project-lombok">
+ <img src="../icon_discussion.png" />
+ <span>Discuss / Help</span>
+ </a>
+ <a class="button" href="https://wiki.github.com/rzwitserloot/lombok/contributing">
+ <img src="../icon_contribute.png" />
+ <span>Contribute</span>
+ </a>
+ <a class="button" href="https://github.com/rzwitserloot/lombok/issues">
+ <img src="../icon_bugs.png" />
+ <span>Report an issue</span>
+ </a>
+ <div class="downloadContainer">
+ <a class="downloadLink" id="downloadLink" href="../download.html">
+ <img src="../icon_download.png" />
+ <span>Download!</span>
+ </a>
+ <div class="versionInfo">
+ Version: @VERSION@ | <a href="../changelog.html">changelog</a>
+ </div>
+ </div>
+ </div>
+ <div class="downloadHelp">
+ <ol>
+ <li>Add <code>lombok.jar</code> to the project Libraries.</li>
+ <li>In the project Properties, in the section Build &ndash; Compiling, check the &#39;Enable Annotation Processing in Editor&#39; checkbox.</li>
+ </ol>
+ <img src="netbeans-enable-annotation-processing-in-editor.png" />
+ </div>
+ <div class="endBar">
+ </div>
+ <div class="footer">
+ <a href="../credits.html" class="creditsLink">credits</a> | Copyright &copy; 2009-2016 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.
+ </div>
+ </div>
+ <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-9884254-1");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+</body></html>
diff --git a/website-old/setup/pom.xml b/website-old/setup/pom.xml
new file mode 100644
index 00000000..6562afe8
--- /dev/null
+++ b/website-old/setup/pom.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.projectlombok</groupId>
+ <artifactId>eclipse-compiler-test</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <lombok.version>1.16.8</lombok.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${lombok.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.5.1</version>
+ <configuration>
+ <compilerId>eclipse</compilerId>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-compiler-eclipse</artifactId>
+ <version>2.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${lombok.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.10</version>
+ <executions>
+ <execution>
+ <id>get-lombok</id>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${lombok.version}</version>
+ <type>jar</type>
+ <outputDirectory>${project.build.directory}</outputDirectory>
+ <destFileName>lombok.jar</destFileName>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
diff --git a/website-old/unknown_person.gif b/website-old/unknown_person.gif
new file mode 100644
index 00000000..c5ec6b89
--- /dev/null
+++ b/website-old/unknown_person.gif
Binary files differ
diff --git a/website-old/videos/expressInstall.swf b/website-old/videos/expressInstall.swf
new file mode 100644
index 00000000..0fbf8fca
--- /dev/null
+++ b/website-old/videos/expressInstall.swf
Binary files differ
diff --git a/website-old/videos/lombok-iPhone.m4v b/website-old/videos/lombok-iPhone.m4v
new file mode 100644
index 00000000..19487ebd
--- /dev/null
+++ b/website-old/videos/lombok-iPhone.m4v
Binary files differ
diff --git a/website-old/videos/lombok.mp4 b/website-old/videos/lombok.mp4
new file mode 100644
index 00000000..b6f2107b
--- /dev/null
+++ b/website-old/videos/lombok.mp4
Binary files differ
diff --git a/website-old/videos/lombok.ogv b/website-old/videos/lombok.ogv
new file mode 100644
index 00000000..70e20225
--- /dev/null
+++ b/website-old/videos/lombok.ogv
Binary files differ
diff --git a/website-old/videos/player.swf b/website-old/videos/player.swf
new file mode 100644
index 00000000..1f655a26
--- /dev/null
+++ b/website-old/videos/player.swf
Binary files differ
diff --git a/website-old/videos/poster.png b/website-old/videos/poster.png
new file mode 100644
index 00000000..4911408f
--- /dev/null
+++ b/website-old/videos/poster.png
Binary files differ
diff --git a/website-old/videos/swfobject.js b/website-old/videos/swfobject.js
new file mode 100644
index 00000000..8eafe9dd
--- /dev/null
+++ b/website-old/videos/swfobject.js
@@ -0,0 +1,4 @@
+/* SWFObject v2.2 <http://code.google.com/p/swfobject/>
+ is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
+*/
+var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}(); \ No newline at end of file