0.1.1 -> 0.1.2

0.1.2をリリースします。変わったところはご要望いただいたのを実装したくらいです。

* 0.1.2 [2006/8/12]
- SQLファイルのサフィックスにDerbyとMaxDBを追加
- SQLマーカをクリックしてSQLファイルを開く・作成する機能を追加 [DAOPLUGIN-2]
- 英語リソースを作成 [DAOPLUGIN-3]

マーカに新しい属性を持たせるようになったので、まずビルドをお願いします(クリーンビルドではなくてOK)。

マーカをクリックで開く機能はクリック一発で開くのではなくて、SQLファイルをリストアップするのでそこから選択してもらうようになります。これはmarkerResolutionを使って実装しているのですが、これを使うとQuick Fix(Ctrl + 1)のメニューにも出てくるようになるのでQuick Fixからも使うことができます。が、Quick Fix使いまくりの人にとっては鬱陶しいかもしれませんね。。。

S2Conteiner2.4の定義済みオブジェクト

かなり近視眼的ですがパッチを書いてみました。trunk@46への差分です。その場しのぎ対応でportletを無視してたりするのでJIRAは見送っています。
まぁこれだけ直ったところで他にもエラーあるみたいですが……

Index: src/org/seasar/kijimuna/core/ConstCore.java
===================================================================
--- src/org/seasar/kijimuna/core/ConstCore.java	(revision 46)
+++ src/org/seasar/kijimuna/core/ConstCore.java	(working copy)
@@ -153,6 +153,8 @@
 	public static final String MODEL_NAME_RESPONSE = "response";
 	public static final String MODEL_NAME_SESSION = "session";
 	public static final String MODEL_NAME_SERVLETCONTEXT = "servletContext";
+	// S2.4シリーズ
+	public static final String MODEL_NAME_APPLICATION = "application";
 
 	public static final int RECORDER_EVENT_INIT = 0;
 	public static final int RECORDER_EVENT_RESTORE = 1;
Index: src/org/seasar/kijimuna/core/internal/dicon/model/ContainerElement.java
===================================================================
--- src/org/seasar/kijimuna/core/internal/dicon/model/ContainerElement.java	(revision 46)
+++ src/org/seasar/kijimuna/core/internal/dicon/model/ContainerElement.java	(working copy)
@@ -44,6 +44,7 @@
 import org.seasar.kijimuna.core.rtti.IRttiConstructorDesctiptor;
 import org.seasar.kijimuna.core.rtti.IRttiPropertyDescriptor;
 import org.seasar.kijimuna.core.util.ProjectUtils;
+import org.seasar.kijimuna.core.util.S2VersionUtil;
 import org.seasar.kijimuna.core.util.StringUtils;
 
 /**
@@ -68,12 +69,18 @@
 		IComponentKey interfaceKey = createComponentKey(rtti);
 		componentDefMap.put(interfaceKey, this);
 		containerKeySet.add(interfaceKey);
-
-		addMagicComponent(project, storage, MODEL_NAME_REQUEST, MODEL_INTERFACE_REQUEST);
-		addMagicComponent(project, storage, MODEL_NAME_RESPONSE, MODEL_INTERFACE_RESPONSE);
-		addMagicComponent(project, storage, MODEL_NAME_SESSION, MODEL_INTERFACE_SESSION);
-		addMagicComponent(project, storage, MODEL_NAME_SERVLETCONTEXT,
+		
+		setUpMagicComponents();
+	}
+	
+	private void setUpMagicComponents() {
+		// TODO: web.xmlを見てservletかportletか判断する必要あり
+		addMagicComponent(S2VersionUtil.isUsingVersion4(getProject()) ?
+				MODEL_NAME_APPLICATION : MODEL_NAME_SERVLETCONTEXT,
 				MODEL_INTERFACE_SERVLETCONTEXT);
+		addMagicComponent(MODEL_NAME_REQUEST, MODEL_INTERFACE_REQUEST);
+		addMagicComponent(MODEL_NAME_RESPONSE, MODEL_INTERFACE_RESPONSE);
+		addMagicComponent(MODEL_NAME_SESSION, MODEL_INTERFACE_SESSION);
 	}
 
 	private IRtti getS2ContainerRtti() {
@@ -83,6 +90,10 @@
 		return s2ContainerRtti;
 	}
 
+	private void addMagicComponent(String name, String clazz) {
+		addMagicComponent(getProject(), getStorage(), name, clazz);
+	}
+	
 	private void addMagicComponent(IProject project, IStorage storage, String name,
 			String clazz) {
 		ComponentElement element = new ComponentElement(project, storage);
Index: src/org/seasar/kijimuna/core/util/S2VersionUtil.java
===================================================================
--- src/org/seasar/kijimuna/core/util/S2VersionUtil.java	(revision 0)
+++ src/org/seasar/kijimuna/core/util/S2VersionUtil.java	(revision 0)
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2004-2006 the Seasar Foundation and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package org.seasar.kijimuna.core.util;
+
+import org.eclipse.core.resources.IProject;
+
+import org.seasar.kijimuna.core.dicon.DiconNature;
+import org.seasar.kijimuna.core.rtti.HasErrorRtti;
+import org.seasar.kijimuna.core.rtti.IRtti;
+import org.seasar.kijimuna.core.rtti.RttiLoader;
+
+public class S2VersionUtil {
+
+	private static final String VERSION_3 =
+		"org.seasar.framework.util.EclipseUtil";
+	
+	private static final String VERSION_4 =
+		"org.seasar.framework.container.ExternalContext";
+	
+	public static boolean isUsingVersion3(IProject project) {
+		return canLoadRtti(project, VERSION_3);
+	}
+	
+	public static boolean isUsingVersion4(IProject project) {
+		return canLoadRtti(project, VERSION_4);
+	}
+	
+	private static boolean canLoadRtti(IProject project, String fqcn) {
+		RttiLoader loader = getRttiLoader(project);
+		IRtti rtti = loader != null ? loader.loadRtti(fqcn) : null; 
+		return rtti != null && !(rtti instanceof HasErrorRtti);
+	}
+	
+	private static RttiLoader getRttiLoader(IProject project) {
+		DiconNature nature = DiconNature.getInstance(project);
+		return nature != null ? nature.getRttiLoader() : null;
+	}
+
+}

0.1.0 -> 0.1.1

基本的にはバグフィックスです。あとS2Pagerのインターセプタに対応しました。

変更履歴です。

* 0.1.1 [2006/7/26]
- diconファイルを変更せずにクラス(インターフェース)が作成または削除されたとき、正しく認識しない
  場合がある問題を修正
- マーカを付ける・消すときにdiconのinclude関係を見るように修正
- プリファレンスの「S2Daoプラグインを有効にする」からチェックを外すとエラーが発生する問題を修正
- デフォルトパッケージのDAOで正しく動かない問題を修正
- org.seasar.dao.pager.PagerS2DaoInterceptorWrapperによるアスペクトに対応

0.0.6 -> 0.1.0

0.1.0をリリースします。もたもたしてる間にEclipse 3.2が出てしまったし。。。軽く動作を確認してみたところ特に問題はないようでしたが、ひとまず3.1系用ということでお願いします。

時間経ってる割にはインパクトのある機能はないのですが、主な変更履歴をあげると次の2つです。

  • SQLファイルのあるメソッドにマーカが付く
  • S2DaoInterceptorのアスペクトされたタイプをより厳密に判断するようにした

0.0.6でも厳密に判断とか書いてましたがかなり嘘でしたね。まぁあれは実験的実装だったということで。その他細かい変更履歴はこちら

今のところ、diconファイル以外のアスペクトの方法とHot Deploy(AspectCustomizer)は未対応です。

WTP1.0.2→WTP1.5

やっぱりハマった。ネックはまたまたJ2EE Module Dependencies。依存先のプロジェクトがデプロイされていない(Serversビュー上ではデプロイされているように見えるから困る)とか、J2EE Module Dependenciesでチェックを入れたプロジェクトが、設定画面を閉じて再度開くと元に戻ってしまっている、といった現象。いろいろやっててとりあえず解決できた一番簡単な方法↓

  • .settings直下のファイル .component を org.eclipse.wst.common.component へリネーム
  • J2EE Module Dependenciesでチェックを入れたプロジェクトが、ビルドパスのプロジェクトにあれば削除

WTP1.5でプロジェクトを新規作成すると、org.eclipse.wst.common.componentファイルのproject-modulesタグに「project-version="1.5.0"」という属性と値が入るので、気になったからなんとなく書いておいた。書かなくても動いてるけど。