swat_Seasar_Memo

2004-06-16

動いた! 23:21

先日インターフェースだけ定義した。それに簡単に具象クラスを書いてみる。若干インターフェースも変更した。

ログインに必要なパラメータ

LoginArg.java

package swat.test;

public interface LoginArg {

	String getUserName();

	String getPassword();

}

ログインに必要なパラメータの具象クラス

DBArg.java

package swat.test;

public class DBArg implements LoginArg {
	
	private String userName;
	private String password;

	public String getUserName() {
		return userName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String string) {
		password = string;
	}

	public void setUserName(String string) {
		userName = string;
	}

}

ログインする主体の具象クラス

OrdinaryUser.java

package swat.test;

public class OrdinaryUser implements Principal {
	
	LoginArg arg;
	Role role;

	public LoginArg getLoginArgs() {
		return arg;
	}

	public void setRole(Role role) {
		this.role = role;
		System.out.println("Roleは、"+role.getClass().getName());
	}

	public LoginArg getArg() {
		return arg;
	}


	public void setArg(LoginArg arg) {
		this.arg = arg;
	}

}

認証を行なう者の具象クラス

DBAuthenticator.java

package swat.test;

public class DBAuthenticator implements Authenticator {
	
	private Role role;

	public Role authenticate(LoginArg arg) {
		
		String userName = arg.getUserName();
		String password = arg.getPassword();
		
		System.out.println("USER "+userName + "は、password "+password+"で、DBAuthenticatorにより認証されました。");
		return role;
	}

	public Role getRole() {
		return role;
	}

	public void setRole(Role role) {
		this.role = role;
	}

}

ログインしたものに与えられるロールの具象クラス

UserRole.java

package swat.test;

public class UserRole implements Role {

}

ブートストラップ

ComponentRunner.java


import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.S2ContainerFactory;

public class ComponentRunner {

	public static void main(String[] args) throws LoginFaliedException {

		S2Container container =
			S2ContainerFactory.create("swat/test/login.dicon");

		Authenticator auth =
			(Authenticator) container.getComponent(Authenticator.class);

		Principal principal =
			(Principal) container.getComponent(Principal.class);

		LoginLogicComponent component = new LoginLogicComponent();

		component.login(auth, principal);
	}
}

diconファイル

login.dicon



"http://www.seasar.org/dtd/components.dtd">
<components>
	<component class="swat.test.DBAuthenticator">
		<property name="role">
			<component class="swat.test.UserRole"/>
		</property>
	</component>
	<component class="swat.test.OrdinaryUser">
		<property name="arg">
			<component class="swat.test.DBArg">
				<property name="userName">'swat'</property>
				<property name="password">'swatpass'</property>
			</component>
		</property>
	</component>
</components>

実行結果

[WSSR0008]swat.test.OrdinaryUserのプロパティ(role)が見つからないので設定をスキップします
USER swatは、password swatpassで、DBAuthenticatorにより認証されました。
Roleは、swat.test.UserRole

ホントにとりあえずのとりあえずなんだけれど動いた。驚いているのは、一度チュートリアルを流したことがある程度の知識で、ここまでなーんにも見ないでできちゃったこと。さて、次はAOPのほうをいじってみたいと思います。

TotaaTotaa 2012/02/18 12:55 Sheriff Clarence Dupnik is the Obama aosopgilt who linked Gabby Giffords shooting with right wing 'uncivil' rhetoric. (See Rush Limbaugh during that time)

jhoslqdhjhoslqdh 2012/02/19 23:44 BsaCWT , [url=http://jsxasclbtkxq.com/]jsxasclbtkxq[/url], [link=http://tonpcndmhqnk.com/]tonpcndmhqnk[/link], http://adntdyekqonm.com/

ojcnqjihcjmojcnqjihcjm 2012/02/26 02:59 XhNfQ1 <a href="http://fifmknizgvfe.com/">fifmknizgvfe</a>

ゲスト



トラックバック - http://seasarproject.g.hatena.ne.jp/swat/20040616