aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.xml4
-rw-r--r--src/lombok/Cleanup.java2
-rw-r--r--src/lombok/eclipse/handlers/HandleCleanup.java4
-rw-r--r--src/lombok/javac/handlers/HandleCleanup.java2
-rw-r--r--usage_examples/CleanupExample_post.jpage22
-rw-r--r--usage_examples/CleanupExample_pre.jpage15
-rw-r--r--website/clear.gifbin0 -> 43 bytes
-rw-r--r--website/features/Cleanup.html63
-rw-r--r--website/features/Data.html8
-rw-r--r--website/features/GetterSetter.html7
-rw-r--r--website/features/clear.gifbin0 -> 43 bytes
-rw-r--r--website/features/features.css29
-rw-r--r--website/features/index.html8
-rw-r--r--website/index.css5
-rw-r--r--website/index.html4
-rwxr-xr-xwebsite/logi/iepngfix.htc2
16 files changed, 150 insertions, 25 deletions
diff --git a/build.xml b/build.xml
index ec7301b0..ba696723 100644
--- a/build.xml
+++ b/build.xml
@@ -74,11 +74,15 @@
<antcall target="-integrateSnippet">
<param name="transformationName" value="Data" />
</antcall>
+ <antcall target="-integrateSnippet">
+ <param name="transformationName" value="Cleanup" />
+ </antcall>
<mkdir dir="dist" />
<tar destfile="dist/website.tar">
<tarfileset dir="build/website" />
<tarfileset dir="doc/api" prefix="api" />
</tar>
+ <echo>If you want to publish the website to the web, run the website/publish script.</echo>
</target>
<target name="-integrateSnippet">
diff --git a/src/lombok/Cleanup.java b/src/lombok/Cleanup.java
index 7d0fcc3c..ce9e0aa9 100644
--- a/src/lombok/Cleanup.java
+++ b/src/lombok/Cleanup.java
@@ -78,5 +78,5 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.SOURCE)
public @interface Cleanup {
/** The name of the method that cleans up the resource. By default, 'close'. The method must not have any parameters. */
- String cleanupMethod() default "close";
+ String value() default "close";
}
diff --git a/src/lombok/eclipse/handlers/HandleCleanup.java b/src/lombok/eclipse/handlers/HandleCleanup.java
index 29f1ec7c..a256b8e3 100644
--- a/src/lombok/eclipse/handlers/HandleCleanup.java
+++ b/src/lombok/eclipse/handlers/HandleCleanup.java
@@ -51,7 +51,7 @@ import org.mangosdk.spi.ProviderFor;
@ProviderFor(EclipseAnnotationHandler.class)
public class HandleCleanup implements EclipseAnnotationHandler<Cleanup> {
public boolean handle(AnnotationValues<Cleanup> annotation, Annotation ast, Node annotationNode) {
- String cleanupName = annotation.getInstance().cleanupMethod();
+ String cleanupName = annotation.getInstance().value();
if ( cleanupName.length() == 0 ) {
annotationNode.addError("cleanupName cannot be the empty string.");
return true;
@@ -146,7 +146,7 @@ public class HandleCleanup implements EclipseAnnotationHandler<Cleanup> {
unsafeClose.receiver = receiver;
long nameSourcePosition = (long)ast.sourceStart << 32 | ast.sourceEnd;
if ( ast.memberValuePairs() != null ) for ( MemberValuePair pair : ast.memberValuePairs() ) {
- if ( pair.name != null && new String(pair.name).equals("cleanupMethod") ) {
+ if ( pair.name != null && new String(pair.name).equals("value") ) {
nameSourcePosition = (long)pair.value.sourceStart << 32 | pair.value.sourceEnd;
break;
}
diff --git a/src/lombok/javac/handlers/HandleCleanup.java b/src/lombok/javac/handlers/HandleCleanup.java
index 04ed2ed6..7a2f232d 100644
--- a/src/lombok/javac/handlers/HandleCleanup.java
+++ b/src/lombok/javac/handlers/HandleCleanup.java
@@ -53,7 +53,7 @@ import com.sun.tools.javac.util.Name;
@ProviderFor(JavacAnnotationHandler.class)
public class HandleCleanup implements JavacAnnotationHandler<Cleanup> {
@Override public boolean handle(AnnotationValues<Cleanup> annotation, JCAnnotation ast, Node annotationNode) {
- String cleanupName = annotation.getInstance().cleanupMethod();
+ String cleanupName = annotation.getInstance().value();
if ( cleanupName.length() == 0 ) {
annotationNode.addError("cleanupName cannot be the empty string.");
return true;
diff --git a/usage_examples/CleanupExample_post.jpage b/usage_examples/CleanupExample_post.jpage
new file mode 100644
index 00000000..91458459
--- /dev/null
+++ b/usage_examples/CleanupExample_post.jpage
@@ -0,0 +1,22 @@
+import java.io.*;
+
+public class CleanupExample {
+ public static void main(String[] args) throws IOException {
+ InputStream in = new FileInputStream(args[0]);
+ try {
+ OutputStream out = new FileOutputStream(args[1]);
+ try {
+ byte[] b = new byte[10000];
+ while (true) {
+ int r = in.read(b);
+ if (r == -1) break;
+ out.write(b, 0, r);
+ }
+ } finally {
+ out.close();
+ }
+ } finally {
+ in.close();
+ }
+ }
+}
diff --git a/usage_examples/CleanupExample_pre.jpage b/usage_examples/CleanupExample_pre.jpage
new file mode 100644
index 00000000..9f639171
--- /dev/null
+++ b/usage_examples/CleanupExample_pre.jpage
@@ -0,0 +1,15 @@
+import lombok.Cleanup;
+import java.io.*;
+
+public class CleanupExample {
+ public static void main(String[] args) throws IOException {
+ @Cleanup InputStream in = new FileInputStream(args[0]);
+ @Cleanup OutputStream out = new FileOutputStream(args[1]);
+ byte[] b = new byte[10000];
+ while (true) {
+ int r = in.read(b);
+ if (r == -1) break;
+ out.write(b, 0, r);
+ }
+ }
+}
diff --git a/website/clear.gif b/website/clear.gif
new file mode 100644
index 00000000..35d42e80
--- /dev/null
+++ b/website/clear.gif
Binary files differ
diff --git a/website/features/Cleanup.html b/website/features/Cleanup.html
new file mode 100644
index 00000000..582412cd
--- /dev/null
+++ b/website/features/Cleanup.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="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>
+ <!--[if lt IE 7]><script type="text/javascript" src="logi/iepngfix_tilebg.js"></script><![endif]-->
+</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 argument 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">
+ <h3>Small print</h3><div class="smallprint">
+ <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="Data.html">Previous feature (@Data)</a> | <a href="Synchronized.html">Next feature (@Synchronized)</a><br />
+ <span class="copyright">Copyright &copy; 2009 Reinier Zwitserloot and Roel Spilker, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>.</span>
+ </div>
+ <div style="clear: both;"></div>
+ </div>
+</div></body></html>
diff --git a/website/features/Data.html b/website/features/Data.html
index 23f9cea8..0a6246bb 100644
--- a/website/features/Data.html
+++ b/website/features/Data.html
@@ -8,10 +8,12 @@
<title>@Data</title>
<!--[if lt IE 7]><script type="text/javascript" src="logi/iepngfix_tilebg.js"></script><![endif]-->
</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
<div class="meat">
- <div class="minimumHeight"></div>
<div class="header"><a href="../index.html">Project Lombok</a></div>
<h1>@Data</h1>
+ <div class="byline">'struct' for java: Automatically generate <code>toString</code>, <code>hashCode</code>, <code>equals</code>, a constructor, and getters and setters
+ from just the fields in your class.</div>
<div class="overview">
<h3>Overview</h3>
<p>
@@ -71,10 +73,10 @@
</p>
</div>
</div>
- <footer>
+ <div class="footer">
<a href="index.html">Back to features</a> | <a href="GetterSetter.html">Previous feature (@Getter / @Setter)</a> | <a href="Cleanup.html">Next feature (@Cleanup)</a><br />
<span class="copyright">Copyright &copy; 2009 Reinier Zwitserloot and Roel Spilker, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>.</span>
- </footer>
+ </div>
<div style="clear: both;"></div>
</div>
</div></body></html>
diff --git a/website/features/GetterSetter.html b/website/features/GetterSetter.html
index e865cfff..70b60f38 100644
--- a/website/features/GetterSetter.html
+++ b/website/features/GetterSetter.html
@@ -8,10 +8,11 @@
<title>@Getter and @Setter</title>
<!--[if lt IE 7]><script type="text/javascript" src="logi/iepngfix_tilebg.js"></script><![endif]-->
</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
<div class="meat">
- <div class="minimumHeight"></div>
<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>
@@ -51,10 +52,10 @@
</p>
</div>
</div>
- <footer>
+ <div class="footer">
<a href="index.html">Back to features</a> | <span class="disabled">Previous feature</span> | <a href="Data.html">Next feature (@Data)</a><br />
<span class="copyright">Copyright &copy; 2009 Reinier Zwitserloot and Roel Spilker, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>.</span>
- </footer>
+ </div>
<div style="clear: both;"></div>
</div>
</div></body></html>
diff --git a/website/features/clear.gif b/website/features/clear.gif
new file mode 100644
index 00000000..35d42e80
--- /dev/null
+++ b/website/features/clear.gif
Binary files differ
diff --git a/website/features/features.css b/website/features/features.css
index f2eff7fc..7edaf769 100644
--- a/website/features/features.css
+++ b/website/features/features.css
@@ -12,6 +12,10 @@ body {
background-position: 50px 20px;
}
+* html #pepper {
+ background: none;
+}
+
.meat {
padding: 0px 48px;
}
@@ -22,20 +26,33 @@ body {
left: 30px;
}
-.meat .minimumHeight {
+.minimumHeight {
height: 700px;
- width: 5px;
+ 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: 64px 0px 32px 64px;
+ margin: 48px 0px 32px 64px;
}
.index dt {
@@ -101,7 +118,7 @@ h1 {
display: none;
}
-footer {
+.footer {
clear: left;
margin: 0 auto 0 auto;
padding: 16px 0 16px 0;
@@ -109,11 +126,11 @@ footer {
text-align: center;
}
-footer .disabled {
+.footer .disabled {
color: #aaa;
}
-footer .copyright {
+.footer .copyright {
color: #555;
font-size: 11px;
font-style: italic;
diff --git a/website/features/index.html b/website/features/index.html
index c270f4e3..f7851972 100644
--- a/website/features/index.html
+++ b/website/features/index.html
@@ -6,10 +6,10 @@
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
<meta name="description" content="Spice up your java" />
<title>Lombok feature overview</title>
- <!--[if lt IE 7]><script type="text/javascript" src="logi/iepngfix_tilebg.js"></script><![endif]-->
+ <!--[if lt IE 7]><script type="text/javascript" src="../logi/iepngfix_tilebg.js"></script><![endif]-->
</head><body><div id="pepper">
+ <div class="minimumHeight"></div>
<div class="meat">
- <div class="minimumHeight"></div>
<div class="header"><a href="../index.html">Project Lombok</a></div>
<h1>Lombok features</h1>
<div class="index overview">
@@ -27,9 +27,9 @@
<dd>To boldly throw checked exceptions where no one has thrown them before!</dd>
</dl>
</div>
- <footer>
+ <div class="footer">
<span class="copyright">Copyright &copy; 2009 Reinier Zwitserloot and Roel Spilker, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>.</span>
- </footer>
+ </div>
<div style="clear: both;"></div>
</div>
</div></body></html>
diff --git a/website/index.css b/website/index.css
index 884a13dc..e0a1e428 100644
--- a/website/index.css
+++ b/website/index.css
@@ -8,7 +8,8 @@ body {
}
h1 {
- margin: 8px 0 16px 0;
+ padding: 8px 0 10px 0;
+ font-size: 20px;
width: 100%;
text-align: center;
}
@@ -120,7 +121,7 @@ code {
background-color: #888;
}
-footer {
+.footer {
margin-top: 8px;
display: block;
color: #555;
diff --git a/website/index.html b/website/index.html
index a1f98be9..dec0c7b5 100644
--- a/website/index.html
+++ b/website/index.html
@@ -48,8 +48,8 @@
<div class="endBar">
<a href="slideshow.html">I don't want to see a video - show me a slideshow instead!</a>
</div>
- <footer>
+ <div class="footer">
Copyright &copy; 2009 Reinier Zwitserloot and Roel Spilker, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>.
- </footer>
+ </div>
</div>
</body></html>
diff --git a/website/logi/iepngfix.htc b/website/logi/iepngfix.htc
index 7ca4dbe9..bbfb23c5 100755
--- a/website/logi/iepngfix.htc
+++ b/website/logi/iepngfix.htc
@@ -13,7 +13,7 @@ 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 = 'logi-img/clear.gif';
+IEPNGFix.blankImg = 'clear.gif';
IEPNGFix.fix = function(elm, src, t) {