Atlassian News
 
 

Welcome to our August Issue

The newsletter is early this month because we had some unusually good news to report — Cenqua team and products join Atlassian! Additional reading in this issue includes Bamboo security architecture, an OSGi plugin for Struts 2 and more. Happy reading!

 

Welcome, Cenqua

Atlassian acquires Cenqua
We recently put out an announcement on BusinessWire that Cenqua and Atlassian are teaming up. More technically, Atlassian has acquired Cenqua. Now you can purchase FishEye, Crucible and Clover on www.atlassian.com.

We're really excited, not only because we've gained three fantastic products — products that assist us with our own software development — but also because almost the entire Cenqua team has moved into our new Sydney offices to continue developing and supporting their software. We've known the Cenqua guys for a long time, and on both a personal and professional level they're top notch. They've made some truly great products; by great we mean products that developers use because they add utility and value without creating more work.

Read the details of the deal. Over the next few weeks and months, more content from the Cenqua website, including product documentation, will be ported over to the Atlassian site. In the meantime, please let us know what you think or if you have any questions.

 

Bamboo 1.2 and Acegi Security

In Bamboo 1.2, we introduced plan level permissions as a major feature. Already with an Acegi Security framework in place, we figured it was a natural extension to build our permissions framework on top of Acegi.

Bamboo Security Architecture
There are really two sides to security in Bamboo (or any other application for that matter):

  1. Authentication: verifying that the user is valid.
  2. Authorisation: verifying that the user has the appropriate rights to perform an action (which includes accessing some information).
This article discusses how we have extended Bamboo's security framework for our purposes.

Continue reading

 

OSGi Plugin for Struts 2: Lessons from Confluence

Struts 2.0 Confluence and JIRA have a great plugin system at their core that allows you to install collections of actions, Spring beans (Confluence), jobs, etc. as discrete plugins. Confluence supports hot-deploying these plugins so they can be added, removed or upgraded without bringing down the application. This capability is so powerful that internally we are moving more and more functionality into plugins as a way to organise our codebase and to keep it tightly focused and agile.

Wanting this same functionality in Struts 2, but enhanced to support versioned transitive plugin dependencies (plugin A uses services from plugin B which uses services from plugin C) that are automatically resolved and verified at runtime, I wrote the first cut at an OSGi plugin for Struts 2. This plugin allows you to group your actions and services into different jars, namely OSGi bundles.

Continue reading

 

response.sendError() vs response.setStatus()

Confluence has a nifty feature in that if you go to a page that does not exist, Confluence will check the database to see if there might be some obvious pages you might want to see instead. These include, for example, pages with the same name in a different space, pages that used to be called by that name but have since been renamed, or pages that start with the name you entered (in case the name was truncated when someone sent you the URL).

To stay good Internet citizens, this page is still served with a 404 HTTP status code. This way robots, caches and the like know there isn't really a page at that URL. Well, this feature has been broken on Atlassian's extranet for a while. If you go to a page that should return a redirect, you just get the generic error page instead. (CONF-8766)

Continue reading

 

DateFormat Objects and Thread-Safety

One of my daily responsibilities is to look over the code that is checked into our JIRA source base. I look at every commit and check for any obvious mistakes, typos or things that can be instantly improved. I recently blogged internally about some minor findings. Some of these were not recent mistakes, rather the code that I recently touched (as part of changing some other parts in JIRA), the old code that exposed some of the caveats of Java that still live inside JIRA source base.

I received a very positive feedback to my post. This blog post also sparked a discussion between developers (including developers from other teams). I would like to sum this discussion up and share it with you.

In my post I suggested to use DateFormat class only locally. The reason behind it is that the implementation of DateFormat class is not thread-safe. As its JavaDoc states:

"Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally."
The problem with this class is that it has a state and if you have two or more threads calling methods on the same instance, you could get results you would not expect.

Continue reading

 

Terence Parr on ANTLR presentation

Last month, Atlassian hosted Sydney's Java User Group meeting at our new offices in Sussex St. We were lucky enough to see a presentation by Terence Parr, the author of Antlr, a well-known tool for language parsing, compiling and much more. Watch the presentation:

Continue reading

 

Making News

In addition to the big Cenqua acquisition, we have some smaller headlines:

Atlassian T-Shirts
Atlassian is selling what?! Yup, t-shirts and more. Read on or go right ahead and browse our Atlassian Gear storefront.

User Groups
Join in the fun by attending an Atlassian User Group event:

Java User Groups
Looking for a sponsor for your JUG? Give us a shout!

 

Fix your Builds, the Easy Way!

Bamboo

Like the JIRA team, the Confluence team has a screen set up in the corner of the office so we can all keep an eye on the health of our Bamboo builds.

Unfortunately we broke a lot of tests the other week, after a few major dependency updates. Since then we've been having a nightmare of a time getting all of the builds to stay green. Lateral thinking to the rescue!

 

Our Reading List

Here are some blogs and sites we've been tagging on our company del.icio.us feed:

 

Wikipatterns.com reaches a milestone

Wikipatterns.comThe Wikipatterns.com community has grown to 500 registered users!

To all those who have built the site into what it is today, a heartfelt thanks! You are building something of immeasurable value to all wiki users.

 

 
 

Other ways to keep on top of what's happening at Atlassian:
Read or subscribe to our blogs
See what everyone's talking about on the Atlassian product forums
Tell your mates about this newsletter
Get a job with us