1 package com.ozacc.mail.spring;
\r
5 import org.springframework.beans.factory.config.AbstractFactoryBean;
\r
6 import org.springframework.core.io.Resource;
\r
8 import com.ozacc.mail.Mail;
\r
9 import com.ozacc.mail.MailBuildException;
\r
10 import com.ozacc.mail.MailBuilder;
\r
11 import com.ozacc.mail.impl.XMLMailBuilderImpl;
\r
14 * Springの設定ファイルで指定されたロケーションのXMLファイルからMailインスタンスを生成するFactoryBean。
\r
15 * デフォルトでは、singletonプロパティはfalseに設定されます。
\r
17 * location、classPath、filePathの順で、一番先にセットされているプロパティ値がXMLファイルのパスとして使われます。
\r
19 * @see com.ozacc.mail.impl.XMLMailBuilderImpl
\r
22 * @author Tomohiro Otsuka
\r
23 * @version $Id: XMLMailFactoryBean.java,v 1.4 2004/09/13 19:48:16 otsuka Exp $
\r
25 public class XMLMailFactoryBean extends AbstractFactoryBean {
\r
27 private String classPath;
\r
29 private String filePath;
\r
31 private Resource location;
\r
33 private MailBuilder mailBuilder;
\r
38 public XMLMailFactoryBean() {
\r
39 setSingleton(false);
\r
43 * @see org.springframework.beans.factory.config.AbstractFactoryBean#createInstance()
\r
45 protected Object createInstance() throws Exception {
\r
46 if (mailBuilder == null) {
\r
50 if (getLocation() != null && getLocation().getFile() != null) {
\r
51 return mailBuilder.buildMail(getLocation().getFile());
\r
53 if (getClassPath() != null) {
\r
54 return mailBuilder.buildMail(getClassPath());
\r
56 if (getFilePath() != null) {
\r
57 return mailBuilder.buildMail(new File(getFilePath()));
\r
59 throw new MailBuildException("Mailインスタンスの生成に失敗しました。XMLデータのロケーションが指定されていません。");
\r
63 * mailBuilderインスタンスを生成します。
\r
65 private void init() {
\r
66 mailBuilder = new XMLMailBuilderImpl();
\r
70 * @see org.springframework.beans.factory.FactoryBean#getObjectType()
\r
72 public Class getObjectType() {
\r
77 * <code>MailBuilder</code>インターフェースの実装クラスのインスタンスをセットします。
\r
78 * デフォルトでは、<code>XMLMailBuilderImpl</code>が使用されます。
\r
80 * ただし、ここでセットしない場合は、<code>XMLMailFactoryBean</code>ひとつに付き、
\r
81 * <code>XMLMailBuilderImpl</code>インスタンス一つが保持されます。
\r
82 * シングルトンの<code>MailBuilder</code>インスタンスをセットすることを推奨します。
\r
84 * @param mailBuilder MailBuilderインスタンス
\r
86 public void setMailBuilder(MailBuilder mailBuilder) {
\r
87 this.mailBuilder = mailBuilder;
\r
91 * @return Returns the classPath.
\r
93 public String getClassPath() {
\r
98 * @param classPath The classPath to set.
\r
100 public void setClassPath(String classPath) {
\r
101 this.classPath = classPath;
\r
105 * @return Returns the filePath.
\r
107 public String getFilePath() {
\r
112 * @param filePath The filePath to set.
\r
114 public void setFilePath(String filePath) {
\r
115 this.filePath = filePath;
\r
119 * @return Returns the location.
\r
121 public Resource getLocation() {
\r
126 * @param location The location to set.
\r
128 public void setLocation(Resource location) {
\r
129 this.location = location;
\r