Spring Boot and CORS

Spring Boot has had support for enabling CORS in REST controllers since version 1.3.  The @CrossOrigin annotation is straightforward to apply at the method or type level to enable cross origin requests: Testing with cURL cURL is an obvious choice for testing CORS with Spring Boot RESTful API endpoints. results in the following output: Changing Read More …

Algorithm Problem: Houses

This is an interesting maximization problem that can be solved efficiently, in O(n) time, using dynamic programming. You’re given a list of houses, each with a money value assigned to it. The problem is to choose houses from the list so as to maximize the total money from them, but no two houses chosen can Read More …

Multihomed Hosts and Java RMI

It can be challenging to get Java RMI communication working right between components on multihomed hosts. To see why, it’s important to understand how RMI determines the server hostname, which ultimately ends up being passed around in RMI stubs. If a client uses an RMI stub to make a remote method call and can’t connect Read More …

XPath for Namespaces

Today I was confronted with the problem of obtaining a list of all namespace attributes for a given XML document. I found that it’s possible to achieve this quickly using the XPath expression //namespace::*, which leverages the namespace axis defined in the XPath 1.0 specification. I’m using Xalan bundled with Sun JDK 1.6, and so Read More …

Downloading JDK 1.5?

It’s more difficult to download Sun’s JDK 1.5 now (version 1.5.0_22 to be precise as I write this) that the company has officially announced its end-of-life.  Downloading it by following the normal path on Sun’s website will land you at a registration form explaining that “Sun offers Java SE for Business, a service offering that provides Read More …

XPath Performance

XPath is usually the perfect language, providing a simple and elegant way to compute values from the content of an XML document. For example, say that you want to count the number of elements. The XPath 1.0 query for this is about as concise as it gets: 1 XPathFactory xPathFactory = XPathFactory.newInstance(); 2 XPath xPath Read More …

Something You Didn’t Know About Generics

Before the introduction of Generics in Java 5 it’s commonly known that in a class you can’t have two methods with the same signature that differ by return type alone.  More formally, the Java Language Specification §8.4.2 says that “it is a compile time error to declare two methods with override-equivalent signatures in a class”.  Take Read More …