<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Spackos62-Java Blog &#187; Eclipse</title>
	<atom:link href="http://java.randgestalten.de/index.php/category/eclipse/feed/" rel="self" type="application/rss+xml" />
	<link>http://java.randgestalten.de</link>
	<description>java related stuff</description>
	<lastBuildDate>Fri, 02 Oct 2009 02:08:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Add Copyright to Java Sources</title>
		<link>http://java.randgestalten.de/index.php/2008/10/add-copyright-to-java-sources/</link>
		<comments>http://java.randgestalten.de/index.php/2008/10/add-copyright-to-java-sources/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 20:57:34 +0000</pubDate>
		<dc:creator>Thasso</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[QAlign2]]></category>

		<guid isPermaLink="false">http://java.randgestalten.de/?p=59</guid>
		<description><![CDATA[Just found a nice Eclipse plugin that adds license information to a all the files (well, you can select them) in a project. You can specify the license, enter your own, customize the output &#8230;. nice !
Just reminds me, we had a java class that did that for QAlign 2 Panta Rei source code distribution.
Yeah, [...]]]></description>
			<content:encoded><![CDATA[<p>Just found a <a href="http://www.wdev91.com/?p=cpw_ug">nice Eclipse plugin</a> that adds license information to a all the files (well, you can select them) in a project. You can specify the license, enter your own, customize the output &#8230;. nice !</p>
<p>Just reminds me, we had a java class that did that for <a href="http://gi.cebitec.uni-bielefeld.de/qalign">QAlign 2 Panta Rei</a> source code distribution.</p>
<p>Yeah, <a href="http://java.randgestalten.de/files/AppendDisclaimer.java">there it is</a>, May 21, 2005 written in Michas old apartment in Barcelona while working on QAlign2.</p>
<div id="attachment_60" class="wp-caption aligncenter" style="width: 310px"><a href="http://java.randgestalten.de/wp-content/uploads/2008/10/barca.jpg"><img src="http://java.randgestalten.de/wp-content/uploads/2008/10/barca-300x225.jpg" alt="The QAlign2 crew" title="barca" width="300" height="225" class="size-medium wp-image-60" /></a><p class="wp-caption-text">The QAlign2 crew</p></div>
<p><span id="more-59"></span></p>
<p>And &#8211; do never ever trust Micha when he says that he never copied a &#8220;Start Wars &#8211; Episode I&#8221; script into a static final String variable in one of the source code files <img src='http://java.randgestalten.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre><code>import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.Buffer;
import java.nio.CharBuffer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

/*
 * Created on May 21, 2005
 */

/**
 * Class scans given directory for sourcefiles and appends a disclaimer
 *
 * This is a quick hack version of a good appending methods and it is NOT memory efficient. Thats
 * why "Start Wars - Episode I" will not work as disclaimer. The disclaimer itself should NOT be inlined
 * in sourcecode comment tags, this is done by {@see #readDiscalimer()} (Let it be the pure disclaimer, without any \/* *\/).
 * Also the size of source files is limited to the heap size of the vm. If one uses this with large source
 * or disclaimer files extend the VM max heap size (e.g. -Xmx512m).
 *
 * Remember, the scanFile() method automatically appends "\r\n" to each line while writing the files.
 *
 * parameters
 * -d  The source directory
 * -f  The disclaimer
 * -v &amp;lt;0..2&amp;gt; verbose output
 * @author Thasso
 */
public class AppendDisclaimer {
    /**
     * the input directory
     */
    public static String inputDir = ".";
    /**
     * Filename of the disclaimer
     */
    public static String disclaimerFile = null;
    /**
     * String representation of the disclaimer
     */
    public static String disclaimer;

    /**
     * verbose level
     */
    public static int verbose = 0;

    public static void main(String[] args) {
        if(args.length &amp;lt; 1){
            printUsage();
        }
        // Parse arguments
        for (int i = 0; i &amp;lt; args.length; i++) {
            if(args[i].equalsIgnoreCase("-d")){
                inputDir = args[i+1];
            }
            if(args[i].equalsIgnoreCase("-v")){
                verbose = args[i+1] != null ? Integer.parseInt(args[i+1]):2;
            }
            if(args[i].equalsIgnoreCase("-f")){
                disclaimerFile = args[i+1];
            }
        }
        if(disclaimerFile == null)
            printUsage("Discalimer file not set ! Use -f to define a disclaimer");

        readDiscalimer();        

        // read filelist from directory
        File input = new File(inputDir);
        if(!input.isDirectory() ||!input.canRead()){
            printUsage("Can not read from directory " + input.getAbsolutePath());
        }
        if(verbose &amp;gt; 0)
            System.out.println("Scanning Directory :\n\t"+input.getAbsolutePath());

        List javaFiles = readDirectory(input, ".java");
        //Scan files and append disclaimer
        for (Iterator it = javaFiles.iterator(); it.hasNext();) {
            File f = (File) it.next();
            scanFile(f);
        }
    }

    /**
     * read the disclaimer from file
     */
    private static void readDiscalimer() {
        File f = new File(disclaimerFile);
        StringBuffer d = new StringBuffer();
        if(!f.exists())
            printUsage("Disclaimer " + disclaimerFile + " not found");
        if(!f.canRead())
            printUsage("Disclaimer " + disclaimerFile + " not readable");

        try {
            BufferedReader in = new BufferedReader(new FileReader(f));
            d.append("/*\r\n");
            String l = in.readLine();
            while(l != null){
                d.append(" * "+l+"\r\n");
                l = in.readLine();
            }
            d.append("*/\r\n");
            disclaimer = d.toString();
            in.close();
        } catch (FileNotFoundException e) {
            printUsage("Disclaimer " + disclaimerFile + " not found");
        } catch (IOException e) {
            printUsage("Error while reading from file " + disclaimerFile);
        }
    }

    /**
     * Memory consuming scna file method.
     * Creates a buffer and appends the disclaimer. Than reads the file and appends it to
     * the buffer, line by line, adding \\r\\n to each line.
     * When done, writes out the file with a simple and absolute inefficent buffer.toString() call.
     *
     * @param f
     */
    private static void scanFile(File f){
        BufferedReader in = null;
        StringBuffer content = new StringBuffer();
        content.append(disclaimer+"\r\n"+"\r\n");
        if(verbose &amp;gt; 1)
            System.out.println("Reading file " + f.getName());

        try {
            in = new BufferedReader(new FileReader(f));
            String line = in.readLine();
            while(line != null){
                content.append(line+"\r\n");
                line = in.readLine();
            }
            in.close();
        } catch (FileNotFoundException e) {
            printUsage("File  not found " + f.getName());
        } catch (IOException e) {
            printUsage("Could not read file " + f.getName());
        }finally{
            try {
                in.close();
            } catch (IOException e1) {}
        }
        if(verbose &amp;gt; 1)
            System.out.println("Writing file " + f.getName());

        BufferedWriter w = null;
        try {
            w = new BufferedWriter(new FileWriter(f));
            w.write(content.toString());
            w.close();
        } catch (IOException e) {
            printUsage("Could not write file " + f.getName());
        }finally{
            try {
                w.close();
            } catch (IOException e) {}
        }
    }

    /**
     * Recurcive scan directory for files with given suffix
     *
     * @param dir directory to scan
     * @param suffix files suffix
     */
    protected static List readDirectory(File dir, String suffix) {
        ArrayList files = new ArrayList();
        if(dir.isFile())
            return null;

        if(verbose &amp;gt; 1)
            System.out.println("Scanning Directory :\n\t"+dir.getAbsolutePath());

        File[] all = dir.listFiles();
        ArrayList dirs = new ArrayList();
        for (int i = 0; i &amp;lt; all.length; i++) {
            if(all[i].isFile()){
                if(all[i].getName().endsWith(suffix)){
                    files.add(all[i]);
                }
            }else if(all[i].isDirectory()){
                dirs.add(all[i]);
            }
        }
        for (Iterator it = dirs.iterator(); it.hasNext();) {
            File d = (File) it.next();
            List l = readDirectory(d, suffix);
            files.addAll(l);
        }
        return files;
    }

    /**
     * print string and the usage
     * @param string
     */
    private static void printUsage(String string) {
        System.err.println(string + "\n\n");
        printUsage();
    }

    /**
     * print the usage
     */
    private static void printUsage() {
        System.err.println(""
                +" This is a quick hack version of a good appending methods and it is NOT memory efficient. \r\n"
                + " Thats why "Start Wars - Episode I" will not work as disclaimer.\r\n"
                + " The disclaimer itself should NOT be inlined\r\n"
                + " in sourcecode comment tags, this is done automaticaly (Let it be the pure disclaimer, without any /* */) \r\n"
                + " Also the size of source files is limited to the heap size of the vm. If one uses this with large source\r\n"
                + " or disclaimer files extend the VM max heap size (e.g. -Xmx512m).\r\n"
                + " \r\n"
                + " Remember, the scanFile() method automatically appends "\\r\\n" to each line while writing the files.\r\n"
                + " \r\n"
                + " parameters\r\n"
                + " -d  The source directory\r\n"
                + " -f  The disclaimer\r\n"
                + " -v &amp;lt;0..2&amp;gt; verbose output\r\n"

        );
        System.exit(1);
    }

}
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://java.randgestalten.de/index.php/2008/10/add-copyright-to-java-sources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A simple AbstractBean</title>
		<link>http://java.randgestalten.de/index.php/2008/10/a-simple-abstractbean/</link>
		<comments>http://java.randgestalten.de/index.php/2008/10/a-simple-abstractbean/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 15:02:47 +0000</pubDate>
		<dc:creator>Thasso</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Swing]]></category>
		<category><![CDATA[AbstractBean]]></category>
		<category><![CDATA[bound properties]]></category>
		<category><![CDATA[JavaBeans]]></category>

		<guid isPermaLink="false">http://java.randgestalten.de/?p=26</guid>
		<description><![CDATA[Just in case, here is a simple example of an AbstractBean class that can be used as a base class for JavaBeans if you want to use the Eclipse bouded setter plugin.

public abstract class AbstractBean {
    /**
     * Create a new change support
     */
 [...]]]></description>
			<content:encoded><![CDATA[<p>Just in case, here is a simple example of an AbstractBean class that can be used as a base class for JavaBeans if you want to use the <a href="http://java.randgestalten.de/?p=10">Eclipse bouded setter plugin</a>.</p>
<pre>
<code>public abstract class AbstractBean {
    /**
     * Create a new change support
     */
    protected PropertyChangeSupport change = new EDTSafePropertyChangeSupport(this);

    /**
     * @param listener
     * @see java.beans.PropertyChangeSupport#addPropertyChangeListener(java.beans.PropertyChangeListener)
     */
    public void addPropertyChangeListener(PropertyChangeListener listener) {
        change.addPropertyChangeListener(listener);
    }

    /**
     * @param propertyName
     * @param listener
     * @see java.beans.PropertyChangeSupport#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
     */
    public void addPropertyChangeListener(String propertyName,
            PropertyChangeListener listener) {
        change.addPropertyChangeListener(propertyName, listener);
    }

    /**
     * @param propertyName
     * @param oldValue
     * @param newValue
     * @see java.beans.PropertyChangeSupport#firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object)
     */
    public void firePropertyChange(String propertyName, Object oldValue,
            Object newValue) {
        change.firePropertyChange(propertyName, oldValue, newValue);
    }

    /**
     * @return
     * @see java.beans.PropertyChangeSupport#getPropertyChangeListeners()
     */
    public PropertyChangeListener[] getPropertyChangeListeners() {
        return change.getPropertyChangeListeners();
    }

    /**
     * @param propertyName
     * @return
     * @see java.beans.PropertyChangeSupport#getPropertyChangeListeners(java.lang.String)
     */
    public PropertyChangeListener[] getPropertyChangeListeners(
            String propertyName) {
        return change.getPropertyChangeListeners(propertyName);
    }

    /**
     * @param propertyName
     * @return
     * @see java.beans.PropertyChangeSupport#hasListeners(java.lang.String)
     */
    public boolean hasListeners(String propertyName) {
        return change.hasListeners(propertyName);
    }

    /**
     * @param listener
     * @see java.beans.PropertyChangeSupport#removePropertyChangeListener(java.beans.PropertyChangeListener)
     */
    public void removePropertyChangeListener(PropertyChangeListener listener) {
        change.removePropertyChangeListener(listener);
    }

    /**
     * @param propertyName
     * @param listener
     * @see java.beans.PropertyChangeSupport#removePropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
     */
    public void removePropertyChangeListener(String propertyName,
            PropertyChangeListener listener) {
        change.removePropertyChangeListener(propertyName, listener);
    }

    /**
     * Simply ensures that events are delivered through the event dispatching thread
     *
     */
    class EDTSafePropertyChangeSupport extends PropertyChangeSupport{
        public EDTSafePropertyChangeSupport(Object sourceBean) {
            super(sourceBean);
        }
        @Override
        public void firePropertyChange(final PropertyChangeEvent evt) {
            if(SwingUtilities.isEventDispatchThread()){
                super.firePropertyChange(evt);
            }else{
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        firePropertyChange(evt);
                    }
                });
            }
        }
    }
}</code>
</pre>
<p>This implementation restricts itself to the <em>firePropertyChange(String,Object,Object)</em> method. It also provide a custom extension of PropertyChangeSupport that ensures that events are fired in the EventDispatchingThread.</p>
]]></content:encoded>
			<wfw:commentRss>http://java.randgestalten.de/index.php/2008/10/a-simple-abstractbean/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>generate bounded setters plugin</title>
		<link>http://java.randgestalten.de/index.php/2008/10/generate-bounded-setters-plugin/</link>
		<comments>http://java.randgestalten.de/index.php/2008/10/generate-bounded-setters-plugin/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 17:27:29 +0000</pubDate>
		<dc:creator>Thasso</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[bound properties]]></category>
		<category><![CDATA[JavaBean]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://java.randgestalten.de/?p=10</guid>
		<description><![CDATA[In many cases you need to have bound properties while working with JavaBeans. It might be easy to add PropertyChangeSupport but this does not solve the hassle of modifying your setter methods to fire change events. Of course you can do that with a search and replace pattern, but this is not a very nice [...]]]></description>
			<content:encoded><![CDATA[<p>In many cases you need to have <a title="bound properties" href="http://java.sun.com/docs/books/tutorial/javabeans/properties/bound.html">bound properties</a> while working with JavaBeans. It might be <a href="http://www.weheartcode.com/2008/04/29/easily-add-propertychangesupport-to-beans-in-eclipse/">easy to add PropertyChangeSupport</a> but this does not solve the hassle of modifying your setter methods to fire change events. Of course you can do that with a search and replace pattern, but this is not a very nice and intuitive solution. A better way to address the problem is changing the Eclipse template for setter methods. This works quit well and you can <a href="http://stuffthathappens.com/blog/2007/12/15/javabeans-propertychangesupport-trick/">keep things short</a>, but you will loose the ability to create unbound setter methods. Of course, you can modify the template on a per project bases, but in my case, I always end up in situations where I need both bound and unbound properties.</p>
<p>I searched the net to find an Eclipse plugin that does the job of creating bound properties, but I didn&#8217;t find anything. So&#8230;.I wrote my own plugin. The plugin works with Eclipse Ganymede (&gt;=3.4) and can be installed using this update site:</p>
<p><strong>http://java.randgestalten.de/updatesite</strong></p>
<p>At the moment, the the plugin assumes that your bean provides a<em> firePropertyChange(String, Object, Object)</em> method. Thats one drawback I will try to address in the next version. For the moment, I think a good solution is to provide an AbstractBean class that you extend when you write a JavaBean from scratch ( <a href="http://www.weheartcode.com/2008/04/29/easily-add-propertychangesupport-to-beans-in-eclipse/">here</a> is an example of such class).</p>
<p><a href="http://java.randgestalten.de/wp-content/uploads/2008/09/preferences.jpg"><img class="alignleft size-medium wp-image-16" title="Template-Preferences" src="http://java.randgestalten.de/wp-content/uploads/2008/09/preferences-300x267.jpg" alt="" width="300" height="267" /></a>As long as your class provides a <em>firePropertyChange</em> method, you can use the plugin to generate bounded getter/setter methods. The plugin uses the default template for getter methods and provides a new template for bounded setters. You find the template in the Java-&gt;Editor-&gt;Templates preferences, where you can change it according to your needs.</p>
<p>Using the plugins mechanism to create getter/setter is straight forward, integrated in the &#8220;Source&#8221; menu of the context popup in the java editor as well as the package explorer and outline views. Just start writing your bean, right-click in the editor and select Source-&gt;Generate bounded getters/setters. This will open the same dialog as the default getter/setter generation except that it uses the boundedsetter template to create the setter method.</p>
<div id="attachment_14" class="wp-caption alignright" style="width: 310px"><a href="http://java.randgestalten.de/wp-content/uploads/2008/09/menu.jpg"><img class="size-medium wp-image-14" title="Menu integration" src="http://java.randgestalten.de/wp-content/uploads/2008/09/menu-300x205.jpg" alt="Menu integration" width="300" height="205" /></a><p class="wp-caption-text">Menu integration</p></div>
<p>Beside the integration into the context menu, the plugin also supports quickfix and quickassist. Move your cursor to a variable definition and hit ctrl-1 (or command-1 if you are on a mac) to open the quickfix menu. The plugin integrates a bounded getter/setter generation quickfix that follows the same rules as the default generation behavior. You will see the same dialog except that you will get a bounded setter when you hit the Ok button.</p>
<p>So, as said before, the plugin integrates nicely into the Eclipse mechanism of generating getter/setter methods. You have a custom template just for the bounded setters and all dialogs are basically the same.</p>
<div id="attachment_13" class="wp-caption alignleft" style="width: 310px"><a href="http://java.randgestalten.de/wp-content/uploads/2008/09/quickfix.jpg"><img class="size-medium wp-image-13" title="Quickfix dialog" src="http://java.randgestalten.de/wp-content/uploads/2008/09/quickfix-300x116.jpg" alt="Quickfix Dialog" width="300" height="116" /></a><p class="wp-caption-text">Quickfix Dialog</p></div>
<p>The thing that is missing currently is the automatic generation of the property change support or some delegation methods. This involves more work, because we have to check for existing methods&#8230;create property change support&#8230;.insert delegation methods etc. I will try to build that in the next version, but for the moment you have to provide that by yourself. Either let your Bean extend an AbstractBean implementation that already supports property changes or integrate it directly into the object using PropertyChangeSupport. Keep in mind that plugin currently expects a firePropertyChange(String,Object,Object) method.</p>
<p>EDIT<br />
The plugins source code is available <a href="http://java.randgestalten.de/files/de.randgestalten.simplebeansupport-src-1.0.zip">here</a>.</p>
<p><strong>UPDATE</strong></p>
<p>I just checked, and it seems that the Plugin is also working with Eclipse 3.5 but you have to uncheck the &#8220;Group items by category&#8221; to get the plugins listed.</p>
]]></content:encoded>
			<wfw:commentRss>http://java.randgestalten.de/index.php/2008/10/generate-bounded-setters-plugin/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Package sorter plugin</title>
		<link>http://java.randgestalten.de/index.php/2008/09/package-sorter-plugin/</link>
		<comments>http://java.randgestalten.de/index.php/2008/09/package-sorter-plugin/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 17:26:18 +0000</pubDate>
		<dc:creator>Thasso</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[packagesorter]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://java.randgestalten.de/?p=6</guid>
		<description><![CDATA[ 
While working on EPoS, I found it very confusing that Eclipse does not sort multiple source directories alphabetically. The little PackageSorter plugin helps here and can be used in Eclipse Ganymede (&#62;=3.4). The plugin is available on our update site:
http://java.randgestalten.de/updatesite
Add this site in the Eclipse Software Update dialog and install the Packagesorter plugin. If the plugin [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<div id="attachment_7" class="wp-caption aligncenter" style="width: 287px"><a href="http://java.randgestalten.de/wp-content/uploads/2008/09/packagesorter.jpg"><img class="size-medium wp-image-7" title="packagesorter" src="http://java.randgestalten.de/wp-content/uploads/2008/09/packagesorter-277x300.jpg" alt="Packagesorter in action" width="277" height="300" /></a><p class="wp-caption-text">Packagesorter in action</p></div>
<p>While working on <a title="EPoS" href="http://bio.informatik.uni-jena.de/epos" target="_blank">EPoS</a>, I found it very confusing that Eclipse does not sort multiple source directories alphabetically. The little PackageSorter plugin helps here and can be used in Eclipse Ganymede (&gt;=3.4). The plugin is available on our update site:</p>
<p>http://java.randgestalten.de/updatesite</p>
<p style="text-align: left;">Add this site in the Eclipse Software Update dialog and install the Packagesorter plugin. If the plugin is successfully installed, it provides a button in to top toolbar of the java package explorer. If activated, it will sort your source directories in alphabetic order instead of using the build-path order, which seems to be the default.</p>
<p style="text-align: left;">As long as you only deal with one source directory, you will see no use in this plugin, but when your project consists of multiple source directories, which are all included in the projects build path, this might be helpful.</p>
<p><a href="http://java.randgestalten.de/?p=43">Source code</a> (<a href="http://java.randgestalten.de/files/de.randgestalten.packagesorter-src-1.0.zip">Download</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://java.randgestalten.de/index.php/2008/09/package-sorter-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eclipse Plugins update site</title>
		<link>http://java.randgestalten.de/index.php/2008/09/eclipse-plugins-update-sitethe/</link>
		<comments>http://java.randgestalten.de/index.php/2008/09/eclipse-plugins-update-sitethe/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 16:56:47 +0000</pubDate>
		<dc:creator>Thasso</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://java.randgestalten.de/?p=3</guid>
		<description><![CDATA[I just set up an update site for our tiny eclipse plugins. The update site URL is
http://java.randgestalten.de/updatesite
and it includes the package sorter plugin and the bounded setter generator &#8211; and might include more at some point &#8211; we&#8217;ll see.
]]></description>
			<content:encoded><![CDATA[<p>I just set up an update site for our tiny eclipse plugins. The update site URL is</p>
<p>http://java.randgestalten.de/updatesite</p>
<p>and it includes the package sorter plugin and the bounded setter generator &#8211; and might include more at some point &#8211; we&#8217;ll see.</p>
]]></content:encoded>
			<wfw:commentRss>http://java.randgestalten.de/index.php/2008/09/eclipse-plugins-update-sitethe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
