• R/O
  • SSH
  • HTTPS

mergedoc: Commit


Commit MetaInfo

Revision2748 (tree)
Time2021-07-19 18:12:58
Authorcypher256

Log Message

(empty log message)

Change Summary

Incremental Difference

--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/Pleiades.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/Pleiades.java (revision 2748)
@@ -9,8 +9,6 @@
99 import java.io.File;
1010 import java.lang.instrument.Instrumentation;
1111
12-import org.apache.commons.io.FileUtils;
13-
1412 import jp.sourceforge.mergedoc.pleiades.log.FileLogger;
1513 import jp.sourceforge.mergedoc.pleiades.log.Logger;
1614 import jp.sourceforge.mergedoc.pleiades.resource.Filez;
@@ -92,6 +90,7 @@
9290 * @return Pleiades コンテキスト (not null)
9391 */
9492 public static PleiadesContext getPleiadesContext() {
93+
9594 if (pleiadesContext == null) {
9695 Logger log = Logger.getLogger(Pleiades.class);
9796 log.info("[JUnit/Tool] ツール向け PleiadesContext を生成しました。");
@@ -123,10 +122,7 @@
123122
124123 Logger log = Logger.getLogger(Pleiades.class);
125124 log.fatal(e, message + "\n起動オプションに -clean を指定して起動してください。");
126-
127- // 念のため、次回 -clean 起動されるように、キャッシュファイルを削除
128- File cache = Pleiades.temp(CacheFilez.TRANSFORMED_CLASS_CACHE);
129- FileUtils.deleteQuietly(cache);
125+ CacheFilez.clear(); // 次回 -clean されなかった場合のために、キャッシュファイルを削除
130126 System.exit(-1);
131127 }
132128 }
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/log/Logger.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/log/Logger.java (revision 2748)
@@ -380,6 +380,7 @@
380380 public void fatal(Throwable e, String message, Object... args) {
381381
382382 println(LogLevel.FATAL, e, message, args);
383+
383384 String dialogMessage = format(message, args);
384385 if (e != null) {
385386 dialogMessage += "\n原因:" + e + "\n\n" + ExceptionUtils.getStackTrace(e);
@@ -405,7 +406,7 @@
405406 dialog.dispose();
406407
407408 } catch (Exception e) {
408- e.printStackTrace(); // ログに出力できない場合を考慮し標準出力
409+ println(LogLevel.ERROR, e, message);
409410 }
410411 }
411412
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/resource/PropertySet.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/resource/PropertySet.java (revision 2748)
@@ -296,8 +296,11 @@
296296 os = zos;
297297 }
298298 List<String> keyList = store(os, header);
299-
300- log.info("store %4.3f 秒 - %6d エントリー %s", (System.nanoTime() - startTime) / 1e9, size(), fileName);
299+ if (keyList == null) {
300+ log.warn("保存できませんでした。%s", fileName);
301+ } else {
302+ log.info("store %4.3f 秒 - %6d エントリー %s", (System.nanoTime() - startTime) / 1e9, size(), fileName);
303+ }
301304 return keyList;
302305
303306 } catch (IOException e) {
@@ -339,7 +342,7 @@
339342 }
340343
341344 // -------------------------------------------------------------------------
342- // 以下、java.util.Properties の拡張
345+ // 以下、java.util.Properties からの拡張
343346
344347 /** ロードカウント (非同期ロードは未対応) */
345348 private int loadCount;
@@ -446,18 +449,18 @@
446449 writeln(writer, "#" + new Date().toString());
447450
448451 // ConcurrentModificationException 低減のため clone
449- HashMap<String, String> c = null;
450- try {
451- c = (HashMap<String, String>) clone();
452- } catch (ConcurrentModificationException e) {
453- log.info("非同期変更により保存できませんでした。リトライします。");
452+ Map<String, String> c = null;
453+ for (int i = 0; i < 3; i++) {
454454 try {
455- c = (HashMap<String, String>) clone();
456- } catch (ConcurrentModificationException e2) {
457- log.warn("非同期変更により保存できませんでした。");
458- return null;
455+ c = (Map<String, String>) clone();
456+ break;
457+ } catch (ConcurrentModificationException e) {
458+ log.warn("ConcurrentModificationException 保存リトライ");
459459 }
460460 }
461+ if (c == null) {
462+ return null;
463+ }
461464
462465 // キーでソート
463466 List<String> keyList = new ArrayList<>(c.keySet());
@@ -735,7 +738,11 @@
735738 }
736739
737740 private static void writeln(BufferedWriter bw, String s) throws IOException {
741+
738742 bw.write(s);
739- bw.newLine();
743+
744+ // 高速化: LF 固定
745+ //bw.newLine();
746+ bw.write('\n');
740747 }
741748 }
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/Analyses.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/Analyses.java (revision 2748)
@@ -57,7 +57,7 @@
5757 // → format エラーになるため別スレッドでログ出力
5858 Asyncz.execute("計測記録リトライ・ログ出力", () -> {
5959 String k = key.replace(Pleiades.PACKAGE_NAME + ".", "");
60- log.warn("計測記録リトライ computeIfAbsent: %s", k);
60+ log.warn("ConcurrentModificationException 計測記録リトライ computeIfAbsent: %s", k);
6161 });
6262 return computeIfAbsent(key, mappingFunction); // 再帰 (無限再帰は発生しない前提)
6363 }
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/Asyncz.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/Asyncz.java (revision 2748)
@@ -123,14 +123,16 @@
123123 }
124124
125125 /**
126- * 非同期実行をシャットダウンして、終了するまで待ちます。
127- * すでにシャットダウンされている場合は何も行いません。
126+ * awaitTermination を VM シャットダウンフックに登録します。<br>
127+ * ここでは待機せずに、制御をすぐに返します。
128128 */
129- public static synchronized void shutdownAwait() {
129+ public static synchronized void awaitShutdownHook() {
130130
131- log.debug("非同期実行をシャットダウンします。");
132- threadPoolForceClean = shutdownAwait(threadPoolForceClean);
133- threadPool = shutdownAwait(threadPool);
131+ Runtime.getRuntime().addShutdownHook(new Thread(() -> {
132+ log.debug("シャットダウンフックによる非同期実行シャットダウン");
133+ threadPoolForceClean = shutdownAwait(threadPoolForceClean);
134+ threadPool = shutdownAwait(threadPool);
135+ }));
134136 }
135137
136138 /**
@@ -139,6 +141,7 @@
139141 * @return 常に null
140142 */
141143 private static ExecutorService shutdownAwait(final ExecutorService pool) {
144+
142145 if (pool != null) {
143146 try {
144147 pool.shutdown();
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/LauncherEclipseTransformer.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/LauncherEclipseTransformer.java (revision 2748)
@@ -176,12 +176,12 @@
176176 // Eclipse バージョン取得
177177 String buildId = Applicationz.getConfigIni("eclipse.buildId");
178178 if (buildId != null) {
179- // 高速化: 以前はフィーチャーディレクトリ名から取得していたが config.ini から取得に変更
179+ // 高速化: 以前は features ディレクトリから探索していたが config.ini から取得に変更
180180 // buildId 例: 4.20.0.I20210611-1600
181181 version = buildId.replaceFirst("^(\\d+\\.\\d+).*", "$1"); // 例: 4.20
182182 year = buildId.replaceFirst("^.+?\\.I(\\d{4}).*", "$1"); // 例: 2021
183183 }
184- // config.ini から取得できない場合、フィーチャーを検索してディレクトリ名から Eclipse バージョン取得
184+ // config.ini から取得できない場合、features を検索してディレクトリ名から Eclipse バージョン取得
185185 else {
186186 File featuresDir = Applicationz.osgiHome("features");
187187 String[] featureNames = ArrayUtils.nullToEmpty(featuresDir.list());
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/LauncherTransformer.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/LauncherTransformer.java (revision 2748)
@@ -92,7 +92,7 @@
9292 Asyncz.execute("-clean に依存しないプロパティーのロード", () -> {
9393
9494 // ログの場所を標準出力
95- System.out.println("Pleiades ログなどの一時ディレクトリ: " + Pleiades.temp());
95+ System.out.println("Pleiades ログ出力場所: " + Pleiades.temp());
9696
9797 // 起動トランスフォーマーのクラス名と Pleiades 起動時間を出力
9898 log.info("Pleiades AOP 起動トランスフォーマーを開始します。%s %.3f 秒",
@@ -248,7 +248,7 @@
248248 // 高速化: main スレッドではなく別スレッドでログ出力
249249 log.info("-clean 元引数:%s 確定後:%s", containsCleanInArgs, pleiadesContext.isClean);
250250
251- // プロセス間排他ロック
251+ // プロセス内排他ロック
252252 // 以前は同期処理の中に入れると ClassCircularityError 発生していたが現在は発生しない 2021.06.12
253253 ProcessLockz.lock();
254254
@@ -273,7 +273,7 @@
273273
274274 } finally {
275275
276- // プロセス間排他ロック解除
276+ // プロセス内排他ロック解除
277277 ProcessLockz.release();
278278 }
279279 });
@@ -357,30 +357,37 @@
357357 });
358358 }
359359
360- try {
361- // プロセス間排他ロック
362- ProcessLockz.lock();
360+ Asyncz.execute("キャッシュ保存", () -> {
363361
364- // AOP でキャッシュ破棄が指示されていた場合 (IDEA のみが使用)
365- if (TranslationDictionary.getInstance().isInvalidateCache) {
362+ try {
363+ // プロセス内排他ロック
364+ ProcessLockz.lock();
366365
367- // キャッシュをクリア
368- CacheFilez.clear();
366+ // AOP でキャッシュ破棄が指示されていた場合 (IDEA のみが使用)
367+ if (TranslationDictionary.getInstance().isInvalidateCache) {
368+
369+ // キャッシュをクリア
370+ CacheFilez.clear();
371+
372+ } else {
373+
374+ // キャッシュを保存
375+ TransformedClassCache.getInstance().shutdown();
376+ ExcludeClassNameCache.getInstance().shutdown();
377+ TranslationDictionary.getInstance().storeCache();
378+ }
379+
380+ } catch (Exception e) {
381+ log.warn(e, "キャッシュの更新に失敗しました。");
382+
383+ } finally {
384+
385+ // プロセス内排他ロック解除
386+ ProcessLockz.release();
387+
388+ // awaitTermination を VM シャットダウンフックに登録
389+ Asyncz.awaitShutdownHook();
369390 }
370- else {
371- Asyncz.execute("変換済みクラス・キャッシュ保存", TransformedClassCache.getInstance()::shutdown);
372- Asyncz.execute("変換除外クラス名キャッシュ保存", ExcludeClassNameCache.getInstance()::shutdown);
373- Asyncz.execute("翻訳プロパティーキャッシュ保存", TranslationDictionary.getInstance()::shutdown);
374- Asyncz.shutdownAwait();
375- }
376-
377- } catch (Exception e) {
378- log.warn(e, "キャッシュの更新に失敗しました。");
379-
380- } finally {
381-
382- // プロセス間排他ロック解除
383- ProcessLockz.release();
384- }
391+ });
385392 }
386393 }
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/ProcessLockz.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/ProcessLockz.java (revision 2748)
@@ -17,9 +17,7 @@
1717 import jp.sourceforge.mergedoc.pleiades.log.Logger;
1818
1919 /**
20- * プロセス間排他ロック・ユーティリティーです。
21- * ロックは 1 つの Pleiades で 1 つ存在し、プロセス間の排他ロックを提供します。
22- * <p>
20+ * 同一プロセス内の排他ロック・ユーティリティーです。
2321 * @author cypher256
2422 */
2523 public class ProcessLockz {
@@ -37,31 +35,31 @@
3735 try {
3836 LOCK_FILE.createNewFile();
3937 } catch (IOException e) {
40- log.error(e, "プロセス間排他ロック・ファイルの作成に失敗しました。");
38+ log.error(e, "プロセス内排他ロック・ファイルの作成に失敗しました。");
4139 }
4240 }
4341
4442 /**
4543 * プロセスを排他ロックします。
46- * <pre>
47- * ・このプロセス内ですでにロックされている場合は何も行いません。
48- * ・別プロセスでロックされている場合は一定時間待機します。
49- * </pre>
44+ * <ul>
45+ * <li>このプロセス内ですでにロックされている場合は何も行いません。
46+ * <li>別プロセスでロックされている場合は一定時間待機します。
47+ * </ul>
5048 */
5149 public synchronized static void lock() {
52-
50+
5351 if (fileChannel != null) {
54- log.debug("すでにこのプロセス内でロックされています。");
52+ log.warn("すでにこのプロセス内でロックされています。");
5553 return;
5654 }
57- log.debug("プロセス間排他ロックします。");
58-
55+ log.debug("プロセス内排他ロックします。");
56+
5957 try (RandomAccessFile raf = new RandomAccessFile(LOCK_FILE.getPath(), "rw")) {
6058 fileChannel = raf.getChannel();
61-
59+
6260 FileLock lock = fileChannel.tryLock();
6361 for (int i = 0; i < 10 && lock == null; i++) {
64- log.debug("プロセス間排他ロック待機中...");
62+ log.warn("プロセス内排他ロック待機中...");
6563 TimeUnit.SECONDS.sleep(i);
6664 lock = fileChannel.tryLock();
6765 }
@@ -69,27 +67,27 @@
6967 log.warn("プロセス間の排他ロックを無視して処理を続行します。");
7068 }
7169 } catch (IOException | InterruptedException e) {
72- log.error(e, "プロセス間排他ロックに失敗しました。");
70+ log.error(e, "プロセス内排他ロックに失敗しました。");
7371 }
7472 }
7573
7674 /**
7775 * プロセスの排他ロックを解除します。
78- * <pre>
79- * ・このプロセス内でロックされていない場合は何も行いません。
80- * </pre>
76+ * <ul>
77+ * <li>このプロセス内でロックされていない場合は何も行いません。
78+ * </ul>
8179 */
8280 public synchronized static void release() {
83-
81+
8482 try {
8583 if (fileChannel != null) {
86-
87- log.debug("プロセス間排他ロックを解除します。");
84+
85+ log.debug("プロセス内排他ロックを解除します。");
8886 fileChannel.close();
8987 fileChannel = null;
9088 }
9189 } catch (IOException e) {
92- log.error(e, "プロセス間排他ロック解除に失敗しました。");
90+ log.error(e, "プロセス内排他ロック解除に失敗しました。");
9391 }
9492 }
9593 }
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/CacheFilez.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/CacheFilez.java (revision 2748)
@@ -34,10 +34,14 @@
3434 * すべてのキャッシュをクリアします。
3535 */
3636 public static void clear() {
37- Pleiades.temp(TRANS_CACHE_PROP).delete();
38- Pleiades.temp(MNEMONIC_CACHE_PROP).delete();
39- Pleiades.temp(EXCLUDE_CLASS_LIST).delete();
40- Pleiades.temp(TRANSFORMED_CLASS_CACHE).delete();
41- log.info("すべてのキャッシュ・ファイルをクリアしました。");
37+ try {
38+ Pleiades.temp(TRANS_CACHE_PROP).delete();
39+ Pleiades.temp(MNEMONIC_CACHE_PROP).delete();
40+ Pleiades.temp(EXCLUDE_CLASS_LIST).delete();
41+ Pleiades.temp(TRANSFORMED_CLASS_CACHE).delete();
42+ log.info("すべてのキャッシュ・ファイルをクリアしました。");
43+ } catch (Exception e) {
44+ log.warn(e, "キャッシュ・ファイルのクリア失敗"); // NPE
45+ }
4246 }
4347 }
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/TranslationCache.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/TranslationCache.java (revision 2748)
@@ -111,7 +111,7 @@
111111 * ニーモニックは日本用に変換されます。
112112 * @param en 英語リソース文字列 (ニーモニック含む)
113113 * @param joinPoint ジョイン・ポイント
114- * @return 日本語リソース文字列 (ニーモニック含む)。
114+ * @return 日本語リソース文字列 (ニーモニックを処理する)。
115115 */
116116 public String translateMnemonic(String en, RuntimeJoinPoint joinPoint) {
117117 return translate(en, joinPoint, true);
@@ -134,7 +134,7 @@
134134 * @param en 英語リソース文字列 (ニーモニック含む) : Not null
135135 * @param joinPoint ジョイン・ポイント
136136 * @param mnemonics ニーモニックを処理する場合は true
137- * @return 日本語リソース文字列 (ニーモニック含む)。
137+ * @return 日本語リソース文字列 (ニーモニックを処理する)。
138138 */
139139 // Java 11 以降で private だと AOP エラーになる
140140 protected String translate(String en, RuntimeJoinPoint joinPoint, boolean mnemonics) {
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/TranslationDictionary.java (revision 2747)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/TranslationDictionary.java (revision 2748)
@@ -34,8 +34,7 @@
3434 import jp.sourceforge.mergedoc.pleiades.runtime.util.ValueHashPropertySet;
3535
3636 /**
37- * キャッシュ機構および実行時除外機構を持つ翻訳辞書クラスです。<br>
38- * Eclipse 実行時の動的翻訳に利用されるクラスです。
37+ * 日英翻訳辞書クラスです。
3938 * @author cypher256
4039 */
4140 public class TranslationDictionary {
@@ -270,10 +269,14 @@
270269 }
271270
272271 /**
273- * シャットダウンします。
274- * 翻訳プロパティーはキャッシュとして永続化されます。
272+ * キャッシュを保存します。
273+ * <ul>
274+ * <li>翻訳プロパティーはキャッシュとして永続化されます。
275+ * <li>JUnit やツールからの利用時は呼び出す必要はありません
276+ * (キャッシュ・ファイル・パスが解決できないため例外が発生します)。
277+ * </ul>
275278 */
276- public void shutdown() {
279+ public void storeCache() {
277280
278281 isLoadedDefault = true;
279282 mnemonicCacheProp.store(MNEMONIC_CACHE_FILE);
@@ -298,20 +301,19 @@
298301 /**
299302 * 指定した英語リソース文字列から日本語リソースを探します。
300303 * ニーモニックは日本用に変換されます。
301- * @param enWithMnemonic 英語リソース文字列 (ニーモニック含む)
302- * @param joinPoint ジョイン・ポイント
303- * @return 日本語リソース文字列 (ニーモニック含む)
304+ * @param enWithMnemonic 英語リソース文字列 (非 null、ニーモニック含む)
305+ * @return 日本語リソース文字列。見つからない場合は enWithMnemonic。
304306 */
305- public String lookup(String enWithMnemonic, RuntimeJoinPoint joinPoint) {
306- return lookup(enWithMnemonic, joinPoint, true);
307+ public String lookup(String enWithMnemonic) {
308+ return lookup(enWithMnemonic, null, true);
307309 }
308310
309311 /**
310312 * 指定した英語リソース文字列から日本語リソースを探します。
311- * @param enWithMnemonic 英語リソース文字列 (ニーモニック含む) : 1 文字以上
312- * @param joinPoint ジョイン・ポイント
313+ * @param enWithMnemonic 英語リソース文字列 (非 null、ニーモニック含む)
314+ * @param joinPoint 実行時ジョイン・ポイント (null 可)
313315 * @param mnemonics ニーモニックを処理する場合は true
314- * @return 日本語リソース文字列 (ニーモニック含む)
316+ * @return 日本語リソース文字列。見つからない場合は enWithMnemonic。
315317 */
316318 public String lookup(String enWithMnemonic, RuntimeJoinPoint joinPoint, boolean mnemonics) {
317319
@@ -320,13 +322,12 @@
320322
321323 // 高速化のため、単純に判定可能な場合はニーモニック処理フラグを OFF にする
322324 if (mnemonics) {
323-
324- if (en.length() > 200) { // 文字数が多い場合はニーモニック無しとみなす (HTML などが該当)
325+ if (
326+ en.length() > 200 || // 文字数が多い場合はニーモニック無しとみなす (HTML などが該当)
327+ en.indexOf('&') == -1
328+ ) {
325329 mnemonics = false;
326330 }
327- else if (en.indexOf('&') == -1) {
328- mnemonics = false;
329- }
330331 }
331332
332333 // ニーモニック前処理 (除去)
@@ -358,7 +359,7 @@
358359 }
359360
360361 // 翻訳プロパティーから日本語訳を取得
361- String ja = lookupInternal(en, joinPoint);
362+ String ja = lookupInternal(en);
362363
363364 // 訳が見つかった場合
364365 if (!en.equals(ja)) {
@@ -422,10 +423,9 @@
422423 /**
423424 * 日本語訳を取得します。
424425 * @param en 英語リソース文字列(ニーモニック無し)
425- * @param joinPoint ジョイン・ポイント
426426 * @return 日本語リソース文字列(ニーモニック無し)。翻訳できない場合は en をそのまま返す。
427427 */
428- protected String lookupInternal(String en, RuntimeJoinPoint joinPoint) {
428+ protected String lookupInternal(String en) {
429429
430430 // 翻訳キャッシュ・プロパティーから取得
431431 String ja = transCacheProp.get(en);
--- trunk/Pleiades/src/main/resources/pleiades-config.xml (revision 2747)
+++ trunk/Pleiades/src/main/resources/pleiades-config.xml (revision 2748)
@@ -1404,13 +1404,21 @@
14041404 </pointCut>
14051405
14061406 <!--
1407- 通常翻訳 (before・第 1 引数) 呼び出しトレースによる除外なし
1408- STS 起動時の遅延ロードを防ぐため条件付き (STS.properties の %REGEX% 対応もあり) 2021.06.08
1409- 例: ClasspathListenerHandler addClasspathListener sts4.classpath.CSIPIcWCisBatched = true
1407+ 通常翻訳 (before・第 1 引数) 呼び出しトレースによる除外なし、キャッシュ抑止条件あり
14101408 -->
14111409 <pointCut editPoint="execution" timing="before">
14121410 <advice><![CDATA[
1413- if ($1 != null && !$1.contains(" sts4.classpath."))
1411+ if (
1412+ $1 != null &&
1413+
1414+ // Eclipse キーバインドの競合メッセージ 2021.07.19
1415+ // 例: A\ conflict\ occurred\ for\ CTRL+SHIFT+T ~ .WorkbenchHandlerServiceHandler@1ff65426,
1416+ !$1.startsWith("A conflict occurred for") &&
1417+
1418+ // STS 起動時の遅延ロードを防ぐため条件付き (STS.properties の %REGEX% 対応もあり) 2021.06.08
1419+ // 例: ClasspathListenerHandler addClasspathListener sts4.classpath.CSIPIcWCisBatched = true
1420+ !$1.contains(" sts4.classpath.")
1421+ )
14141422 $1 = ?{Translationz}.translate($1, null);
14151423 ]]></advice>
14161424
--- trunk/Pleiades/src/test/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/TranslationDictionaryTest.java (revision 2747)
+++ trunk/Pleiades/src/test/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/TranslationDictionaryTest.java (revision 2748)
@@ -9,19 +9,19 @@
99 protected final TranslationDictionary dic = new TranslationDictionary();
1010
1111 protected void assertLookup(String input, String expected) {
12- String result = dic.lookup(input, null);
12+ String result = dic.lookup(input);
1313 System.out.println(input + "=" + result);
1414 assertEquals(expected, result);
1515 }
1616
1717 protected void assertLookupFalse(String input) {
18- String result = dic.lookup(input, null);
18+ String result = dic.lookup(input);
1919 System.out.println(input + "=" + result);
2020 assertEquals(input, result);
2121 }
2222
2323 protected void assertLookupFalse(String input, String expected) {
24- String result = dic.lookup(input, null);
24+ String result = dic.lookup(input);
2525 System.out.println(input + "=" + result);
2626 assertEquals(expected, result);
2727 }
Show on old repository browser