Git Merging

Another helpful tool in working with Git repositories is the git mergetool command.  This provides you with a graphical interface for merging conflicts.  What's nice about this tool is that you can see all of the differences in the remote file and the local file and you can go through each and choose the change that you want to keep.  Very nice!

Storing JSON in External EhCache Server

If you would like to store JSON data in an external EhCache Server you would need to use either REST or SOAP calls.  The below example uses REST calls and the HTTPBuilder library.  It assumes that you have your EhCache Server running at the following location:
http://localhost:8080/ehcache/rest.

The name of the cache that I'm using in this example is just sampleCache.

def getCachedItem(key) {
    def uri = "http://localhost:8080/ehcache/rest/sampleCache/"
    def restClient = new RESTClient(uri)

    def res
    try {
      res = restClient.get(path:key)
    }
    catch (Exception e) {
      log.error("Error retrieving item from cache for this key: $key")
    }
    
    return res?.data
  }

  def putCachedItem(key, html) {
    def url = "http://localhost:8080/ehcache/rest/sampleCache/"

    try {
      def json = html as grails.converters.JSON

      def http = new HTTPBuilder(url)
      http.request(Method.PUT) { req ->
        uri.path = key
        send('application/json', grails.converters.JSON.parse(json?.toString()))
        
        response.'201' = { resp ->
          log.info("success in adding item to cache: ${resp.status}")
        }

        response.success = { resp, object ->
          log.info("success in adding item to cache: ${resp.status}")
        }

        response.failure = { resp ->
          log.error("error adding item to cache: ${resp.statusLine}")
        }
      }
    }
    catch (Exception e) {
      log.error("Error setting the cache for this key: $key")
    }
  }