<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Groovy - Tag - Simon Jakubowski</title><link>https://sijakubo.github.io/info/tags/groovy/</link><description>Groovy - Tag - Simon Jakubowski</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>sijakubo@gmail.com ( Simon Jakubowski)</managingEditor><webMaster>sijakubo@gmail.com ( Simon Jakubowski)</webMaster><lastBuildDate>Wed, 01 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://sijakubo.github.io/info/tags/groovy/" rel="self" type="application/rss+xml"/><item><title>Create Shapefiles from GeoJSON in Java with shapefile-creator</title><link>https://sijakubo.github.io/info/posts/post-13/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><author>sijakubo@gmail.com ( Simon Jakubowski)</author><guid>https://sijakubo.github.io/info/posts/post-13/</guid><description><![CDATA[<p><a href="https://github.com/sijakubo/shapefile-creator">shapefile-creator</a> is a lightweight library that converts GeoJSON into ESRI Shapefiles.</p>
<p>That is especially handy when GeoJSON is the exchange format in your application, but a downstream GIS workflow still expects a Shapefile export.</p>
<p>The key point is: you do not need anything else for that export. No additional GIS server, no heavyweight conversion toolchain, and no external desktop tooling in your application runtime. Just this library.</p>
<p>The library is published on <a href="https://central.sonatype.com/artifact/de.sijakubo/shapefile-creator">Maven Central</a>, so integration into existing Java or Groovy projects is straightforward.</p>]]></description></item><item><title>Groovy 3 Release Note Hightlights</title><link>https://sijakubo.github.io/info/posts/post-3/</link><pubDate>Fri, 09 Jul 2021 00:00:00 +0000</pubDate><author>sijakubo@gmail.com ( Simon Jakubowski)</author><guid>https://sijakubo.github.io/info/posts/post-3/</guid><description><![CDATA[<p>I&rsquo;m a huge Fan of groovy and therefore always excited about new additions and changes to the groovy lang. Therefore, here&rsquo;s a list of my personal highlights of the groovy 3 release.</p>
<p>The complete release-notes can be found here: <a href="https://groovy-lang.org/releasenotes/groovy-3.0.html">Groovy 3 Release Notes</a>:</p>
<h2 id="in-operator"><code>!in</code> Operator</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-groovy" data-lang="groovy"><span class="line"><span class="cl"><span class="mi">4</span> <span class="o">!</span><span class="k">in</span> <span class="o">[</span><span class="mi">5</span><span class="o">,</span> <span class="mi">6</span><span class="o">,</span> <span class="mi">19</span><span class="o">]</span> <span class="c1">// true
</span></span></span></code></pre></div><h2 id="instanceof-operator"><code>!instanceof</code> Operator</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-groovy" data-lang="groovy"><span class="line"><span class="cl"><span class="n">LocalDate</span><span class="o">.</span><span class="na">now</span><span class="o">()</span> <span class="o">!</span><span class="k">instanceof</span> <span class="n">Temporal</span> <span class="c1">// false
</span></span></span><span class="line"><span class="cl"><span class="n">LocalDate</span><span class="o">.</span><span class="na">now</span><span class="o">()</span> <span class="o">!</span><span class="k">instanceof</span> <span class="n">Instant</span> <span class="c1">// true
</span></span></span></code></pre></div><h2 id="-elvis-operator"><code>?=</code> Elvis Operator</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-groovy" data-lang="groovy"><span class="line"><span class="cl"><span class="kt">def</span> <span class="n">last</span> <span class="o">=</span> <span class="kc">null</span>
</span></span><span class="line"><span class="cl"><span class="n">last</span> <span class="o">?=</span> <span class="s1">&#39;Doe&#39;</span>
</span></span><span class="line"><span class="cl"><span class="n">last</span> <span class="o">==</span> <span class="s1">&#39;Doe&#39;</span>
</span></span></code></pre></div><h2 id="-and--identical-operators"><code>===</code> and <code>!==</code> Identical Operators</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-groovy" data-lang="groovy"><span class="line"><span class="cl"><span class="kt">def</span> <span class="n">emp1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Employee</span><span class="o">(</span><span class="nl">name:</span> <span class="s2">&#34;Simon Jakubowski&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="kt">def</span> <span class="n">emp2</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Employee</span><span class="o">(</span><span class="nl">name:</span> <span class="s2">&#34;Simon Jakubowski&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="kt">def</span> <span class="n">emp3</span> <span class="o">=</span> <span class="n">emp1</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">emp1</span> <span class="o">==</span> <span class="n">emp2</span> <span class="c1">// true
</span></span></span><span class="line"><span class="cl"><span class="n">emp1</span> <span class="o">===</span> <span class="n">emp2</span> <span class="c1">// false
</span></span></span><span class="line"><span class="cl"><span class="n">emp1</span> <span class="o">===</span> <span class="n">emp3</span> <span class="c1">// true
</span></span></span></code></pre></div><h2 id="safe-map-list-array-access">safe map, list, array access</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-groovy" data-lang="groovy"><span class="line"><span class="cl"><span class="kt">def</span> <span class="n">emps</span> <span class="o">=</span> <span class="o">[</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;boss&#34;</span>     <span class="o">:</span> <span class="o">[</span><span class="s2">&#34;joe&#34;</span><span class="o">],</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;developer&#34;</span><span class="o">:</span> <span class="o">[</span><span class="s2">&#34;sja&#34;</span><span class="o">,</span> <span class="s2">&#34;sro&#34;</span><span class="o">,</span> <span class="s2">&#34;tti&#34;</span><span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="o">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">emps</span><span class="o">[</span><span class="s2">&#34;boss&#34;</span><span class="o">]</span> <span class="c1">// [&#34;joe&#34;]
</span></span></span><span class="line"><span class="cl"><span class="n">employees</span><span class="o">[</span><span class="s2">&#34;boss&#34;</span><span class="o">]</span> <span class="c1">// throws NPE
</span></span></span><span class="line"><span class="cl"><span class="n">employees</span><span class="o">?[</span><span class="s2">&#34;boss&#34;</span><span class="o">]</span> <span class="c1">// null
</span></span></span></code></pre></div><h2 id="support-for-lambda-expressions--method-references">Support for lambda expressions + Method References</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-groovy" data-lang="groovy"><span class="line"><span class="cl"><span class="o">[</span><span class="s2">&#34;test&#34;</span><span class="o">,</span> <span class="s2">&#34;arba&#34;</span><span class="o">]</span>
</span></span><span class="line"><span class="cl">  <span class="o">.</span><span class="na">stream</span><span class="o">()</span>
</span></span><span class="line"><span class="cl">  <span class="o">.</span><span class="na">map</span><span class="o">(</span><span class="nl">String:</span><span class="o">:</span><span class="n">toUpperCase</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">  <span class="o">.</span><span class="na">collect</span><span class="o">(</span><span class="n">Collectors</span><span class="o">.</span><span class="na">toList</span><span class="o">())</span>
</span></span></code></pre></div><h2 id="reduction-of-the-main-groovy-package">Reduction of the main groovy package</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gradle" data-lang="gradle"><span class="line"><span class="cl"><span class="n">org</span><span class="o">.</span><span class="na">codehaus</span><span class="o">.</span><span class="na">groovy</span><span class="o">:</span><span class="nl">groovy:</span><span class="mf">3.0</span><span class="o">.</span><span class="mi">8</span>
</span></span><span class="line"><span class="cl"><span class="n">org</span><span class="o">.</span><span class="na">codehaus</span><span class="o">.</span><span class="na">groovy</span><span class="o">:</span><span class="n">groovy</span><span class="o">-</span><span class="nl">json:</span><span class="mf">3.0</span><span class="o">.</span><span class="mi">8</span>
</span></span><span class="line"><span class="cl"><span class="o">*</span> <span class="n">groovy</span><span class="o">.</span><span class="na">json</span><span class="o">.</span><span class="na">JsonSlurper</span>
</span></span><span class="line"><span class="cl"><span class="n">org</span><span class="o">.</span><span class="na">codehaus</span><span class="o">.</span><span class="na">groovy</span><span class="o">:</span><span class="n">groovy</span><span class="o">-</span><span class="nl">xml:</span><span class="mf">3.0</span><span class="o">.</span><span class="mi">8</span>
</span></span><span class="line"><span class="cl"><span class="o">*</span> <span class="n">groovy</span><span class="o">.</span><span class="na">xml</span><span class="o">.</span><span class="na">XmlSlurper</span>
</span></span></code></pre></div>]]></description></item></channel></rss>