diff --git a/qpid/tools/src/java/README-Java-Broker.txt b/qpid/tools/src/java/README-Java-Broker.txt
index fccf19a..992bfbe 100644
--- a/qpid/tools/src/java/README-Java-Broker.txt
+++ b/qpid/tools/src/java/README-Java-Broker.txt
@@ -1,3 +1,23 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
 
 The Qpid Java Broker by default uses either JMX or an HTTP Management GUI & REST API, however by building
 a QMF2 Agent as a Java Broker plugin it's possible to provide better synergy between the C++ and Java Brokers
diff --git a/qpid/tools/src/java/README.txt b/qpid/tools/src/java/README.txt
index 3cd5760..0755dcd 100644
--- a/qpid/tools/src/java/README.txt
+++ b/qpid/tools/src/java/README.txt
@@ -1,3 +1,23 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
 
 This is a Java JMS implementation of the QMF2 API specified at
 https://cwiki.apache.org/qpid/qmfv2-api-proposal.html
diff --git a/qpid/tools/src/java/bin/qpid-web/authentication/account.properties b/qpid/tools/src/java/bin/qpid-web/authentication/account.properties
index 082c50f..ff30bdc 100644
--- a/qpid/tools/src/java/bin/qpid-web/authentication/account.properties
+++ b/qpid/tools/src/java/bin/qpid-web/authentication/account.properties
@@ -1,3 +1,23 @@
 #
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+
 guest=guest
 admin=admin
diff --git a/qpid/tools/src/java/bin/qpid-web/web/index.html b/qpid/tools/src/java/bin/qpid-web/web/index.html
index 7419feb..e21871b 100755
--- a/qpid/tools/src/java/bin/qpid-web/web/index.html
+++ b/qpid/tools/src/java/bin/qpid-web/web/index.html
@@ -1,4 +1,22 @@
 <!DOCTYPE html>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+    http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
 
 <!--
 This page provides a "welcome" page for the Qpid REST Service it immediately redirects to ui/qmf.html
diff --git a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/LICENCE b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/LICENCE
index 9951afb..e69de29 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/LICENCE
+++ b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/LICENCE
@@ -1,29 +0,0 @@
-/*
- * itablet.css
- * itablet-ie9.css
- * itablet-ie8.css
- * itablet-ie7.css
- * itablet-ie6.css
- *
- * Copyright (c) 2013, Fraser Adams
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-
diff --git a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie6.css b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie6.css
index d5bb6e3..343192e 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie6.css
+++ b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie6.css
@@ -1,3 +1,24 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
 /**
  * Stylesheet to try and make things look not *too* bad in IE6 and below. Supporting IE6 really is a nightmare :-(
  */
diff --git a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie7.css b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie7.css
index d7a5b09..d8bd020 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie7.css
+++ b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie7.css
@@ -1,3 +1,24 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
 /**
  * Stylesheet to try and make things look not *too* bad in IE7.
  */
diff --git a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie8.css b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie8.css
index 455a40a..f2cb4d8 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie8.css
+++ b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie8.css
@@ -1,3 +1,24 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
 /**
  * Stylesheet to try and make things look not *too* bad in IE8 and below
  */
diff --git a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie9.css b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie9.css
index 8af2058..3ad8575 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie9.css
+++ b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet-ie9.css
@@ -1,3 +1,24 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
 /**
  * Stylesheet to sort out IE9 specific quirks.......
  */
diff --git a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet.css b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet.css
index 8249863..6ed4d3d 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet.css
+++ b/qpid/tools/src/java/bin/qpid-web/web/itablet/css/itablet.css
@@ -1,3 +1,23 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
 
 body
 {
diff --git a/qpid/tools/src/java/bin/qpid-web/web/itablet/scripts/LICENCE b/qpid/tools/src/java/bin/qpid-web/web/itablet/scripts/LICENCE
index 42cf8a1..7d95218 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/itablet/scripts/LICENCE
+++ b/qpid/tools/src/java/bin/qpid-web/web/itablet/scripts/LICENCE
@@ -1,27 +1,3 @@
-/*
- * itablet.js
- *
- * Copyright (c) 2013, Fraser Adams
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
 
 /*
  * jQuery JavaScript Library v1.7.1
diff --git a/qpid/tools/src/java/bin/qpid-web/web/itablet/scripts/itablet.js b/qpid/tools/src/java/bin/qpid-web/web/itablet/scripts/itablet.js
index cc891d4..c6f84bc 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/itablet/scripts/itablet.js
+++ b/qpid/tools/src/java/bin/qpid-web/web/itablet/scripts/itablet.js
@@ -1,5 +1,25 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
 /**
- * http://www.apache.org/licenses/LICENSE-2.0
  *
  * This library implements a general user interface look and feel similar to a "well know tablet PC" :-)
  * It provides animated page transition eye-candy but is, in essence, really just a fancy tabbed window.
diff --git a/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/LICENCE b/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/LICENCE
index 5d56a81..e69de29 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/LICENCE
+++ b/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/LICENCE
@@ -1,26 +0,0 @@
-/*
- * index.css
- * qmf.css
- *
- * Copyright (c) 2013, Fraser Adams
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-
diff --git a/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/index.css b/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/index.css
index e6baccf..0032bed 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/index.css
+++ b/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/index.css
@@ -1,3 +1,24 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
 html
 {
     background: black;
diff --git a/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/qmf.css b/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/qmf.css
index 918c4b5..11ca7fa 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/qmf.css
+++ b/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/css/qmf.css
@@ -1,3 +1,23 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
 
 a.settings
 {
diff --git a/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/scripts/LICENCE b/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/scripts/LICENCE
index 91c7025..e90b016 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/scripts/LICENCE
+++ b/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/scripts/LICENCE
@@ -1,27 +1,3 @@
-/*
- * qmf-ui.js
- *
- * Copyright (c) 2013, Fraser Adams
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
 
 /*
  * excanvas.js
diff --git a/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/scripts/qmf-ui.js b/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/scripts/qmf-ui.js
index 0c59e12..6ec55cb 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/scripts/qmf-ui.js
+++ b/qpid/tools/src/java/bin/qpid-web/web/qmf-ui/scripts/qmf-ui.js
@@ -1,5 +1,25 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
 /**
- * http://www.apache.org/licenses/LICENSE-2.0
  *
  * This program implements the QMF Console User Interface logic for qmf.html
  *
diff --git a/qpid/tools/src/java/bin/qpid-web/web/ui/config.js b/qpid/tools/src/java/bin/qpid-web/web/ui/config.js
index c847d2e..a37de98 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/ui/config.js
+++ b/qpid/tools/src/java/bin/qpid-web/web/ui/config.js
@@ -1,9 +1,31 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
 /**
  * This file allows the initial set of Console Connections to be configured and delivered to the client.
  * The format is as a JSON array of JSON objects containing a url property and optional name, connectionOptions and
  * disableEvents properties. The connectionOptions property has a value that is itself a JSON object containing
  * the connectionOptions supported by the qpid::messaging API.
  */
+
 /*
 // Example Console Connection Configuration.
 qmfui.Console.consoleConnections = [
diff --git a/qpid/tools/src/java/bin/qpid-web/web/ui/qmf.html b/qpid/tools/src/java/bin/qpid-web/web/ui/qmf.html
index af3e7f1..9709489 100644
--- a/qpid/tools/src/java/bin/qpid-web/web/ui/qmf.html
+++ b/qpid/tools/src/java/bin/qpid-web/web/ui/qmf.html
@@ -1,4 +1,24 @@
 <!DOCTYPE html>
+
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+    http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
 <html>
 <head>
     <title>QMF Console</title>
diff --git a/qpid/tools/src/java/src/restapi/java/org/apache/qpid/restapi/servlet/TODO b/qpid/tools/src/java/src/restapi/java/org/apache/qpid/restapi/servlet/TODO
index 1c3eabc..9da5ee8 100644
--- a/qpid/tools/src/java/src/restapi/java/org/apache/qpid/restapi/servlet/TODO
+++ b/qpid/tools/src/java/src/restapi/java/org/apache/qpid/restapi/servlet/TODO
@@ -1,3 +1,24 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
 The org.apache.qpid.restapi.HttpTransaction and org.apache.qpid.restapi.Server interfaces are intended to
 provide abstractions to the underlying HTTP Server technology and thus should make it fairly easy to do
 a Servlet based implementation without having to rewrite the core REST API code. A Servlet implementation
