1 /*
2 *
3 * The Seasar Software License, Version 1.1
4 *
5 * Copyright (c) 2003-2004 The Seasar Project. All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or
8 * without modification, are permitted provided that the following
9 * conditions are met:
10 *
11 * 1. Redistributions of source code must retain the above
12 * copyright notice, this list of conditions and the following
13 * disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above
16 * copyright notice, this list of conditions and the following
17 * disclaimer in the documentation and/or other materials provided
18 * with the distribution.
19 *
20 * 3. The end-user documentation included with the redistribution,
21 * if any, must include the following acknowledgement:
22 * "This product includes software developed by the
23 * Seasar Project (http://www.seasar.org/)."
24 * Alternately, this acknowledgement may appear in the software
25 * itself, if and wherever such third-party acknowledgements
26 * normally appear.
27 *
28 * 4. Neither the name "The Seasar Project" nor the names of its
29 * contributors may be used to endorse or promote products derived
30 * from this software without specific prior written permission of
31 * the Seasar Project.
32 *
33 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR
34 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
35 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
36 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE SEASAR PROJECT
37 * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
38 * INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
39 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
40 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
41 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
42 * WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING
43 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
44 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 */
46 package org.seasar.remoting.axis.deployer;
47
48 import java.io.InputStream;
49
50 import org.apache.axis.deployment.wsdd.WSDDDocument;
51 import org.apache.axis.utils.XMLUtils;
52 import org.seasar.framework.container.ComponentDef;
53 import org.seasar.framework.container.MetaDef;
54 import org.seasar.framework.log.Logger;
55 import org.seasar.framework.message.MessageFormatter;
56 import org.seasar.framework.util.ResourceUtil;
57 import org.seasar.remoting.axis.DeployFailedException;
58
59 /***
60 * diconファイル中に記述されたメタ情報で指定されたWSDDファイルをAxisにデプロイします。
61 *
62 * @author koichik
63 */
64 public class WSDDDeployer implements ItemDeployer {
65 //class fields
66 private static final Logger logger = Logger.getLogger(WSDDDeployer.class);
67
68 //instance fields
69 protected final AxisDeployer deployer;
70
71 /***
72 * インスタンスを構築します。
73 *
74 * @param deployer
75 * デプロイヤー
76 */
77 public WSDDDeployer(final AxisDeployer deployer) {
78 this.deployer = deployer;
79 }
80
81 /***
82 * メタ情報で指定されたWSDDファイルをデプロイします。
83 *
84 * @param componentDef
85 * コンポーネント定義
86 * @param metaDef
87 * メタ定義
88 */
89 public void deploy(final ComponentDef componentDef, final MetaDef metaDef) {
90 try {
91 final Object value = metaDef.getValue();
92 if (!(value instanceof String)) {
93 throw new DeployFailedException(MessageFormatter.getSimpleMessage("EAXS0002",
94 new Object[] { value }));
95 }
96
97 final String wsddFileName = (String) value;
98 final InputStream is = ResourceUtil.getResourceAsStream(wsddFileName);
99 final WSDDDocument wsddDocument = new WSDDDocument(XMLUtils.newDocument(is));
100 wsddDocument.deploy(deployer.getDeployment(metaDef.getContainer()));
101
102 if (logger.isDebugEnabled()) {
103 logger.log("DAXS0001", new Object[] { wsddFileName });
104 }
105 }
106 catch (final Exception e) {
107 throw new DeployFailedException(e);
108 }
109 }
110 }