From commits-return-18579-archive-asf-public=cust-asf.ponee.io@struts.apache.org Tue Nov 26 19:52:20 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with SMTP id 261CF180674 for ; Tue, 26 Nov 2019 20:52:20 +0100 (CET) Received: (qmail 72122 invoked by uid 500); 26 Nov 2019 19:52:18 -0000 Mailing-List: contact commits-help@struts.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@struts.apache.org Delivered-To: mailing list commits@struts.apache.org Received: (qmail 71898 invoked by uid 99); 26 Nov 2019 19:52:17 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 26 Nov 2019 19:52:17 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 5DAA68B692; Tue, 26 Nov 2019 19:52:17 +0000 (UTC) Date: Tue, 26 Nov 2019 19:52:19 +0000 To: "commits@struts.apache.org" Subject: [struts] 02/08: WW-5047 Allows define a custom bean provider MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit From: lukaszlenart@apache.org In-Reply-To: <157479793713.28700.14767955249836481535@gitbox.apache.org> References: <157479793713.28700.14767955249836481535@gitbox.apache.org> X-Git-Host: gitbox.apache.org X-Git-Repo: struts X-Git-Refname: refs/heads/WW-5047-new-velocity X-Git-Reftype: branch X-Git-Rev: f520fed9854321cb34ff6cde8a0518a3160120af X-Git-NotificationType: diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated Message-Id: <20191126195217.5DAA68B692@gitbox.apache.org> This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch WW-5047-new-velocity in repository https://gitbox.apache.org/repos/asf/struts.git commit f520fed9854321cb34ff6cde8a0518a3160120af Author: Lukasz Lenart AuthorDate: Tue Nov 26 19:00:18 2019 +0100 WW-5047 Allows define a custom bean provider --- .../config/providers/XmlConfigurationProvider.java | 18 ++- core/src/main/resources/struts-2.6.dtd | 157 +++++++++++++++++++++ .../velocity/src/main/resources/struts-plugin.xml | 7 +- 3 files changed, 177 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java b/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java index 1613ae2..cec1c65 100644 --- a/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java +++ b/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java @@ -219,7 +219,21 @@ public class XmlConfigurationProvider implements ConfigurationProvider { final String nodeName = child.getNodeName(); - if ("bean".equals(nodeName)) { + if ("bean-provider".equals(nodeName)) { + String name = child.getAttribute("name"); + String impl = child.getAttribute("class"); + try { + Class classImpl = ClassLoaderUtil.loadClass(impl, getClass()); + if (classImpl.isAssignableFrom(ConfigurationProvider.class)) { + ConfigurationProvider provider = (ConfigurationProvider) classImpl.newInstance(); + provider.register(containerBuilder, props); + } else { + throw new ConfigurationException("The bean-provider: name:" + name + " class:" + impl + " doesnt implement " + ConfigurationProvider.class.getName(), childNode); + } + } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { + throw new ConfigurationException("Unable to load bean-provider: name:" + name + " class:" + impl, e, childNode); + } + } else if ("bean".equals(nodeName)) { String type = child.getAttribute("type"); String name = child.getAttribute("name"); String impl = child.getAttribute("class"); @@ -233,8 +247,6 @@ public class XmlConfigurationProvider implements ConfigurationProvider { scope = Scope.REQUEST; } else if ("session".equals(scopeStr)) { scope = Scope.SESSION; - } else if ("singleton".equals(scopeStr)) { - scope = Scope.SINGLETON; } else if ("thread".equals(scopeStr)) { scope = Scope.THREAD; } diff --git a/core/src/main/resources/struts-2.6.dtd b/core/src/main/resources/struts-2.6.dtd new file mode 100644 index 0000000..6eb5654 --- /dev/null +++ b/core/src/main/resources/struts-2.6.dtd @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/velocity/src/main/resources/struts-plugin.xml b/plugins/velocity/src/main/resources/struts-plugin.xml index 00a4207..04842de 100644 --- a/plugins/velocity/src/main/resources/struts-plugin.xml +++ b/plugins/velocity/src/main/resources/struts-plugin.xml @@ -20,10 +20,13 @@ */ --> + "-//Apache Software Foundation//DTD Struts Configuration 2.6//EN" + "http://struts.apache.org/dtds/struts-2.6.dtd"> + + +