Relentless Coding

A Developer’s Blog

  • I Like My Method Pointers With Curry in Groovy

    Invoking a method several times can easily be done in Java in a loop. But what if we have several methods that need to be executed several times? Since Java does not feature pointers to functions, we cannot pass functions around, and cannot create a generic method that takes a pointer to a method and executes it. This is where Groovy shines.

    Read more…
  • How to Ignore an Invalid SSL Certificate in Java

    Sometimes during development it is useful to use a certificate whose CN (Common Name) does not match the host name in the URL, for example localhost. In these cases Java will throw an SSLHandshakeException. How can we easily disable certificate checking for localhost and other domains of our choosing?

    Read more…
  • Creating Custom Intershop ISML Functions With CustomTag

    In this post, I’ll look at leveraging Intershop’s CustomTag to create custom functionality in ISML templates.

    Read more…
  • Java Stateful Sessions or How to Properly Send Cookies With Each Redirect Request

    Sometimes you need to log in to some webpage programmatically. I ran into one of those pages where, when the login succeeds, you’re being redirected to another page, and then to another (something along the lines of ‘Please login’ -> ‘You are successfully logged in’ -> ‘Admin panel’). So I needed to write something that would store the cookies that come along with each response, and send those cookies out with each subsequent request. With curl, I would have used:

    $ curl --location --cookie-jar logincookie 'https://login.securepage.com'
    

    So how can we emulate this behavior in Java?

    Read more…
  • Adding a File to the Root of Your Gradle Distribution

    A while ago, I needed to write a program that retrieved some information from the database by using SQL queries located in files. I wanted to add a file that would contain the settings of the app, like the port, SID, login and password for the database, but also the location of those queries. The problem was I couldn’t add those settings to a file in the standard src/groovy/resources folder, because when creating a distribution with Gradle ./gradlew distZip the file would be part of the jar, and thus it would be difficult to modify the contents. I was basically after a run-control file, a settings file in the root of my distribution, that I could easily change on each run (if necessary).

    Read more…