Java

codehausのmavenリポジトリ

毎回わかんなくなるのでメモ http://repository.codehaus.org/ http://snapshots.repository.codehaus.org/

TeedaのTreeコンポーネントのメモ

ドキュメントが無さそうなので手探り バージョンはteeda-1.0.11-SP2 画像のパス指定 teedaCustomize.diconに追加 <component class="org.seasar.teeda.extension.util.TreeNavigationImageLocatorImpl"> <property name="imageRoot">/img/</property> </component> 画像のファイル名はTreeNavigationImageLocatorImplクラスの定数で定義されてるTeedaExtensionのjarに含まれる画像を使う場合はこうす…

凄いバカなプログラムを作ろう

前回に引き続き挑戦 http://d.hatena.ne.jp/nowokay/20070324#1174695655 DSL(なのかな?)を作ってしまうことを目指して実装。 してたけど、場当たり的に作っていたらぐだぐだに とりあえず動くところまで持っていった版 へっぽこ具合もバカということで pac…

ソースコードを見た人が呆れるプログラムを作ろう企画

定時まで暇になったので挑戦 http://d.hatena.ne.jp/nowokay/20070309#1173428898 Arrays.deepToString&置換版(dataに [ ] , を含まないとき限定) public void print(String[][] data) { System.out.println(Arrays.deepToString(data) .replaceAll("^null$…

DOMツリー構築を可変長引数で簡単に

名前空間、実体参照、CDATAセクション、、、は考慮外 public class DOM { private static ThreadLocal<Document> threadLocal = new ThreadLocal<Document>(); public DOM() throws ParserConfigurationException { threadLocal.set(DocumentBuilderFactory.newInstance().newDoc</document></document>…

XPathインジェクションの回避

詳細はここ http://www.xmldb.jp/xpriori_forum/developer/tutorial/tutorial_webapplication_9.htmlコードもあるけど若干変なので書き直してみた。 public static String escapeXPath(String str) { if (str == null) { return null; } if (str.indexOf('"'…

ロケール依存情報など

http://www-06.ibm.com/jp/developerworks/java/library/j-numberformat/index.shtml ここを見て、そういや数値フォーマットの厳密な定義を見たこと無いと思い調べてみた。 ロケール固有リソースはsun.util.resources.LocaleDataが保持してる模様。(JDK6) Re…

ToStringBuilderでインデント

Commons LangのToStringBuilder&ToStringStyle.MULTI_LINE_STYLE Bean@69b332[ name=あいう age=123 child=Bean@a62fc3[ name=かきく age=45 child=<null> ] ]ネストしてる要素のインデントが無くてガッカリなのでちょっとスタイル改造 import org.apache.commons</null>…

安全なjava.io

よく見かけるパターン public void foo() throws IOException { OutputStream out = new FileOutputStream("foo.txt"); try { //いろいろ } finally { out.close(); } }これは良くない。 closeで例外が起こると、tryブロック内でthrowされたものを上書きして…

ラベル

http://popo.dyndns.info/~manhole/diary/20060921.html#p02 これは知らなかった。気になったので言語仕様を眺めてみる。ステートメントなら何でもラベルを付けられる模様。 label: System.out.println("foo"); label:;ブロックならラベル付きbreak可能。 la…

XMLEncoderでenum

J2SE5のXMLEncoderはenumに対応してないので、enum用のPersistenceDelegateを作る。(JDK6は対応してる?) public class EnumPersistenceDelegate extends PersistenceDelegate { @Override protected Expression instantiate(Object oldInstance, Encoder ou…

IPv6対応URLの正規表現 その2

やっぱりきもちわるいからIPv6の省略記法に対応 IPv4も厳密に ^(?:https?:[/][/](?:(?:(?:(?:(?:[0-9a-zA-Z]|[0-9a-zA-Z](?:[0-9a-zA-Z]|-)*[0-9a-zA-Z])[.])*(?:[a-zA-Z]|[a-zA-Z](?:[0-9a-zA-Z]|-)*[0-9a-zA-Z]))|(?:(?:[0-9]{1,2}|[01][0-9]{2}|2[0-4][0-…

IPv6対応URLの正規表現

Struts(というかCommons Validator)がIPv6のURLに対応してないから正規表現で作ることになる。 既存のURLチェック書き換えたほうが早いんじゃ?という意見はなぜか却下。正規表現なら他でも使えるからまあいいかと実装する。資料はこの辺 RFC 1738 Uniform R…