unicorn commit: merge

changeset:   1288:ca6de4d06520
tag:         tip
parent:      1287:8e10744fd54e
parent:      1286:31dc84cc1a06
user:        Jean-Guilhem Rouel <jean-gui@w3.org>
date:        Tue Jun 22 14:22:02 2010 +0200
files:       WebContent/WEB-INF/lib/commons-collections-3.2.1.jar WebContent/WEB-INF/lib/commons-fileupload-1.2.1.jar WebContent/WEB-INF/lib/commons-io-1.4.jar WebContent/WEB-INF/lib/commons-lang-2.5.jar WebContent/WEB-INF/lib/commons-logging-1.1.1.jar WebContent/WEB-INF/lib/compactor.jar WebContent/WEB-INF/lib/icu4j-4_4.jar WebContent/WEB-INF/lib/log4j-1.2.16.jar WebContent/WEB-INF/lib/mail.jar WebContent/WEB-INF/lib/resolver.jar WebContent/WEB-INF/lib/slf4j-api-1.6.0.jar WebContent/WEB-INF/lib/slf4j-log4j12-1.6.0.jar WebContent/WEB-INF/lib/unicorn-response.jar WebContent/WEB-INF/lib/unicorn-tasklist.jar WebContent/WEB-INF/lib/velocity-1.6.4.jar WebContent/WEB-INF/lib/velocity-tools-2.0.jar WebContent/WEB-INF/lib/xbean.jar WebContent/WEB-INF/lib/xbean_xpath.jar WebContent/WEB-INF/lib/xmlbeans-qname.jar WebContent/WEB-INF/lib/xmlpublic.jar WebContent/WEB-INF/uploaded-files/README WebContent/scripts/w3c_unicorn_index-yc.js WebContent/scripts/w3c_unicorn_languages-yc.js WebContent/scripts/w3c_unicorn_results-c.js WebContent/style/base_ucn-yc.css WebContent/temporary_files/README lib/yuicompressor-2.4.2.jar
description:
merge


diff -r 8e10744fd54e -r ca6de4d06520 .hgignore
--- a/.hgignore	Tue Jun 22 14:21:08 2010 +0200
+++ b/.hgignore	Tue Jun 22 14:22:02 2010 +0200
@@ -1,6 +1,7 @@
 syntax: glob
 dist/
 build/
+lib/
 .settings/
 .classpath
 .project
\ No newline at end of file
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/conf/messages.properties.default
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebContent/WEB-INF/conf/messages.properties.default	Tue Jun 22 14:22:02 2010 +0200
@@ -0,0 +1,10 @@
+# Use this file to add default messages to unicorn.
+# Syntax is:
+# (messageId).level = {info|error|warning}
+# (messageId).message = This is the message
+# (messageId).content = Additional content of the message, hidden by default (optional)
+#
+#dev.level   = warning
+#dev.message = This instance of Unicorn is a development version used for testing purposes. There is not yet any production instance of Unicorn. \
+#	You can test it and <a href="http://code.w3.org/unicorn">send us your feedback and ideas</a>, \
+#	or <a href="http://code.w3.org/unicorn">download the source code</a>.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/conf/unicorn.properties.default
--- a/WebContent/WEB-INF/conf/unicorn.properties.default	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/conf/unicorn.properties.default	Tue Jun 22 14:22:02 2010 +0200
@@ -9,7 +9,6 @@
 
 SHOW_LANGUAGE_UNAVAILABLE_MESSAGE = true
 
-USE_HTML_COMPACTOR = false
 ACCEPT_LOCAL_ADDRESSES = false
 
 DOCUMENT_CONNECT_TIMEOUT = 5000
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/de.properties
--- a/WebContent/WEB-INF/languages/de.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/de.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_not_found_mime_type=Der MIME-Type deines Dokuments konnte nicht herausgefunden werden.
 message_nothing_to_validate=Es wurde kein Dokument übermittelt.
 message_observer_connect_exception="%1" ist nicht erreichbar.
-message_observer_internal_error="%1" hat einen internen Fehler gemeldet.
+message_observer_internal_error="%1" hat einen internen Fehler gemeldet. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=Die Anfrage nach "%1" endete in einem <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">404 (Not Found) HTTP Fehler</a>.
 message_observer_read_timeout="%1" hat nicht rechtzeitig geantwortet.
 message_response_invalid_schema="%1" benutzt ein nicht unterstütztes Format für die Antwort.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/en.properties
--- a/WebContent/WEB-INF/languages/en.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/en.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -52,7 +52,7 @@
 message_nothing_to_validate=No document has been submitted.
 message_no_uploaded_file=You must upload a file.
 message_observer_connect_exception="%1" is unreachable.
-message_observer_internal_error="%1" reported an internal error.
+message_observer_internal_error="%1" reported an internal error. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=The request to "%1" resulted in a <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 (Not Found) HTTP error</a>.
 message_observer_read_timeout="%1" didn't return a response in time.
 message_response_invalid_schema="%1" used an unsupported response format.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/es.properties
--- a/WebContent/WEB-INF/languages/es.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/es.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_not_found_mime_type=El tipo MIME de su documento no ha podido ser identificado.
 message_nothing_to_validate=No se ha enviado ningún documento.
 message_observer_connect_exception=No se ha podido acceder al validador "%1".
-message_observer_internal_error=El validador "%1" informó de un error interno.
+message_observer_internal_error=El validador "%1" informó de un error interno. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=La petición "%1" para el validador resultó en un <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">error HTTPb404 (No encontrado)</a>.
 message_observer_read_timeout=Unicorn no recibió a tiempo una respuesta desde "%1"
 message_response_invalid_schema=Unicorn y "%1" no hablan el mismo idioma
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/fr.properties
--- a/WebContent/WEB-INF/languages/fr.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/fr.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -52,8 +52,8 @@
 message_not_found_mime_type=Le mime-type de votre document n'a pas été trouvé.
 message_nothing_to_validate=Aucun document n'a été soumis.
 message_observer_connect_exception="%1" est injoignable.
-message_observer_internal_error="%1" a rapporté une erreur interne.
-message_observer_not_found=La requête à "%1" a renvoyé une <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">erreur HTTP 404 (Not Found)</a>.
+message_observer_internal_error="%1" a rapporté une erreur interne. <a href="%2">${direct_link_label}</a>.
+message_observer_not_found=La requête à "%1" a renvoyé une <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">erreur HTTP 404 (Not Found)</a>. <a href="%2">${direct_link_label}</a>.
 message_observer_read_timeout=Unicorn n'a pas obtenu de réponse de "%1" à temps.
 message_response_invalid_schema="%1" utilise un format de réponse non conforme à Unicorn.
 message_response_validation_error="%1" a retourné une réponse invalide.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/hu.properties
--- a/WebContent/WEB-INF/languages/hu.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/hu.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_not_found_mime_type=Nem sikerült a dokumentum MIME típusát meghatározni\!
 message_nothing_to_validate=Nem lett elküldve dokumentum\!
 message_observer_connect_exception="%1" elérhetetlen\!
-message_observer_internal_error="%1" belső hibát jelzett\!
+message_observer_internal_error="%1" belső hibát jelzett\! <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=A kérés "%1" címhez <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">404 (Nem található) HTTP hibát</a> eredményezett.
 message_observer_read_timeout="%1" nem reagált a válaszidőn belül\!
 message_response_invalid_schema="%1" válaszának formátuma nem támogatott\!
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/id.properties
--- a/WebContent/WEB-INF/languages/id.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/id.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_not_found_mime_type=Mime-type dokumen anda tidak bisa dideteksi.
 message_nothing_to_validate=Tidak ada dokumen yang dikirim.
 message_observer_connect_exception="%1" tidak tercapai.
-message_observer_internal_error="%1" mengalami galat internal.
+message_observer_internal_error="%1" mengalami galat internal. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=Permintaan "%1" menghasilkan <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">Galat HTTP 404 (Tidak Ditemukan)</a>.
 message_observer_read_timeout="%1" tidak ada respon.
 message_response_invalid_schema="%1" memakai format yang tidak didukung.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/it.properties
--- a/WebContent/WEB-INF/languages/it.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/it.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_not_found_mime_type=Non è stato possibile capire il mime-type del tuo documento.
 message_nothing_to_validate=Nessun documento è stato inviato.
 message_observer_connect_exception=L' osservatore "%1" non è raggiungibile.
-message_observer_internal_error=L' osservatore "%1" ha riportato un errore interno.
+message_observer_internal_error=L' osservatore "%1" ha riportato un errore interno. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=La richiesta all' osservatore "%1" è terminata con un <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">404 (Non Trovato) errore HTTP</a>.
 message_observer_read_timeout="%1" non ha inviato una risposta in tempo.
 message_response_invalid_schema="%1" ha utilizzato un formato di risposta non supportato.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/ja.properties
--- a/WebContent/WEB-INF/languages/ja.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/ja.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -48,7 +48,7 @@
 message_not_found_mime_type=文書のmime-typeを推測することができませんでした。
 message_nothing_to_validate=文書が送信されていません。
 message_observer_connect_exception=「%1」は到達不可能です。
-message_observer_internal_error=「%1」が内部エラーを報告しました。
+message_observer_internal_error=「%1」が内部エラーを報告しました。 <a href="%2">${direct_link_label}</a>。
 message_observer_not_found=「%1」に対する要求の結果は<a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">404 (Not Found) HTTPエラー</a>になりました。
 message_observer_read_timeout=「%1」が時間内に応答しませんでした。
 message_response_invalid_schema=「%1」は対応していない形式の応答を利用しています。
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/ko.properties
--- a/WebContent/WEB-INF/languages/ko.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/ko.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_nothing_to_validate=제출한 문서가 없습니다.
 message_no_uploaded_file=파일을 반드시 업로드해야 합니다.
 message_observer_connect_exception="%1" is unreachable.
-message_observer_internal_error="%1"이 내부 에러가 발생했습니다.
+message_observer_internal_error="%1"이 내부 에러가 발생했습니다. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found="%1"에 대한 요청은 <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">404 HTTP 에러</a>를 발생했습니다.
 message_observer_read_timeout=현재 "%1"이 응답하지 않습니다.
 message_response_invalid_schema="%1"이 지원하지 않는 형식으로 응답합니다.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/nb.properties
--- a/WebContent/WEB-INF/languages/nb.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/nb.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_not_found_mime_type=Dokumentets mime-type lot seg ikke utlede.
 message_nothing_to_validate=Ingen dokument ble lagt inn.
 message_observer_connect_exception="%1" lot seg ikke kontakte.
-message_observer_internal_error="%1" rapporterte en intern feil.
+message_observer_internal_error="%1" rapporterte en intern feil. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=Henvendelsen til "%1" resulterte i en feil\: <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">404 (Not Found) HTTP error</a>.
 message_observer_read_timeout="%1" ga ikke svar i tide.
 message_response_invalid_schema="%1" brukte et responsformat det ikke er støtte for.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/nl.properties
--- a/WebContent/WEB-INF/languages/nl.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/nl.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_not_found_mime_type=Het MIME-type van uw document kon niet worden bepaald.
 message_nothing_to_validate=Er is geen document opgegeven.
 message_observer_connect_exception=De Observer "%1" is onbereikbaar.
-message_observer_internal_error=De Observer "%1" rapporteerde een interne fout.
+message_observer_internal_error=De Observer "%1" rapporteerde een interne fout. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=Het verzoek aan de Observer "%1" resulteerde in een <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">HTTP-foutmelding 404 (“niet gevonden”)</a>.
 message_observer_read_timeout="%1" gaf niet op tijd antwoord.
 message_response_invalid_schema="%1" gebruikt een niet-ondersteund antwoordformaat.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/pl.properties
--- a/WebContent/WEB-INF/languages/pl.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/pl.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_not_found_mime_type=Próba odgadnięcia typu mime dokumentu nie powiodła się.
 message_nothing_to_validate=Nie przekazano żadnego dokumentu.
 message_observer_connect_exception="%1" jest nieosiągalny.
-message_observer_internal_error="%1" zwrócił błąd wewnętrzny.
+message_observer_internal_error="%1" zwrócił błąd wewnętrzny. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=Zapytanie do "%1" zwróciło <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">bład 404 (nie znaleziono)</a>.
 message_observer_read_timeout="%1" nie odpowiedział przed upływem wyznaczonego czasu.
 message_response_invalid_schema="%1" zwrócił odpowiedź w nieobsługiwanym formacie.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/ru.properties
--- a/WebContent/WEB-INF/languages/ru.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/ru.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_not_found_mime_type=Не получилось определить mime-тип вашего документа.
 message_nothing_to_validate=Документ не был отправлен.
 message_observer_connect_exception=«%1» недоступен.
-message_observer_internal_error=«%1» сообщил о внутренней ошибке.
+message_observer_internal_error=«%1» сообщил о внутренней ошибке. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=Запрос к «%1» вернул <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">HTTP-ошибку 404 (Not Found)</a>.
 message_observer_read_timeout=«%1» не вернул ответ вовремя.
 message_response_invalid_schema=«%1» использует неподдерживаемый формат ответа.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/sv.properties
--- a/WebContent/WEB-INF/languages/sv.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/sv.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -51,7 +51,7 @@
 message_not_found_mime_type=Ditt dokuments MIME-typ kunde inte fastställas.
 message_nothing_to_validate=Inget dokument har skickats.
 message_observer_connect_exception="%1" går inte att nå.
-message_observer_internal_error="%1" rapporterade ett internet fel.
+message_observer_internal_error="%1" rapporterade ett internet fel. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=Hämtningen av "%1" resulterade i ett <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">404 (Hittades ej) HTTP fel</a>.
 message_observer_read_timeout="%1" svarade inte i tid.
 message_response_invalid_schema="%1" svarade med ett format som inte stödjs.
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/te.properties
--- a/WebContent/WEB-INF/languages/te.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/te.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -25,7 +25,7 @@
 message_no_observation_done=చూపించడానికి ఫలితం లేదు.
 message_no_uploaded_file=మీరు తప్పనిసరిగా దస్త్రాన్ని ఎక్కించాలి.
 message_observer_connect_exception="%1" అందుబాటులో లేదు.
-message_observer_internal_error="%1" అంతర్గత పొరపాటుని నివేదించింది.
+message_observer_internal_error="%1" అంతర్గత పొరపాటుని నివేదించింది. <a href="%2">${direct_link_label}</a>.
 message_translation=మీ మాతృభాష లోనికి <a href\="./translations%2">యూనికార్న్‌ని అనువదించడానికి</a> మాకు సహాయపడండి.
 message_unavailable_language=మీ ప్రాథాన్య భాష (%1) లో యూనికార్న్ అందుబాటులో లేదు. ${message_translation}
 message_unavailable_requested_language=మీరు అభ్యర్థించిన బాష (%1) లో యూనికార్న్ అందుబాటులో లేదు. ${message_translation}
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/languages/th.properties
--- a/WebContent/WEB-INF/languages/th.properties	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/languages/th.properties	Tue Jun 22 14:22:02 2010 +0200
@@ -52,7 +52,7 @@
 message_not_found_mime_type=mime-type ของเอกสารท่านไม่สามารถระบุได้
 message_nothing_to_validate=ยังไม่ได้ทำการส่งเอกสารเพื่อตรวจสอบ
 message_observer_connect_exception="%1" ไม่สามารถเชื่อมต่อได้
-message_observer_internal_error="%1" พบความผิดพลาดภายใน
+message_observer_internal_error="%1" พบความผิดพลาดภายใน. <a href="%2">${direct_link_label}</a>.
 message_observer_not_found=คำร้องขอต่อเอกสาร "%1" <a href\="http\://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\#sec10.4.5">เกิดข้อผิดพลาด HTTP 404 (ไม่พบหน้าที่ต้องการ) </a>.
 message_observer_read_timeout="%1" ไม่ตอบสนองภายในเวลาที่เหมาะสม
 message_response_invalid_schema="%1" ใช้รูปแบบการตอบสนองที่ไม่รองรับ
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/commons-collections-3.2.1.jar
Binary file WebContent/WEB-INF/lib/commons-collections-3.2.1.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/commons-fileupload-1.2.1.jar
Binary file WebContent/WEB-INF/lib/commons-fileupload-1.2.1.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/commons-io-1.4.jar
Binary file WebContent/WEB-INF/lib/commons-io-1.4.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/commons-lang-2.5.jar
Binary file WebContent/WEB-INF/lib/commons-lang-2.5.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/commons-logging-1.1.1.jar
Binary file WebContent/WEB-INF/lib/commons-logging-1.1.1.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/compactor.jar
Binary file WebContent/WEB-INF/lib/compactor.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/icu4j-4_4.jar
Binary file WebContent/WEB-INF/lib/icu4j-4_4.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/icu4j-4_4_1.jar
Binary file WebContent/WEB-INF/lib/icu4j-4_4_1.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/log4j-1.2.16.jar
Binary file WebContent/WEB-INF/lib/log4j-1.2.16.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/mail.jar
Binary file WebContent/WEB-INF/lib/mail.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/resolver.jar
Binary file WebContent/WEB-INF/lib/resolver.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/slf4j-api-1.6.0.jar
Binary file WebContent/WEB-INF/lib/slf4j-api-1.6.0.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/slf4j-log4j12-1.6.0.jar
Binary file WebContent/WEB-INF/lib/slf4j-log4j12-1.6.0.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/unicorn-response.jar
Binary file WebContent/WEB-INF/lib/unicorn-response.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/unicorn-tasklist.jar
Binary file WebContent/WEB-INF/lib/unicorn-tasklist.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/velocity-1.6.4.jar
Binary file WebContent/WEB-INF/lib/velocity-1.6.4.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/velocity-tools-2.0.jar
Binary file WebContent/WEB-INF/lib/velocity-tools-2.0.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/xbean.jar
Binary file WebContent/WEB-INF/lib/xbean.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/xbean_xpath.jar
Binary file WebContent/WEB-INF/lib/xbean_xpath.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/xmlbeans-qname.jar
Binary file WebContent/WEB-INF/lib/xmlbeans-qname.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/lib/xmlpublic.jar
Binary file WebContent/WEB-INF/lib/xmlpublic.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/resources/templates/includes/footer.vm
--- a/WebContent/WEB-INF/resources/templates/includes/footer.vm	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/resources/templates/includes/footer.vm	Tue Jun 22 14:22:02 2010 +0200
@@ -29,7 +29,7 @@
 			</a>
 		</p>
 		<p class="copyright" #if($lang!="en")xml:lang="en" lang="en"#end #if($direction!="ltr")dir="ltr"#end>
-			<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 1994-2009
+			<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 1994-${year}
 			<a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a>&reg;
 
 			(<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/resources/templates/index.vm
--- a/WebContent/WEB-INF/resources/templates/index.vm	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/resources/templates/index.vm	Tue Jun 22 14:22:02 2010 +0200
@@ -1,6 +1,6 @@
 #set ($title = "Unicorn")
-#set ($css = ['base_ucn-yc.css'])
-#set ($js = ['mootools-1.2.3-core-more-yc.js', 'w3c_unicorn_index-yc.js'])
+#set ($css = ['base_ucn.css'])
+#set ($js = ['mootools-1.2.3-core-more-yc.js', 'w3c_unicorn_index.js'])
 #parse('head.vm')
 
 #if ($messages)
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/resources/templates/init.vm
--- a/WebContent/WEB-INF/resources/templates/init.vm	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/resources/templates/init.vm	Tue Jun 22 14:22:02 2010 +0200
@@ -1,5 +1,5 @@
 #set ($title = "Unicorn")
-#set ($css = ['base_ucn-yc.css', 'init.css'])
+#set ($css = ['base_ucn.css', 'init.css'])
 #set ($js = ['mootools-1.2.3-core-more-yc.js', 'w3c_unicorn_init.js'])
 #parse('head.vm')
 
@@ -9,7 +9,8 @@
 		<li><a href="init?task=all" class="init">Initialize all</a></li>
 		<li><a href="init?task=languages" class="init">Reload languages</a></li>
 		<li><a href="init?task=observers" class="init">Reload observers</a></li>
-		<li><a href="init?task=tasklist" class="init">Reload tasklist</a></li>
+		<li><a href="init?task=tasklist" class="init">Reload tasklist</a></li>
+		<li><a href="init?task=messages" class="init">Reload messages</a></li>
 	</ul>
 	<textarea name="result" id="result" rows="15" cols="32" disabled="disabled"></textarea>
 </div>
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/resources/templates/language.form.vm
--- a/WebContent/WEB-INF/resources/templates/language.form.vm	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/resources/templates/language.form.vm	Tue Jun 22 14:22:02 2010 +0200
@@ -1,6 +1,6 @@
 #set ($title = "Unicorn - Translations")
-#set ($css = ['base_ucn-yc.css'])
-#set ($js = ['mootools-1.2.3-core-more-yc.js', 'w3c_unicorn_languages-yc.js'])
+#set ($css = ['base_ucn.css'])
+#set ($js = ['mootools-1.2.3-core-more-yc.js', 'w3c_unicorn_languages.js'])
 #parse('head.vm')
 
 #if ($messages)
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/resources/templates/language.vm
--- a/WebContent/WEB-INF/resources/templates/language.vm	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/resources/templates/language.vm	Tue Jun 22 14:22:02 2010 +0200
@@ -1,6 +1,6 @@
 #set ($title = "Unicorn - Translations")
-#set ($css = ['base_ucn-yc.css'])
-#set ($js = ['mootools-1.2.3-core-more-yc.js', 'w3c_unicorn_languages-yc.js'])
+#set ($css = ['base_ucn.css'])
+#set ($js = ['mootools-1.2.3-core-more-yc.js', 'w3c_unicorn_languages.js'])
 #parse('head.vm')
 
 #if ($messages)
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/resources/templates/xhtml10.vm
--- a/WebContent/WEB-INF/resources/templates/xhtml10.vm	Tue Jun 22 14:21:08 2010 +0200
+++ b/WebContent/WEB-INF/resources/templates/xhtml10.vm	Tue Jun 22 14:22:02 2010 +0200
@@ -1,6 +1,6 @@
 #set ($title = "$ucn.evaluate($lang, 'result_for', $unicorncall.DocumentName)")
-#set ($css = ['base_ucn-yc.css'])
-#set ($js = ['mootools-1.2.3-core-more-yc.js', 'w3c_unicorn_results-yc.js'])
+#set ($css = ['base_ucn.css'])
+#set ($js = ['mootools-1.2.3-core-more-yc.js', 'w3c_unicorn_results.js'])
 #if ($unicorncall.getStatus() == "passed")
 #set ($fav = "favicon_green.ico")
 #elseif ($unicorncall.getStatus() == "failed")
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/WEB-INF/uploaded-files/README
--- a/WebContent/WEB-INF/uploaded-files/README	Tue Jun 22 14:21:08 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-This directory is the repository for uploaded files
\ No newline at end of file
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/scripts/w3c_unicorn_index-yc.js
--- a/WebContent/scripts/w3c_unicorn_index-yc.js	Tue Jun 22 14:21:08 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-// Author: Thomas GAMBET.
-// (c) COPYRIGHT MIT, ERCIM and Keio, 2009.
-// Compressed with YUI Compressor 2.4.2 (source: ./w3c_unicorn_index.js)
-var W3C={start:function(){W3C.Tabs=$("tabset_tabs");W3C.TabLinks=W3C.Tabs.getChildren("li a");W3C.TaskSelect=$("tasks");W3C.TaskOptions=W3C.TaskSelect.getChildren("option");W3C.TaskDescrip=$("task_descrip");W3C.TaskInputs=$$("input.task");W3C.LangParameter=$$("html").getProperty("lang")[0];W3C.Forms=$$("form.ucn_form");W3C.Action=W3C.Forms[0].getProperty("action");W3C.SelectedTab=0;W3C.SelectedTask=W3C.TaskOptions.getProperty("value").indexOf(W3C.TaskInputs[0].value);W3C.WithOptions=false;W3C.Loader=new Element("img",{src:"images/ajax-loader.gif","class":"loader"});W3C.prepareDocument();W3C.parseHash();W3C.showTab(W3C.SelectedTab,false);W3C.selectTask(W3C.SelectedTask,false);W3C.toggleOptions(false);W3C.addOptionEvents()},prepareDocument:function(){$$("input#task_change").setStyle("display","none");W3C.TaskSelect.addEvent("change",function(a){a.stop();W3C.selectTask(this.selectedIndex,true);W3C.updateHash()});W3C.TabLinks.each(function(b,a){b.addEvent("click",function(c){c.stop();W3C.showTab(a,true);W3C.upateHash()})});W3C.TaskOptions.addEvent("mouseover",function(){W3C.TaskDescrip.set("text",this.title)});W3C.TaskOptions.addEvent("mouseout",function(){W3C.TaskDescrip.set("text",W3C.TaskOptions[W3C.SelectedTask].title)});$$("div#messages pre").slide("hide");$$("div#messages > div").each(function(a){if(a.getElement("pre")){a.addClass("pointer");a.addEvent("click",function(b){a.getElement("pre").slide("toggle")})}});$$("ul#lang_choice").getElements("a").each(function(b){b.addEvent("click",function(a){this.setProperty("href",this.getProperty("href")+window.location.hash)})});W3C.Forms.filter("form[method=get]").each(function(a){new FormValidator(a,{onFormValidate:function(e,c,b){if(e){b.preventDefault();var d=c.toQueryString().replace("uri=http%3A%2F%2F","uri=")+"#"+W3C.getHash();window.location="./"+W3C.Action+"?"+d}}})});W3C.Forms.filter("form[method=post]").each(function(a){new FormValidator(a,{onFormValidate:function(d,c,b){if(d){c.setProperty("action",c.getProperty("action")+"#"+W3C.getHash())}}})})},addOpionEvents:function(){$$("fieldset.advanced legend").removeEvents("click");$$("fieldset.advanced legend").addEvent("click",function(a){W3C.WithOptions=!W3C.WithOptions;W3C.toggleOptions(true);W3C.updateHash()})},showTab:function(a,b){if(W3C.Tabs.getElements("li")[a]==W3C.Tabs.getElement("li.selected")){return}W3C.SelectedTab=a;W3C.Forms.each(function(d,c){if(c!=a){d.setStyle("display","none")}else{if(b){d.setStyle("opacity",0)}d.setStyle("display","block")}});W3C.TabLinks.each(function(d,c){if(c!=a){d.setProperty("class","")}else{d.setProperty("class","selected")}});W3C.toggleOptions(false);if(b){W3C.Forms[a].set("tween",{duration:350});W3C.Forms[a].tween("opacity",0,1)}},selectTask:function(d,g){W3C.SelectedTask=d;var b=$$("fieldset.options");var c;W3C.TaskOptions.each(function(j,h){if(h!=d){j.removeProperty("selected")}else{c=j.value;j.setProperty("selected","selected")}});W3C.TaskDescrip.set("text",W3C.TaskOptions[d].title);W3C.TaskInputs.each(function(h){h.value=c});var b=$$("fieldset.options");b.setStyl("display","none");b.getElements(".option_input").each(function(h){h.setProperty("disabled","disabled")});var e=$$(".ucn_text_mime");e.setStyle("display","none");e.setProperty("disabled","disabled");var a=b.filter("fieldset."+c);var f=$$(".ucn_text_mime."+c);if(!a.length>0){W3C.requestOptions(d,g)}else{a.getElements(".option_input").each(function(h){h.removeProperty("disabled")});a.setStyle("opacity",0);a.setStyle("display","block");if(g){a.set("tween",{duration:350});a.tween("opacity",0,1)}a.setStyle("opacity",1);f.removeProperty("disabled");f.setStyle("opacity",0);f.setStyle("display","block");if(g){f.set("tween",{duration:350});f.tween("opacity",0,1)}f.setStyle("opacity",1)}W3C.toggleOptions(false)},requestOptions:function(a,c){var b=new Request.HTML({url:window.location.pathname.replace(new RegExp(""+W3C.Action+"$"),""),method:"get",onRequest:function(){W3C.Loader.injectBefore(W3C.Forms[W3C.SelectedTab].getElement("div.submit"))},onSuccess:function(h,e,i,g){var f;e.filter("fieldset.options").each(functin(j){W3C.Forms.each(function(l,k){var m=j.clone();m.setStyle("opacity",0);m.injectBefore(l.getElement("div.submit"));if(c){m.set("tween",{duration:350});m.tween("opacity",0,1)}m.setStyle("opacity",1)})});e.filter(".ucn_text_mime").each(function(j){j.setStyle("opacity",0);j.inject($("ucn_text"),"after");if(c){j.set("tween",{duration:350});j.tween("opacity",0,1)}j.setStyle("opacity",1)});W3C.Loader.dispose();W3C.toggleOptions(false);W3C.addOptionEvents();return true},onFailure:function(){return false}});var d="ucn_task="+W3C.TaskOptions[a].value+"&ucn_lang="+W3C.LangParameter;b.send(d)},toggleOptions:function(b){var a=$$("fieldset.advanced");if(a.length==0){return}if(W3C.WithOptions){a.addClass("toggled");a.removeClass("toggles")}else{a.addClass("toggles");a.removeClass("toggled")}W3C.Forms.each(function(e,c){var d=e.getElements("fieldset.advanced div.options");if(b&&c==W3C.SelectedTab){if(W3C.WithOptions){d.slide("in")}else{d.slide("out")}}else{if(W3C.WithOptions){d.slide("show")}else{d.slide("hide")}}})},paseHash:function(){var g=window.location.hash;if(g==""){return}var f=g.replace("#","").split("+");var b=f[0];var d=f[1];var a=f[2];var c=W3C.Forms.getProperty("id").indexOf(b);if(c==-1){W3C.setHash("");return}W3C.SelectedTab=c;if(!d||!d.contains("task_")){W3C.setHash(b);return}var e=W3C.TaskOptions.getProperty("value").indexOf(d.replace("task_",""));if(e==-1){W3C.setHash(b);return}W3C.SelectedTask=e;if(!a||!a=="with_options"){W3C.setHash(b+"+"+d);return}W3C.WithOptions=true},updateHash:function(){var c=W3C.Forms[W3C.SelectedTab].getProperty("id");var b="+task_"+W3C.TaskOptions[W3C.SelectedTask].getProperty("value");var a=W3C.WithOptions?"+with_options":"";W3C.setHash(c+b+a)},getHash:function(){var c=W3C.Forms[W3C.SelectedTab].getProperty("id");var b="+task_"+W3C.TaskOptions[W3C.SelectedTask].getProperty("value");var a=W3C.WithOptions?"+with_options":"";return c+b+a},setHash:function(a){if(window.webkit419){W3C.FakeForm=W3C.FakeForm||new Element("form",{method:"get"}).injectInside(document.body);W3C.FakeForm.etProperty("action","#"+a).submit()}else{window.location.replace("#"+a)}}};window.addEvent("domready",W3C.start);
\ No newline at end of file
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/scripts/w3c_unicorn_languages-yc.js
--- a/WebContent/scripts/w3c_unicorn_languages-yc.js	Tue Jun 22 14:21:08 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-// Author: Thomas GAMBET.
-// (c) COPYRIGHT MIT, ERCIM and Keio, 2009.
-// Compressed with YUI Compressor 2.4.2 (source: ./w3c_unicorn_index.js)
-var W3C={start:function(){W3C.TableRows=$$("fieldset.translation table tbody tr");if($("a_miss")){$("a_miss").addEvent("click",function(b){b.preventDefault();W3C.TableRows.each(function(c){if(c.getElement("td.missing")){c.setStyle("display","")}else{c.setStyle("display","none")}})});$("a_mod").addEvent("click",function(b){b.preventDefault();W3C.TableRows.each(function(c){if(c.getElement("td.modified")){c.setStyle("display","")}else{c.setStyle("display","none")}})});$("a_all").addEvent("click",function(b){b.preventDefault();W3C.TableRows.each(function(c){c.setStyle("display","")})});$$("fieldset.translation td").each(function(c){var b=c.getElement("input");b.store("ucn:trad",b.value);b.addEvent("keyup",function(d){if(b.value!=b.retrieve("ucn:trad")&&b.value!=""){c.addClass("modified");c.removeClass("missing")}else{c.removeClass("modified");if(b.value==""){c.addClass("missing")}}W3C.updateLinks()})});W3C.updateLinks()}else{var a=$$("#translations td");a.each(function(b){var c=b.getElement("span");b.store("ti:text",c.title);c.removeProperty("title")});new Tips(a)}},updateLinks:function(){if($("translations").getElements("td.missing").length==0){$("a_miss").setStyle("display","none")}else{$("a_miss").setStyle("display","")}if($("translations").getElements("td.modified").length==0){$("a_mod").setStyle("display","none")}else{$("a_mod").setStyle("display","")}$("a_all").setStyle("display","")}};window.addEvent("domready",W3C.start);
\ No newline at end of file
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/scripts/w3c_unicorn_results-yc.js
--- a/WebContent/scripts/w3c_unicorn_results-yc.js	Tue Jun 22 14:21:08 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-// Author: Thomas GAMBET.
-// (c) COPYRIGHT MIT, ERCIM and Keio, 2009.
-// Compressed with YUI Compressor 2.4.2 (source: ./w3c_unicorn_index.js)
-var W3C={start:function(){W3C.cleanHash();W3C.ContextsToShow=7;W3C.Observers=$$(".observer");var g=500;var a=$$(".observer.invalid");var e=new Fx.Scroll(document);var j=new Fx.Scroll(document,{duration:0});$$(".section").each(function(o){var q=o.getElement(".title");var p=o.getElement(".block");if(!o.hasClass("observer")||o.getElement(".section")!=null){q.addClass("pointer");var n=new Element("span",{"class":"arrow"});var m;if(q.getElement("span.icons")!=null){m=q.getElement("span.icons")}else{m=q.getElement("a.anchor")}n.inject(m,"after")}o.store("fxSlide",new Fx.Slide(p,{duration:g,link:"cancel"}));o.store("block",p);q.addEvent("click",function(r){W3C.toggle(o)})});$$(".observer .section").each(function(m){if(m.hasClass("warnings")){W3C.close(m,false)}else{W3C.open(m,false)}});$$(".observer .title a").each(function(m){m.addEvent("click",function(n){n.stopPropagation()})});$$(".observer").each(function(m){W3C.open(m,false);if(m.hasClass("valid")&&a.length>0){W3C.close(m,false)}m.getElement("a.anchor").addvent("click",function(n){W3C.open(m,true)});if(!m.hasClass("grouped")){if(m.getElement("a.infos")){m.getElement("a.infos").addEvent("click",function(n){n.preventDefault();W3C.open(m,true);W3C.closeAllSectionsBut(m,m.getElement("div.infos"),true);e.toElement(m)})}if(m.getElement("a.errors")){m.getElement("a.errors").addEvent("click",function(n){n.preventDefault();W3C.open(m,true);W3C.closeAllSectionsBut(m,m.getElement("div.errors"),true);e.toElement(m)})}if(m.getElement("a.warnings")){m.getElement("a.warnings").addEvent("click",function(n){n.preventDefault();W3C.open(m,true);W3C.closeAllSectionsBut(m,m.getElement("div.warnings"),true);e.toElement(m)})}}});$$("div#messages pre").slide("hide");$$("div#messages > div").each(function(m){if(m.getElement("pre")){m.addClass("pointer");m.addEvent("click",function(n){m.getElement("pre").slide("toggle")})}});var d=new Fx.SmoothScroll({links:".smooth",wheelStops:true});W3C.parseHash();var c=$("observations").getProperty("class");var k=new RegExp(/contextShow:'[^']*'/);ar b=k.exec(c);var l="";for(i=0;i<b.length;i++){l=l+b[i]}var f=l.replace("contextShow:","").replace(/'/g,"");var k=new RegExp(/contextHide:'[^']*'/);var b=k.exec(c);var l="";for(i=0;i<b.length;i++){l=l+b[i]}var h=l.replace("contextHide:","").replace(/'/g,"");$$("td.message").each(function(m){if(m.getProperty("rowspan")>W3C.ContextsToShow){var n=m.getParent("tr");var t=n.getElement("td.anchor");var u=m.getProperty("rowspan");var o=1;var s=n;var r=new Array();var q=0;while(o<=u){if(o>W3C.ContextsToShow){s.setStyle("display","none");r[q]=s;q++}if(o==u){var v=new Element("tr",{"class":"showContext"});var p=new Element("td",{colspan:"3"});p.addClass("pointer");p.setProperty("title",f.replace(/%1/,r.length));p.set("text",f.replace(/%1/,r.length));p.inject(v);v.inject(s,"after");v.addEvent("click",function(w){var x=r.some(function(y){if(y.getStyle("display")=="none"){return true}else{return false}});if(x){r.each(function(y){y.setStyle("display","")});m.setProperty("rowspan",u+1);t.setProperty("rowspan",u+1);p.setPoperty("title",h);p.set("text",h);j.toElement(n)}else{r.each(function(y){y.setStyle("display","none")});m.setProperty("rowspan",W3C.ContextsToShow+1);t.setProperty("rowspan",W3C.ContextsToShow+1);p.setProperty("title",f.replace(/%1/,r.length));p.set("text",f.replace(/%1/,r.length));j.toElement(n)}})}s=s.getNext("tr");o++}m.setProperty("rowspan",W3C.ContextsToShow+1);t.setProperty("rowspan",W3C.ContextsToShow+1)}})},toggle:function(b){var c=b.getElement(".title");var a=b.retrieve("fxSlide");if(b.retrieve("open")){W3C.close(b,true)}else{W3C.open(b,true)}},close:function(b,e){var d=b.retrieve("open");var c=b.getElement(".title");var a=b.retrieve("fxSlide");c.removeClass("toggled");b.store("open",false);if(e&&d){a.slideOut().chain(function(){b.getElement("div").setStyle("display","none");a.callChain()})}else{a.hide();b.getElement("div").setStyle("display","none")}},open:function(c,e){var b=!c.retrieve("open");var d=c.getElement(".title");var a=c.retrieve("fxSlide");d.addClass("toggled");c.store("open",true);c.gtElement("div").setStyle("display","");if(e&&b){a.slideIn().chain(function(){c.getElement("div").setStyle("height","auto");a.callChain()})}else{a.show();c.getElement("div").setStyle("height","auto")}},closeAllObserversBut:function(a,b){W3C.Observers.each(function(c){if(c!=a){W3C.close(c,b)}});W3C.open(a,b)},closeAllSectionsBut:function(a,b,c){a.getElements(".section").each(function(d){if(d!=b){W3C.close(d,c)}});W3C.open(b,c)},parseHash:function(){var e=window.location.hash;if(e==""){return}var b=e.replace("#","").split("_");var k=b[0];var n=b[1];var a=b[2];var j=b[3];var f=new Fx.Scroll(document,{duration:0});var g=W3C.Observers.getProperty("id").indexOf(k);if(g==-1){W3C.setHash("");return}var h=W3C.Observers[g];W3C.open(h,false);if(!n){f.toElement(h);return}var l=h.getElements(".section").getProperty("id").indexOf(k+"_"+n);if(l==-1){W3C.setHash(k);return}var m=h.getElements(".section")[l];W3C.closeAllSectionsBut(h,m,false);if(!a){f.toElement(h);return}var d=m.getElements("td.uri").getProperty("id").indexOfk+"_"+n+"_"+a);if(d==-1){W3C.setHash(k+"_"+n);return}var c=m.getElements("td.uri")[d];if(!j){f.toElement(c);return}W3C.setHash(e.replace("#",""))},updateHash:function(){var c=W3C.Forms[W3C.SelectedTab].getProperty("id");var b="+task_"+W3C.TaskOptions[W3C.SelectedTask].getProperty("value");var a=W3C.WithOptions?"+with_options":"";W3C.setHash(c+b+a)},cleanHash:function(){var a=window.location.hash;if(a.match("^#validate-by")){W3C.setHash("")}},setHash:function(a){if(window.webkit419){W3C.FakeForm=W3C.FakeForm||new Element("form",{method:"get"}).injectInside(document.body);W3C.FakeForm.setProperty("action","#"+a).submit()}else{window.location.replace("#"+a)}}};window.addEvent("domready",W3C.start);
\ No newline at end of file
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/style/base_ucn-yc.css
--- a/WebContent/style/base_ucn-yc.css	Tue Jun 22 14:21:08 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-/* Author: Thomas GAMBET <tgambet@w3.org>.
-   (c) COPYRIGHT MIT, ERCIM and Keio, 2009.
-   Compressed with YUI Compressor 2.4.2 (source: ./base_ucn.css) */
-body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}legend{padding:0;}body{min-width:40em;padding-bottom:2em;}#frontforms,#don_program,#menu,#footer,div.text,#translations{margin:1em 2em;}#banner{margin:1.5em 2em 1em 2em;line-height:1;}#banner img{margin-right:.7em;vertical-align:middle;}#banner h1{font-size:1.6em;padding-bottom:.43em;}#banner p{font-size:.7em;line-height:100%!important;margin:-2em 12.1em 0 12.1em;padding-bottom:1em;background-color:transparent;}#tabset_tabs{height:1.60em;}#tabset_tabs li{cursor:pointer;float:left;margin-right:.245em;}body.rtl #tabset_tabs li{float:right;margin-left:.245em;margin-right:0;}#tabset_tabs li a{display:block;fontsize:.9em;margin-left:.5em;padding:.515em 1.3em .215em .8em;}#fields{clear:both;padding:.5em 1.3em 1em 1.3em;}#fields form{margin-top:.5em;}fieldset div.input,fieldset div.options{padding-bottom:.5em;}fieldset fieldset{margin-top:.5em;}fieldset p,fieldset li{margin-top:.5em;}fieldset label span{font-size:.9em;min-width:4.5em;display:inline-block;padding-right:.3em;}div.options label span{min-width:7em;}div.options select{min-width:15em;}fieldset.options.none{display:none!important;}fieldset span.checkboxlist,fieldset span.radiolist{font-size:.9em;}fieldset .checkboxlist label,fieldset .radiolist label{margin-right:.5em;}fieldset legend{font-size:1.1em;letter-spacing:.06em;padding:0 0 .23em;}fieldset div.submit{padding-bottom:0;padding-top:.5em;text-align:center;}fieldset div.submit input{height:34px;width:130px;border:none;font-size:.9em;font-family:Helvetica,Arial,Sans-Serif;cursor:pointer;}fieldset p.instructions{font-size:.8em;margin-top:.70em;}fieldset span#task_descrip{font-size:.8em;font-style:italic;fieldset input#task_change,input#lang_code{background:#EEE url(../images/grad.png) repeat-x scroll left top;border-color:#AAA #444444 #444 #AAAAAA;border-style:solid;border-width:1px;color:#365D95;width:2.5em;height:2.3em;cursor:pointer;font-size:.7em;}input#ucn_uri,input#ucn_file,textarea,select,fieldset.about_you input{background:#FEFEFE url(../images/textbg.png) no-repeat scroll left top;border-color:#777 #BBBBBB #DDD;border-style:solid;border-width:1px;font-size:.8em;padding:.3em .2em .2em .4em;}textarea{font-size:.9em;}input#ucn_uri,textarea{width:85%;}input#ucn_file{width:85%;padding-left:.4em;}select.ucn_text_mime{margin-top:.4em;}img.loader{margin:1em;}#don_program{line-height:150%;padding:.5em;text-align:center;}#don_program_img{float:left;height:60px;width:150px;}#don_program_img img{vertical-align:middle;}#don_program_text a{font-weight:bold;text-decoration:underline;}#lang_choice{margin-right:3em;min-width:40em;padding:.5em 0;position:absolute;right:0;top:0;text-align:right;font-size:.7em;line-hight:100%;}#lang_choice li{display:inline;padding-left:.5em;}#menu{text-align:center;padding:.3em 0;}#menu li{margin-right:.8em;display:inline;}#footer #activity_logos{float:left;padding-right:2em;}#footer #support_logo{float:right;padding-left:2em;padding-top:.5em;width:90px;}#footer p.copyright{font-size:.7em;line-height:1.4;text-align:center;text-transform:uppercase;}div.text h2{font-size:1.3em;color:#438600;}div.text h3{font-size:1.1em;color:#438600;border-bottom:1px dotted #64c800;}div.text p{margin:.5em 0 .5em 1em;}div.text ol{margin:.5em 0 .5em 2em;list-style-type:decimal;list-style-position:inside;}div.text ul{margin:.5em 0 .5em 2em;list-style-type:disc;list-style-position:inside;}div.text li{line-height:130%;}body{font-family:Helvetica,Arial,Sans-Serif;}a:link,a:visited,legend,div.submit input{color:#365D95;text-decoration:none;}a:hover{color:#1F2126;text-decoration:underline;}div.submit input:hover{color:#1F2126;}#banner{background:#365D95 url(../images/head-br.png) no-repeat scroll right bottom;}banner h1{background:url(../images/head-bl.png) no-repeat scroll left bottom;color:#FDFDFD;}#banner h1 span{border-bottom:1px solid #4E6F9E;}#banner a:link,#banner a:hover,#banner a:visited,#banner a:active{color:#FDFDFD;text-decoration:none;}#banner p{color:#D0DCEE;letter-spacing:.1em;}#tabset_tabs li{background:#DADDE3 url(../images/tab-tl.png) no-repeat scroll left top;border-bottom:1px solid #CBD0DB;}#tabset_tabs li.selected{background:#EAEBEE url(../images/round-tl.png) no-repeat scroll left top;border-bottom:1px solid #EAEBEE;}#tabset_tabs li a{outline:0;font-weight:bold;background:#DADDE3 url(../images/tab-tr.png) no-repeat scroll right top;}#tabset_tabs li a:hover{text-decoration:none;}#tabset_tabs li.selected a{background:#EAEBEE url(../images/round-tr.png) no-repeat scroll right top;color:#1F2126;}p.instructions,span#task_descrip{color:#4D525E;}#fields{background:#EAEBEE url(../images/round-tr.png) no-repeat scroll right top;}body.rtl #fields{background:#EAEBEE url(../images/round-tl.png) no-repea scroll left top;}#fields,#menu{background-color:#EAEBEE;}fieldset div.input,fieldset div.options,fieldset div.submit{background:url(../images/double.png) repeat-x scroll left top;border-top:1px solid #CBCDD5;}fieldset div.submit input{background:url(../images/button.png) no-repeat scroll left 1px;}#don_program{border:1px solid #55B05A;}#footer p.copyright{color:#7C8395;}#footer p.copyright a:link,#footer p.copyright a:visited{color:#A3756E;}#messages{font-size:.9em;margin:1.1em 2.2em;}#messages .error,#messages .warning,#messages .info{padding:.7em;border:2px solid;margin:.6em 0;}#messages .error{color:#8A1F11;border-color:#FBC2C4;background:#FBE3E4;}#messages .warning{color:#514721;border-color:#ffe57d;background:#FFF6BF;}#messages .info{color:#11438a;border-color:#c2dafb;background:#e3edfa;}#messages a{text-decoration:underline;}#messages .info a{color:#0c3267;}#messages .warning a{color:#342e15;}#messages .error a{color:#67170c;}#messages .error h4,#messages .warning h4,#messages .info h4{line-height:22x;padding-left:30px;}body.rtl #messages .error h4,body.rtl #messages .warning h4,body.rtl #messages .info h4{padding-left:0;padding-right:30px;}#messages .error h4{background:url(../images/icone_error_b.png) no-repeat scroll left top;}body.rtl #messages .error h4{background-position:right top;}#messages .warning h4{background:url(../images/icone_warning_b.png) no-repeat scroll left top;}body.rtl #messages .warning h4{background-position:right top;}#messages .info h4{background:url(../images/icone_info_b.png) no-repeat scroll left top;}body.rtl #messages .info h4{background-position:right top;}#messages .error pre{padding-top:.6em;}#messages .pointer h4{font-weight:bold;font-size:.9em;}#messages .pointer:hover h4{text-decoration:underline;}fieldset.toggles legend{background:url(../images/arrow-closed.png) no-repeat scroll .2em .35em;padding-left:.8em;cursor:pointer;}fieldset.toggled legend{background:#EAEBEE url(../images/arrow-open.png) no-repeat scroll 0 .5em;padding-left:.8em;cursor:pointer;}.pointer{cursr:pointer;}#observations{font-size:.8em;margin:1em 2.5em;}#observations div.observer{margin-top:.5em;}#observations div.observer h2.title{font-size:1.3em;padding:.3em;text-align:left;color:white;}#observations div.observer h2.title a{font-size:.9em;color:white;}#observations div.observer h2.title a:hover{color:white;}#observations div.observer h2.title a.direct_link,#observations td.codeContext a.direct_link{height:0;width:0;font-size:0;display:inline-block;overflow:hidden;padding:11px 0 0 12px;}#observations div.observer h2.title a.direct_link{background:url(../images/unicons_sprite.png) no-repeat -22px -22px;}#observations div.observer h2.title a.direct_link:hover{background:url(../images/unicons_sprite.png) no-repeat -22px -35px;}#observations .codeContext a.direct_link{float:right;background:url(../images/unicons_sprite.png) no-repeat -34px -22px;}#observations td.codeContext a.direct_link:hover{background:url(../images/unicons_sprite.png) no-repeat -34px -35px;}#observations div.observer h2.title a.ancor{height:0;width:0;margin-left:2px;font-size:0!important;display:inline-block;overflow:hidden;padding:11px 0 0 11px;background:url(../images/unicons_sprite.png) no-repeat -11px -22px;}#observations div.observer h2.title a.anchor:hover{background:url(../images/unicons_sprite.png) no-repeat -11px -35px;}#observations div.observer h2.title span.name{font-style:italic;}#observations div.observer h2.title span.icons{float:right;text-align:right;}#observations div.observer h2.title span.icons a{font-size:.8em;outline:0;}#observations div.observer h2.title span.icons a:hover{text-decoration:none;}#observations div.observer.group h2.title span.icons a:hover{text-decoration:none;cursor:default;}#observations div.observer h2.title span.icons a:hover span.count{text-decoration:underline;}#observations div.observer.grouped h2.title span.icons a:hover span.count{text-decoration:none;}#observations div.observer h2.title span.icons a span.legend,#observations div.group span.legend{display:inline-block;overflow:hidden;fon-size:0;height:0;width:0;padding:18px 18px 0 0;vertical-align:bottom;margin-right:4px;}#observations div.observer h2.title span.icons a.infos span.legend,#observations div.group span.legend.info{background:url(../images/unicons_sprite.png) no-repeat 0 -48px;}#observations div.observer h2.title span.icons a.errors span.legend,#observations div.group span.legend.error{background:url(../images/unicons_sprite.png) no-repeat -18px -48px;}#observations div.observer h2.title span.icons a.warnings span.legend,#observations div.group span.legend.warning{background:url(../images/unicons_sprite.png) no-repeat 0 -68px;}#observations div.observer h2.title span.icons img{vertical-align:-20%;padding:0 .2em;}#observations div.valid h2.title{background-color:#1daa34;border:1px solid #17882a;}#observations div.invalid h2.title{background-color:#cc2323;border:1px solid #aa1d1d;}#observations div.undef h2.title{background-color:#355c95;border:1px solid #254066;}#observations div.results{padding-left:.5em;border-left:1px solid;#observations div.valid div.results{border-color:#1daa34;}#observations div.invalid div.results{border-color:#cc2323;}#observations div.undef div.results{border-color:#4778bc;}#observations div.infos,#observations div.warnings,#observations div.errors{padding-top:0;}#observations h3.title{font-size:1.1em;padding:.3em 0 .3em 0;border-bottom:1px solid #CCC;}#observations h3.title a.anchor{margin:2px 6px 0 0;}#observations .infos h3.title{color:#4778BC;}#observations .errors h3.title{color:#aa1d1d;}#observations .warnings h3.title{color:#b48700;}#observations .results h3.pointer:hover{background-color:#EEE;}#observations td.uri{background-color:#EEE;padding:.4em;}#observations td.uri span{font-weight:bold;}#observations td.anchor{width:11px;text-align:right;}#observations td.anchor a,#observations h3 a.anchor{height:0;width:0;float:right;font-size:0;overflow:hidden;padding:11px 0 0 11px;background:url(../images/unicons_sprite.png) no-repeat 0 -22px;outline:0;}#observations td.anchor a:hover,#observations h3 a.nchor:hover{background:url(../images/unicons_sprite.png) no-repeat 0 -35px;}#observations table{border-collapse:collapse;width:100%;}#observations table tr td{border-collapse:collapse;border:1px solid #CCC;border-left-width:0;}#observations table tr td.message,#observations table tr td.uri{border-right-width:0;}#observations table tr td.uri.anchor{border-right-width:1px;}#observations td,#observations th,#translations td,#translations th{padding:3px;}#observations td.linenumber,#observations td.colnumber{background-color:#E1E1E1;text-align:right;width:1.7em;font-size:.8em;border-right:1px solid #CCC;}#observations td.codeContext{background-color:#F1F1F1;font-size:.8em;}#observations tr.showContext td{background-color:#E1E1E1;padding:0;text-align:center;font-size:.8em;color:#365D95;}#observations tr.showContext td:hover{color:#1F2126;text-decoration:underline;}#observations tr.showContext td span.arrow{background:url(../images/unicons_sprite.png) no-repeat -36px 0;}#observations tr.showContext td span.arrow.oggled{background:url(../images/unicons_sprite.png) no-repeat -36px -11px;}#observations code{font-family:"Bitstream Vera Sans Mono",Monaco,"Andale Mono",monospace;line-height:100%;font-size:1.2em;margin-top:.5em;}#observations strong{font-weight:bold;}#observations .codeContext strong{color:red;padding-left:.5ex;padding-right:.5ex;font-weight:bolder;border-bottom:thin dotted;cursor:help;}#observations .group .title{font-weight:bold;font-size:1.2em;}#observations .group .block{padding-left:1em;}#observations .group .block .block{border-left:1px dotted #CCC;}#observations .group .block p{margin:1em 0;line-height:150%;}#observations .message div.description{margin-top:.3em;}#observations .message div.description div{line-height:140%;}#observations .message span.msg.desc{font-weight:bold;}#observations .message .description em{font-style:italic;}#observations .message .description ul,#observations .message .description ol{margin-left:1em;}#observations .message .description ul li:before{content:"- ";}#observatons .message .description ol{list-style-type:decimal;}#observations .message .description ol li{margin-left:1em;}div.warnings td.level1{border-left:6px solid #f97c6e!important;}div.warnings td.level2{border-left:6px solid #FFB1A7!important;}#translations table{border-collapse:collapse;font-size:.8em;}#translations tr{border-collapse:collapse;border:1px solid #CCC;}#translations th{border-right:1px solid #CCC;background-color:#EEE;text-align:center;font-weight:bold;}#translations thead th{background-color:#E1E1E1;font-size:1em;}#translations th.property_name{padding:.2em 0 0!important;}#translations th p{text-align:left;background-color:#FFF;font-size:xx-small;margin:.5em 0 0;padding:.5em .5em .4em;font-weight:normal;}#translations td.ok,#translations td.missing,#translations .translation td{text-align:center;border:1px solid #EEE;border-width:0 0 1px 1px;border-collapse:collapse;}#translations td.ok,div.text span.ok{background-color:#89E5A7;}#translations td.missing,div.text span.missing{color:yellow;backgrund-color:#F55;}#translations td.modified{background-color:#5d97e2;}#translations td.ok span{border-bottom:thin dotted;cursor:help;}fieldset.about_you input,fieldset.about_you textarea{margin:0 0 .5em .5em;}fieldset.about_you label span{min-width:7em;text-align:right;}fieldset.about_you textarea{vertical-align:top;}fieldset.translation table{width:100%;}fieldset.translation legend a{display:inline-block;height:0;width:0;padding:12px 0 0 12px;overflow:hidden;font-size:0;outline:0;}fieldset.translation legend a#a_miss{background-color:#F55;border:1px solid #b40000;}fieldset.translation legend a#a_mod{background-color:#5D97E2;border:1px solid #154078;}fieldset.translation legend a#a_all{background-color:white;border:1px solid #CCC;}fieldset.translation th.first_col{width:33%;}fieldset.translation td input{padding:.3em;width:98%;}#translations div.submit{background-color:#eaebee;}#translations fieldset legend{margin:0 0 .5em 0;}#translations td.missing a{color:inherit;text-decoration:underline;}div.tip{font-siz:.9em;padding:.5em;color:#11438a;border:1px solid #c2dafb;background:#e3edfa;max-width:25em;}form#lang_select,form#lang_select fieldset{display:inline;vertical-align:middle;}div#markup-validator td.info img,div#css-validator td.info img,div#css1-validator td.info img,div#css2-validator td.info img,div#css21-validator td.info img,div#css3-validator td.info img{float:left;clear:left;padding:2.4em 10px;}div#markup-validator td.info code,div#css-validator td.info code,div#css1-validator td.info code,div#css2-validator td.info code,div#css21-validator td.info code,div#css3-validator td.info code{color:#444;}div#feed td.info img{vertical-align:middle;margin:0 .3em .3em .3em;}#observations span.arrow{display:inline-block;height:0;width:0;padding:9px 0 0 9px;overflow:hidden;font-size:0;}div.group h3 span.arrow{background:url(../images/unicons_sprite.png) no-repeat -36px 0;margin-right:4px;}div.group h3.toggled span.arrow{background:url(../images/unicons_sprite.png) no-repeat -36px -11px;margin-right:4px;}div.errorsh3 span.arrow{background:url(../images/unicons_sprite.png) no-repeat -18px 0;}div.errors h3.toggled span.arrow{background:url(../images/unicons_sprite.png) no-repeat -18px -11px;}div.infos h3 span.arrow{background:url(../images/unicons_sprite.png) no-repeat 0 0;}div.infos h3.toggled span.arrow{background:url(../images/unicons_sprite.png) no-repeat 0 -11px;}div.warnings h3 span.arrow{background:url(../images/unicons_sprite.png) no-repeat -9px 0;}div.warnings h3.toggled span.arrow{background:url(../images/unicons_sprite.png) no-repeat -9px -11px;}div.observer h2 span.arrow{background:url(../images/unicons_sprite.png) no-repeat -27px 0;margin-bottom:1px;}div.observer h2.toggled span.arrow{background:url(../images/unicons_sprite.png) no-repeat -27px -11px;margin-bottom:0;}
\ No newline at end of file
diff -r 8e10744fd54e -r ca6de4d06520 WebContent/temporary_files/README
--- a/WebContent/temporary_files/README	Tue Jun 22 14:21:08 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-This directory is the repository of the temporaly uploaded file redirect in uri input method.
\ No newline at end of file
diff -r 8e10744fd54e -r ca6de4d06520 build.xml
--- a/build.xml	Tue Jun 22 14:21:08 2010 +0200
+++ b/build.xml	Tue Jun 22 14:22:02 2010 +0200
@@ -1,84 +1,101 @@
 <?xml version="1.0" ?>
-<project name="" basedir=".">
-	<property name="warfile" value="unicorn"/>
-	<property name="webapps" value="."/>
-	<property name="src" location="src"/>
-	<property name="build" location="build"/>
-	<property name="dist" location="dist"/>
-	<property name="servletJarPath" location="/usr/share/jetty/lib/"/>
+<project name="unicorn" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
+	<property name="lib.dir" value="lib" />
+	<property name="build.dir" value="build" />
+	<property name="src.dir" value="src" />
+	<property name="dist.dir" location="dist"/>
 	
-	<target name="all" depends="war, jigsaw, jar"/>
+	<path id="lib.path.id">
+		<fileset dir="${lib.dir}" />
+		<fileset file="WebContent/WEB-INF/lib/icu4j-4_4_1.jar" />
+	</path>
 	
-	<target name="war" depends="compile" description="Generate unicorn.war">
-		<mkdir dir="${dist}"/>
-		<war destfile="${dist}/${warfile}.war" webxml="WebContent/WEB-INF/web.xml" update="true">
-			<classes dir="build/classes"/>
+	<property name="app.name" value="unicorn"/>
+	<property name="jar.file" value="${app.name}.jar"/>
+	<property name="war.file" value="${app.name}.war"/>
+	
+	<target name="retrieve" description="--> retrieve dependencies with ivy">
+		<ivy:retrieve />
+	</target>
+	
+	<target name="clean-cache" description="--> clean the ivy cache">
+		<ivy:cleancache />
+	</target>
+	
+	<target name="clean" description="--> clean up Unicorn build and dist directories">
+		<delete dir="${build.dir}"/>
+		<delete dir="${dist.dir}"/>
+	</target>
+	
+	<target name="default_conf" description="--> use default configuration files to run Unicorn">
+		<copy todir="${build.dir}/classes">
+			<fileset dir="WebContent/WEB-INF/conf"/>
+			<globmapper from="*.default" to="*"/>
+		</copy>
+	</target>
+	
+	<target name="generate_tasklist" description="--> generate unicorn-tasklist.jar based on tasklist.xsd">
+		<taskdef name="xmlbean" classname="org.apache.xmlbeans.impl.tool.XMLBean" classpath="${lib.dir}/xmlbeans-2.4.0.jar"/>
+		<xmlbean schema="WebContent/WEB-INF/resources/schemas/tasklist.xsd" destfile="${lib.dir}/unicorn-tasklist.jar" javasource="1.5" classpath="${lib.dir}/xmlbeans-2.4.0.jar"/>
+	</target>
+	
+	<target name="generate_observer" description="--> generate unicorn-response.jar based on observer-response.xsd">
+		<taskdef name="xmlbean" classname="org.apache.xmlbeans.impl.tool.XMLBean" classpath="${lib.dir}/xmlbeans-2.4.0.jar"/>
+		<xmlbean schema="WebContent/WEB-INF/resources/schemas/observer-response.xsd" destfile="${lib.dir}/unicorn-response.jar" javasource="1.5" classpath="${lib.dir}/xmlbeans-2.4.0.jar"/>
+	</target>
+	
+	<target name="compile" description="--> compile Unicorn">
+		<mkdir dir="${build.dir}/classes"/>
+		<javac srcdir="${src.dir}" destdir="${build.dir}/classes" classpathref="lib.path.id" debug="on" debuglevel="lines,vars,source" />
+	</target>
+	
+	<target name="war" depends="compile" description="--> compile and package Unicorn as a war">
+		<mkdir dir="${dist.dir}"/>
+		<mkdir dir="${build.dir}/medias"/>
+		<war destfile="${dist.dir}/${war.file}" webxml="WebContent/WEB-INF/web.xml" update="true">
+			<classes dir="${build.dir}/classes"/>
+			<lib dir="${lib.dir}" />
 			<fileset dir="WebContent">
 				<exclude name="WEB-INF/web.xml"/>
 				<exclude name="WEB-INF/conf/"/>
 			</fileset>
+			<fileset dir="${build.dir}/medias" />
 		</war>
 	</target>
 	
-	<target name="jigsaw" depends="compile" description="Generate folder for Jigsaw" >
-		<mkdir dir="${dist}/jigsaw"/>
-		<copy todir="${dist}/jigsaw" overwrite="true">
+	<target name="deployed" depends="compile" description="--> compile and package Unicorn in a folder" >
+		<mkdir dir="${dist.dir}/unicorn"/>
+		<copy todir="${dist.dir}/unicorn" overwrite="true">
 			<fileset dir="WebContent"/>
 		</copy>
-		<copy todir="${dist}/jigsaw/WEB-INF" overwrite="true">
-			<fileset dir="${build}"/>
+		<copy todir="${dist.dir}/unicorn/WEB-INF" overwrite="true">
+			<fileset dir="${build.dir}"/>
 		</copy>
 	</target>
 	
-	<target name="jar" depends="compile" description="Generate unicorn.jar">
-		<mkdir dir="${dist}"/>
-		<jar jarfile="${dist}/unicorn.jar" basedir="${build}/classes" manifest="WebContent/META-INF/Manifest.MF"/>
-	</target>
-
-	<target name="clean" description="clean up" >
-		<delete dir="${build}/classes"/>
-		<delete dir="${dist}"/>
+	<target name="jar" depends="compile" description="--> compile and package Unicorn as a jar">
+		<mkdir dir="${dist.dir}"/>
+		<jar jarfile="${dist.dir}/unicorn.jar" basedir="${build.dir}/classes" manifest="WebContent/META-INF/Manifest.MF"/>
 	</target>
 	
-	<target name="compile">
-		<mkdir dir="${build}/classes"/>
-		<javac srcdir="${src}" destdir="${build}/classes" debug="on" debuglevel="lines,vars,source">
-			<classpath>
-				<fileset dir="${servletJarPath}" includes="*.jar"/>
-				<fileset dir="WebContent/WEB-INF/lib" includes="*.jar"/>
-			</classpath>
-        </javac>
-	</target>
-	
-	<target name="use_default_conf">
-		<copy todir="build/classes/">
-		    <fileset dir="WebContent/WEB-INF/conf"/>
-			<globmapper from="*.default" to="*"/>
-		</copy>
-	</target>
-	
-	<target name="compress-css">
-		<java jar="lib/yuicompressor-2.4.2.jar" fork="true" output="WebContent/style/base_ucn-yc.css" >
+	<target name="compress-css" description="--> compress Unicorn css file using YUI Compressor">
+		<mkdir dir="${build.dir}/medias/style"/>
+		<java jar="${lib.dir}/yuicompressor-2.3.6.jar" fork="true" output="${build.dir}/medias/style/base_ucn.css" >
 			<arg path="WebContent/style/base_ucn.css" />
 		</java>
 	</target>
 	
-	<target name="deploy" depends="war">
-		<copy todir="${webapps}" overwrite="true">
-			<fileset dir=".">
-				<include name="${dist}/unicorn.war"/>
-			</fileset>
-		</copy>
+	<target name="compress-js" description="--> compress Unicorn js files using YUI Compressor">
+		<mkdir dir="${build.dir}/medias/scripts/"/>
+		<java jar="${lib.dir}/yuicompressor-2.3.6.jar" fork="true" output="${build.dir}/medias/scripts/w3c_unicorn_index.js">
+			<arg path="WebContent/scripts/w3c_unicorn_index.js" />
+		</java>
+		<java jar="${lib.dir}/yuicompressor-2.3.6.jar" fork="true" output="${build.dir}/medias/scripts/w3c_unicorn_languages.js" >
+			<arg path="WebContent/scripts/w3c_unicorn_languages.js" />
+		</java>
+		<java jar="${lib.dir}/yuicompressor-2.3.6.jar" fork="true" output="${build.dir}/medias/scripts/w3c_unicorn_results.js" >
+			<arg path="WebContent/scripts/w3c_unicorn_results.js" />
+		</java>
 	</target>
 	
-	<target name="generate_tasklist_jar">
-		<xmlbean schema="WebContent/WEB-INF/resources/schemas/tasklist.xsd" destfile="WebContent/WEB-INF/lib/unicorn-tasklist.jar" javasource="1.5" classpath="WebContent/WEB-INF/lib/xbean.jar"/>
-	</target>
-	
-	<target name="generate_observer_jar">
-		<xmlbean schema="WebContent/WEB-INF/resources/schemas/observer-response.xsd" destfile="WebContent/WEB-INF/lib/unicorn-response.jar" javasource="1.5" classpath="WebContent/WEB-INF/lib/xbean.jar"/>
-	</target>
-	
-	<taskdef name="xmlbean" classname="org.apache.xmlbeans.impl.tool.XMLBean" classpath="WebContent/WEB-INF/lib/xbean.jar"/>
-	
 </project>
diff -r 8e10744fd54e -r ca6de4d06520 ivy.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ivy.xml	Tue Jun 22 14:22:02 2010 +0200
@@ -0,0 +1,17 @@
+<ivy-module version="2.0">
+    <info organisation="org.w3c" module="unicorn"/>
+    <dependencies>
+        <dependency org="javax.servlet" name="servlet-api" rev="2.5" conf="*->*,!sources,!javadoc"/>
+        <dependency org="commons-collections" name="commons-collections" rev="3.2.1" conf="*->*,!sources,!javadoc"/>
+        <dependency org="commons-fileupload" name="commons-fileupload" rev="1.2.1" conf="*->*,!sources,!javadoc"/>
+        <dependency org="commons-io" name="commons-io" rev="1.4" conf="*->*,!sources,!javadoc"/>
+        <dependency org="commons-lang" name="commons-lang" rev="2.5" conf="*->*,!sources,!javadoc"/>
+        <dependency org="commons-logging" name="commons-logging" rev="1.1.1" conf="*->*,!sources,!javadoc"/>
+        <dependency org="javax.mail" name="mail" rev="1.4.1" conf="*->*,!sources,!javadoc"/>
+        <dependency org="com.yahoo.platform.yui" name="yuicompressor" rev="2.3.6" conf="*->*,!sources,!javadoc"/>
+        <dependency org="org.apache.velocity" name="velocity" rev="1.6.4" conf="*->*,!sources,!javadoc"/>
+        <dependency org="org.apache.velocity" name="velocity-tools" rev="2.0" conf="*->*,!sources,!javadoc"/>
+        <!--<dependency org="com.ibm.icu" name="icu4j" rev="4.0.1"/> revision 4.4.1 needed, not in maven repo -->
+        <dependency org="org.apache.xmlbeans" name="xmlbeans" rev="2.4.0" conf="*->*,!sources,!javadoc"/>
+    </dependencies>
+</ivy-module>
\ No newline at end of file
diff -r 8e10744fd54e -r ca6de4d06520 lib/yuicompressor-2.4.2.jar
Binary file lib/yuicompressor-2.4.2.jar has changed
diff -r 8e10744fd54e -r ca6de4d06520 src/org/w3c/unicorn/Framework.java
--- a/src/org/w3c/unicorn/Framework.java	Tue Jun 22 14:21:08 2010 +0200
+++ b/src/org/w3c/unicorn/Framework.java	Tue Jun 22 14:22:02 2010 +0200
@@ -10,7 +10,9 @@
 import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.Hashtable;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -42,6 +44,8 @@
 import org.w3c.unicorn.tasklist.parameters.Value;
 import org.w3c.unicorn.util.Language;
 import org.w3c.unicorn.util.ListFiles;
+import org.w3c.unicorn.util.Message;
+import org.w3c.unicorn.util.MessageList;
 import org.w3c.unicorn.util.Property;
 import org.w3c.unicorn.util.UCNProperties;
 import org.w3c.unicorn.response.Response;
@@ -116,6 +120,7 @@
 			initLanguages();
 			initTasklists();
 			initVelocity();
+			initDefaultMessages();
 			isUcnInitialized = true;
 			logger.info("Unicorn initialized successfully.");
 		} catch (InitializationFailedException e) {
@@ -127,13 +132,14 @@
 	public static void initCore() throws InitializationFailedException {
 		if (System.getProperty("unicorn.home") == null) {
 			try {
-				URL classesDir = Framework.class.getResource("/");
-				File classes = new File(classesDir.toURI());
-				File webInf = new File(classes.getParent());
-				System.setProperty("unicorn.home", webInf.getParent());
+				URL frameworkDir = Framework.class.getResource("Framework.class");
+				File unicornHome = new File(frameworkDir.toURI());
+				for (int i=0; i<6; i++)
+					unicornHome = unicornHome.getParentFile();
+				System.setProperty("unicorn.home", unicornHome.getAbsolutePath());
 			} catch (URISyntaxException e) {
 				throw new InitializationFailedException(e.getMessage(), e);
-			}
+			} 
 		}
 		
 		// Log4j initialization attempt
@@ -161,7 +167,23 @@
 		} catch (IOException e) {
 			throw new InitializationFailedException("Error reading \"unicorn.properties\": " + e.getMessage());
 		} 
-
+		
+		// creating uploaded and temporary files directories
+		File upload_repo = new File(Property.get("UPLOADED_FILES_REPOSITORY"));
+		File temporary_repo = new File(Property.get("PATH_TO_TEMPORARY_FILES"));
+		if (upload_repo.mkdir() || upload_repo.exists())
+			logger.debug("> Created uploaded files directory: \n\t" 
+				+ Property.get("UPLOADED_FILES_REPOSITORY"));
+		else 
+			throw new InitializationFailedException("Unable to create uploaded files directory: \n\t"
+				+ Property.get("UPLOADED_FILES_REPOSITORY"));
+		if (temporary_repo.mkdir() || temporary_repo.exists())
+			logger.debug("> Created temporary files directory: \n\t" 
+				+ Property.get("PATH_TO_TEMPORARY_FILES"));
+		else
+			throw new InitializationFailedException("Unable to create temporary files directory: \n\t"
+				+ Property.get("PATH_TO_TEMPORARY_FILES"));
+		
 		// Loading other config files
 		for (String fileName : configFiles) {
 			InputStream confStream = Framework.class.getResourceAsStream("/" + fileName);
@@ -534,11 +556,73 @@
 			context.put("lang", locale.getName());
 			context.put("direction", Language.getLocaleDirection(locale));
 			context.put("defaultLocale", Language.getDefaultLocale());
+			context.put("year", (new SimpleDateFormat("yyyy")).format(new Date()));
 			languageContexts.put(locale, context);
 		}
 		logger.debug("> " + languageContexts.size() + " velocity context(s) created");
 		
 		logger.info("OK - Velocity successfully initialized");
+	}
+	
+	public static void initDefaultMessages() {
+		logger.debug("-------------------------------------------------------");
+		logger.debug("Loading messages from messages.properties");
+		
+		InputStream stream = Framework.class.getResourceAsStream("/messages.properties");
+		
+		if (stream == null) {
+			logger.info("File messages.properties not found in classpath. No default message has been added.");
+			return;
+		}
+		
+		Properties props = new Properties();
+		try {
+			props.load(Framework.class.getResourceAsStream("/messages.properties"));
+		} catch (IOException e) {
+			logger.error("Unable to read messages.properties.", e);
+			return;
+		}
+		ArrayList<String> messageIds = new ArrayList<String>(); 
+		for (Object key : props.keySet()) {
+			String prop = key.toString();
+			if (prop.endsWith(".level")) {
+				String id = prop.replace(".level", "");
+				messageIds.add(id);
+				logger.debug("> Found message id: " + id);
+			}
+		}
+		MessageList.getDefaultMessages().clear();
+		for (String id : messageIds) {
+			Message message = new Message();
+			String level = (String) props.get(id + ".level"); 
+			if (level.equals("warning"))
+				message.setLevel(Message.WARNING);
+			else if (level.equals("error"))
+				message.setLevel(Message.ERROR);
+			else if (level.equals("info"))
+				message.setLevel(Message.INFO);
+			else {
+				logger.warn("Level for message id " + id + " is invalid: " + level + ". Must be one of warning, error, or info.");
+				continue;
+			}
+			logger.debug(">> level of " + id + " is: " + level);
+			String mess = (String) props.get(id + ".message");
+			if (props.get(id + ".message") != null)
+				message.setMessage(mess);
+			else {
+				logger.warn("Message for message id " + id + " is not set. Add a " + id + ".message property in messages.properties.");
+				continue;
+			}
+			logger.debug(">> message of " + id + " is:\n\t" + mess);
+			String content = (String) props.get(id + ".content");
+			if (content != null) {
+				message.setContent(content);
+				logger.debug(">> content of " + id + " is:\n\t" + content);
+			}
+			MessageList.getDefaultMessages().add(message);
+		}
+		logger.debug("> " + MessageList.getDefaultMessages().size() + " default messages loaded");
+		logger.info("OK - Default messages succesfully loaded");
 	}
 	
 	private static void loadConfigFile(InputStream stream, String fileName, String[]... parameters) throws IOException {		
diff -r 8e10744fd54e -r ca6de4d06520 src/org/w3c/unicorn/action/InitAction.java
--- a/src/org/w3c/unicorn/action/InitAction.java	Tue Jun 22 14:21:08 2010 +0200
+++ b/src/org/w3c/unicorn/action/InitAction.java	Tue Jun 22 14:22:02 2010 +0200
@@ -14,6 +14,7 @@
 import org.w3c.unicorn.Framework;
 import org.w3c.unicorn.exceptions.InitializationFailedException;
 import org.w3c.unicorn.util.Language;
+import org.w3c.unicorn.util.MessageList;
 import org.w3c.unicorn.util.Templates;
 
 import com.ibm.icu.util.ULocale;
@@ -170,18 +171,26 @@
 				}
 			}
 				
-			out.write("Initializing Velocity: ");
-			response.flushBuffer();
-			try {
-				Framework.initVelocity();
+			if (task.equals("all") || task.equals("messages")) {
+				out.write("Loading default messages: ");
+				Framework.initDefaultMessages();
 				out.write("OK\n");
-			} catch (InitializationFailedException e) {
-				Framework.logger.fatal(e.getMessage(), e);
-				out.write("FAILED\n" + e);
-				Framework.isUcnInitialized = false;
-				return;
+				out.write("\t" + MessageList.getDefaultMessages().size() + " message(s) loaded.\n");
 			}
 			
+			if (!task.equals("messages")) {
+				out.write("Initializing Velocity: ");
+				response.flushBuffer();
+				try {
+					Framework.initVelocity();
+					out.write("OK\n");
+				} catch (InitializationFailedException e) {
+					Framework.logger.fatal(e.getMessage(), e);
+					out.write("FAILED\n" + e);
+					Framework.isUcnInitialized = false;
+					return;
+				}
+			}
 			out.close();
 		}
 	}
diff -r 8e10744fd54e -r ca6de4d06520 src/org/w3c/unicorn/request/URIRequest.java
--- a/src/org/w3c/unicorn/request/URIRequest.java	Tue Jun 22 14:21:08 2010 +0200
+++ b/src/org/w3c/unicorn/request/URIRequest.java	Tue Jun 22 14:22:02 2010 +0200
@@ -131,9 +131,11 @@
 			int responseCode = aURLConnection.getResponseCode();
 			switch (responseCode) {
 			case HttpURLConnection.HTTP_NOT_FOUND:
-				throw new UnicornException(Message.ERROR, "$message_observer_not_found", null, observerName);
+				throw new UnicornException(Message.ERROR, "$message_observer_not_found", null, observerName, 
+						aURL.toString().replaceAll("&?" + Framework.mapOfObserver.get(observerId).getParamOutputName() + "=[^&]*", ""));
 			case HttpURLConnection.HTTP_INTERNAL_ERROR:
-				throw new UnicornException(Message.ERROR, "$message_observer_internal_error", null, observerName);
+				throw new UnicornException(Message.ERROR, "$message_observer_internal_error", null, observerName,
+						aURL.toString().replaceAll("&?" + Framework.mapOfObserver.get(observerId).getParamOutputName() + "=[^&]*", ""));
 			}
 			
 			return ResponseFactory.getResponse(aURLConnection.getInputStream(), responseType, aURL.toString(), aURLConnection.getContentEncoding(), observerId);
diff -r 8e10744fd54e -r ca6de4d06520 src/org/w3c/unicorn/request/UploadRequest.java
--- a/src/org/w3c/unicorn/request/UploadRequest.java	Tue Jun 22 14:21:08 2010 +0200
+++ b/src/org/w3c/unicorn/request/UploadRequest.java	Tue Jun 22 14:22:02 2010 +0200
@@ -3,11 +3,14 @@
 // Please first read the full copyright statement in file COPYRIGHT.html
 package org.w3c.unicorn.request;
 
+import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.util.Hashtable;
 import java.util.Map;
 
+import org.w3c.unicorn.Framework;
 import org.w3c.unicorn.contract.EnumInputMethod;
 import org.w3c.unicorn.input.UploadInputModule;
 import org.w3c.unicorn.response.Response;
@@ -91,6 +94,7 @@
 	@Override
 	public Response doRequest() throws UnicornException {
 		logger.trace("doRequest");
+		String observerName = Framework.mapOfObserver.get(observerId).getName(sLang.split(",")[0]);
 		try {
 			aClientHttpRequest = new ClientHttpRequest(sURL);
 			logger.debug("Lang : " + this.sLang + ".");
@@ -107,8 +111,19 @@
 				aClientHttpRequest.setParameter(sName, sValue);
 			}
 			
-			// TODO How to find the response content encoding here ?
-			return ResponseFactory.getResponse(aClientHttpRequest.post(), responseType, sURL.toString(), null, observerId);
+			InputStream stream = null;
+			try {
+				stream = aClientHttpRequest.post();
+				// TODO How to find the response content encoding here ?
+				return ResponseFactory.getResponse(stream, responseType, sURL.toString(), null, observerId);
+			} catch (FileNotFoundException e) {
+				throw new UnicornException(Message.ERROR, "$message_observer_not_found", null, observerName, Framework.mapOfObserver.get(observerId).getIndexURI());
+			} catch (IOException e) {
+				if (e.getMessage().contains("Server returned HTTP response code: 500"))
+					throw new UnicornException(Message.ERROR, "$message_observer_internal_error", null, observerName, Framework.mapOfObserver.get(observerId).getIndexURI());
+				else
+					throw e;
+			}			
 
 		} catch (MalformedURLException e) {
 			throw new UnicornException(new Message(e));
diff -r 8e10744fd54e -r ca6de4d06520 src/org/w3c/unicorn/util/MessageList.java
--- a/src/org/w3c/unicorn/util/MessageList.java	Tue Jun 22 14:21:08 2010 +0200
+++ b/src/org/w3c/unicorn/util/MessageList.java	Tue Jun 22 14:22:02 2010 +0200
@@ -8,10 +8,17 @@
 
 	private static final long serialVersionUID = -720345110444544838L;
 	
+	private static ArrayList<Message> defaultMessages = new ArrayList<Message>();
+	
 	private ULocale locale;
 
 	public MessageList() {
-		this.locale = Language.getDefaultLocale();
+		this(Language.getDefaultLocale());
+	}
+	
+	public MessageList(ULocale lang) {
+		this.locale = lang;
+		this.addAll(defaultMessages);
 	}
 	
 	public boolean hasInfo() {
@@ -34,10 +41,6 @@
 				return true;
 		return false;
 	}
-	
-	public MessageList(ULocale lang) {
-		this.locale = lang;
-	}
 
 	public ULocale getLocale() {
 		return locale;
@@ -47,4 +50,12 @@
 		this.locale = locale;
 	}
 
+	public static ArrayList<Message> getDefaultMessages() {
+		return defaultMessages;
+	}
+
+	public static void setDefaultMessages(ArrayList<Message> defaultMessages) {
+		MessageList.defaultMessages = defaultMessages;
+	}
+
 }
diff -r 8e10744fd54e -r ca6de4d06520 src/org/w3c/unicorn/util/Templates.java
--- a/src/org/w3c/unicorn/util/Templates.java	Tue Jun 22 14:21:08 2010 +0200
+++ b/src/org/w3c/unicorn/util/Templates.java	Tue Jun 22 14:22:02 2010 +0200
@@ -1,6 +1,5 @@
 package org.w3c.unicorn.util;
 
-import java.io.StringWriter;
 import java.io.Writer;
 
 import org.apache.velocity.VelocityContext;
@@ -8,20 +7,12 @@
 import org.apache.velocity.exception.ParseErrorException;
 import org.apache.velocity.exception.ResourceNotFoundException;
 import org.w3c.unicorn.Framework;
-import com.mindprod.compactor.*;
 
 public class Templates {
 	
 	public static void write(String templateName, VelocityContext context, Writer writer) {
 		try {
-			StringWriter sw = new StringWriter();
-			if (Property.get("USE_HTML_COMPACTOR").equalsIgnoreCase("true")) {
-				Framework.getVelocityEngine().mergeTemplate(templateName, "UTF-8", context, sw);
-				Compactor compactor = new Compactor();
-				writer.append(compactor.compactString(sw.toString(), templateName));
-			} else {
-				Framework.getVelocityEngine().mergeTemplate(templateName, "UTF-8", context, writer);
-			}
+			Framework.getVelocityEngine().mergeTemplate(templateName, "UTF-8", context, writer);
 		} catch (ResourceNotFoundException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();

Received on Tuesday, 22 June 2010 12:22:18 UTC