[jira] [Updated] (WW-3209) Select components do not allow setting attributes and JavaScript events on tags

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3209?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3209:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Select components do not allow setting attributes and JavaScript events on 
>  tags
> --
>
> Key: WW-3209
> URL: https://issues.apache.org/jira/browse/WW-3209
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Other
>Affects Versions: 2.1.8
>Reporter: Tim Stavenger
>Priority: Minor
> Fix For: 6.4.0
>
>
> The combobox, select, optiontransferselect  and any other tag that uses the 
>  or  tags do not allow you to set any additional 
> attributes or JavaScript events besides the value posted back to the server 
> and the value displayed to the user.
> I had a scenario where the client wanted a hover to appear for each option in 
> a multi-select component. I could have used the title attribute or the 
> onchange/onclick events of , but couldn't because Struts didn't 
> support them (at least without modifying Struts). I ended up with a different 
> implementation that listened for onchange and onclick events for the  /> tag. It works, but isn't exactly what the user wanted. I could also have 
> just manually used the  and  tag, but would have lost 
> everything else Struts provides.
> See http://www.w3schools.com/tags/tag_optgroup.asp and 
> http://www.w3schools.com/tags/tag_option.asp for the available attributes and 
> events.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3835) use TemplateDirectiveModel instead of TemplateTransformModel in org.apache.struts2.views.freemarker.tags.TagModel.

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3835:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> use TemplateDirectiveModel instead of TemplateTransformModel in 
> org.apache.struts2.views.freemarker.tags.TagModel.
> --
>
> Key: WW-3835
> URL: https://issues.apache.org/jira/browse/WW-3835
> Project: Struts 2
>  Issue Type: Improvement
>Reporter: Yanming Zhou
>Priority: Major
> Fix For: 6.4.0
>
>
> http://freemarker.sourceforge.net/docs/api/freemarker/template/TemplateTransformModel.html
> Objects that implement this interface can be used as user-defined directives 
> (much like macros); you should rather use the newer TemplateDirectiveModel 
> instead. Altough implementing output filters is more handy with this 
> interface, this interface will be certainly deprecated as superfluous, 
> starting from FreeMarker 2.4. But as far as the template engine is concerned, 
> you can use both equivalently as a user-defined directive.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3452) let struts.custom.i18n.resources supports wildcard

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3452?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3452:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> let struts.custom.i18n.resources supports wildcard
> --
>
> Key: WW-3452
> URL: https://issues.apache.org/jira/browse/WW-3452
> Project: Struts 2
>  Issue Type: Improvement
>Reporter: Yanming Zhou
>Priority: Major
>  Labels: message, resource
> Fix For: 6.4.0
>
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> {code:xml}
>  value="resources.i18n.messages,com.acme.messages.*" />
> {code}
> following code is my uncompleted patch,I want to know how to scan wildcard 
> resources using xwork/struts2 util class.
> org.apache.struts2.config.BeanSelectionProvider  line:245
> {code:java}
> 
> LocalizedTextUtil.addDefaultResourceBundle("org/apache/struts2/struts-messages");
> String bundles = 
> props.getProperty(StrutsConstants.STRUTS_CUSTOM_I18N_RESOURCES);
> if (bundles != null && bundles.length() > 0) {
> StringTokenizer customBundles = new 
> StringTokenizer(props.getProperty(StrutsConstants.STRUTS_CUSTOM_I18N_RESOURCES),
>  ", ");
> while (customBundles.hasMoreTokens()) {
> String name = customBundles.nextToken();
> // add start
> if(name.contains("*")){
>   Collection resources = new HashSet(); 
> //TODO scan resources from classpath
>   for(String res : resources)
>   try {
> LOG.info("Loading global messages from " + res);
> LocalizedTextUtil.addDefaultResourceBundle(res);
> } catch (Exception e) {
> LOG.error("Could not find messages file " + res + 
> ".properties. Skipping");
> }
> continue;
> }
> // add end
> try {
> LOG.info("Loading global messages from " + name);
> LocalizedTextUtil.addDefaultResourceBundle(name);
> } catch (Exception e) {
> LOG.error("Could not find messages file " + name + 
> ".properties. Skipping");
> }
> }
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-2867) Add a method allowing to know what is the name of the "method" passed in the request

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-2867?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-2867:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Add a method allowing to know what is the name of the "method" passed in the 
> request
> 
>
> Key: WW-2867
> URL: https://issues.apache.org/jira/browse/WW-2867
> Project: Struts 2
>  Issue Type: Improvement
>  Components: "New" API
>Affects Versions: 2.0.11
> Environment: XP2 Tomcat 5.5 JDK 1.5.0.12
>Reporter: olivier dupuy
>Priority: Minor
> Fix For: 6.4.0
>
> Attachments: ASF.LICENSE.NOT.GRANTED--Olivier Dupuy.vcf
>
>
> Add a method allowing to know what is the name of the "method" passed in the 
> request
> Methods can be specified in a form in the JSP, for submit buttons and you can 
> use them in links too.
> Add a method in ActionSupport called String getActionmethodName() 
> if you submit  method:save  it would return "save" etc.
> I use a an equivalent method to do some security logic in my actions if 
> multiple methods can hit the same action



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3526) Augment JakartaMultiPartRequest to include optional progress listener

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3526?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3526:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Augment JakartaMultiPartRequest to include optional progress listener
> -
>
> Key: WW-3526
> URL: https://issues.apache.org/jira/browse/WW-3526
> Project: Struts 2
>  Issue Type: New Feature
>  Components: Dispatch Filter
>Affects Versions: 6.1.1
> Environment: N/A
>Reporter: Bob Glamm
>Priority: Minor
> Fix For: 6.4.0
>
> Attachments: upload-listener.tar.gz
>
>
> Original concept from David Casserly: see 
> http://www.devedup.com/ajaxfileupload/
> The basic idea is to augment JakartaMultiPartRequest to allow users to 
> specify a file upload progress listener (see Commons FileUpload 
> ServletFileUpload.setProgressListener()).  The original concept by Casserly 
> references a specific ProgressMonitor class that implements FileUpload's 
> ProgressListener interface.  I'd propose an alternate solution: allow the 
> user to configure the fully-qualified name of an optional listener class via 
> @Inject("struts.multipart.monitor"), then:
>   o  require the listener class to also implement an interface that specifies 
> public void abort(); as its only method;
>   o  in JakartaMultiPartRequest.parseRequest(), attempting to instantiate the 
> specified listener class via Class.forName().newInstance();
>   o  store the instantiated listener in the session, as per Casserly's 
> example;
>   o  in JakartaMultiPartRequest.parse(), in the catch(FileUploadException) 
> block, calling the abort() method on the listener class if it is in the 
> session.
> Users can then implement an action that retrieves the upload status (via AJAX 
> or some other mechanism) by retrieving their listener object from the session 
> (as per Casserly's example.)  AJAX retrieval allows implementation of file 
> upload progress bars, a la GMail's attachment upload mechanism.
> One possible issue I see with this is: what happens if multiple file upload 
> requests happen simultaneously for a user session?
> I have a partial implementation but I'm not familiar with the Struts 
> development process or philosophies, so I'm throwing this out there for 
> review.  If there are better ways to do this, let me know.  I can 
> (eventually) provide a patch to 2.2.1 or HEAD with a little assistance, I 
> think.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3095) URL has no setEncoding

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3095?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3095:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> URL has no setEncoding
> --
>
> Key: WW-3095
> URL: https://issues.apache.org/jira/browse/WW-3095
> Project: Struts 2
>  Issue Type: Bug
>  Components: Plugin - Tags
>Affects Versions: 2.1.6
> Environment: Struts 2.1.6
> TC 6.0.14
> JDK 1.6.0.10
>Reporter: Martin Gainty
>Priority: Major
> Fix For: 6.4.0
>
>
> If I set encoding the encoding to UTF-8 in struts.properties as 
>  struts.i18n.encoding=UTF-8
> //If I implement the include tag I see all appropriate annotations e.g.
> @StrutsTag(name="include", 
> tldTagClass="org.apache.struts2.views.jsp.IncludeTag", description="Include a 
> servlet's output " +
>  "(result of servlet or a JSP page)")
> public class Include extends Component {
>
> //more importantly the include will support the STRUTS_I18N_ENCODING 
> DefaultEncoding with this inject //annotation
> @Inject(StrutsConstants.STRUTS_I18N_ENCODING)
>  public void setDefaultEncoding(String encoding) {
>  defaultEncoding = encoding;
>  }
> //but viewing the URL code I see
> @StrutsTag(name="url", tldTagClass="org.apache.struts2.views.jsp.URLTag", 
> description="This tag is used to create a URL")
> public class URL extends ContextBean
> //there is no setDefaultEncoding which means any new encodings in 
> struts.properties will not be reflected here
> MCG 22 April 09



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-2635) Flash scope

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-2635?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-2635:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Flash scope
> ---
>
> Key: WW-2635
> URL: https://issues.apache.org/jira/browse/WW-2635
> Project: Struts 2
>  Issue Type: New Feature
>  Components: "New" API
>Reporter: Guillaume Bilodeau
>Priority: Major
> Fix For: 6.4.0
>
> Attachments: FlashInterceptor.java, FlashInterceptorTest.java, 
> FlashResult.java, FlashResultTest.java
>
>
> I have developed a FlashResult / FlashInterceptor pair to implement "flash" 
> scope in a way that follows the usual Struts2 principles and respects its 
> "feel".
> It basically works like the ServletActionRedirectResult except that instead 
> of converting all extra parameters to strings and adding them as HTTP 
> parameters in the redirect URL, it creates a HashMap using these parameter 
> key/value pairs with no conversion and stores it in the user session.  On the 
> next HTTP request the FlashInterceptor, if properly added to the interceptor 
> stack, will retrieve this map and copy the map entries to the target action 
> using the parameter keys.  It should work for all data types.
> To function correctly this approach assumes that bug WW-2170 is fixed.  The 
> implementation also borrows a lot from the ServletActionRedirectResult and 
> some refactoring should 
> be done.
> While there may be issues with flash scope in general with regards to 
> repeated GETs being inconsistent, there are some valid use cases such as when 
> saving messages to be displayed after a redirect.  I think it's good for the 
> developer to have this tool and it could make a nice addition to the Struts2 
> code base.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4062) Invalid OGNL expressions are not cached

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4062:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Invalid OGNL expressions are not cached
> ---
>
> Key: WW-4062
> URL: https://issues.apache.org/jira/browse/WW-4062
> Project: Struts 2
>  Issue Type: Bug
>  Components: Value Stack
>Affects Versions: 2.3.14
>Reporter: Saulius Tvarijonas
>Priority: Major
> Fix For: 6.4.0
>
> Attachments: WW-4062.PNG
>
>
> I am using velocity to render results page. During performance optimizations 
> I noticed significant memory usage from 
> *com.opensymphony.xwork2.ognl.OgnlUtil#compile*. There is caching implemented 
> in OgnlUtil, but if expression compilation fails, it is not cached.
> I am not really sure if this problem is in struts or velocity engine. But 
> situation is following:
> # In velocity template trying to render string *$!foo*
> # If value is null, velocity calls 
> *org.apache.velocity.runtime.parser.node.ASTReference#getNullString*
> # Internally there is call to *context.get(".literal." + nullString)*
> # And this ".literal." expression always reaches *OgnlUtil#compile* and 
> compilation fails.
> Below is stacktrace for more details:
> {code}
> at com.opensymphony.xwork2.ognl.OgnlUtil.compile(OgnlUtil.java:248)
> at com.opensymphony.xwork2.ognl.OgnlUtil.getValue(OgnlUtil.java:236)
> at 
> com.opensymphony.xwork2.ognl.OgnlValueStack.getValueUsingOgnl(OgnlValueStack.java:291)
> at 
> com.opensymphony.xwork2.ognl.OgnlValueStack.tryFindValue(OgnlValueStack.java:274)
> at 
> com.opensymphony.xwork2.ognl.OgnlValueStack.tryFindValueWhenExpressionIsNotNull(OgnlValueStack.java:256)
> at 
> com.opensymphony.xwork2.ognl.OgnlValueStack.findValue(OgnlValueStack.java:236)
> at 
> com.opensymphony.xwork2.ognl.OgnlValueStack.findValue(OgnlValueStack.java:298)
> at 
> org.apache.struts2.dispatcher.StrutsRequestWrapper.getAttribute(StrutsRequestWrapper.java:82)
> at org.apache.velocity.tools.view.context.ChainedContext.getAttribute(Unknown 
> Source:-1)
> at org.apache.velocity.tools.view.context.ChainedContext.internalGet(Unknown 
> Source:-1)
> at org.apache.velocity.context.AbstractContext.get(AbstractContext.java:193)
> at 
> org.apache.velocity.context.InternalContextAdapterImpl.get(InternalContextAdapterImpl.java:267)
> at 
> org.apache.velocity.runtime.parser.node.ASTReference.getNullString(ASTReference.java:510)
> at 
> org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:465)
> at 
> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
> at 
> org.apache.velocity.runtime.parser.node.ASTStringLiteral.value(ASTStringLiteral.java:330)
> at 
> org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71)
> at 
> org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142)
> at 
> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
> at org.apache.velocity.runtime.directive.Parse.render(Parse.java:260)
> at 
> org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
> at 
> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
> at org.apache.velocity.Template.merge(Template.java:356)
> at org.apache.velocity.Template.merge(Template.java:260)
> at 
> org.apache.struts2.dispatcher.VelocityResult.doExecute(VelocityResult.java:156)
> at 
> org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3666) TypeConverter should trim before conversion to things that are not Strings

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3666:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> TypeConverter should trim before conversion to things that are not Strings
> --
>
> Key: WW-3666
> URL: https://issues.apache.org/jira/browse/WW-3666
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Value Stack
>Affects Versions: 2.2.1.1
> Environment: Standard Struts2 implementation with Jetty
>Reporter: adam brin
>Priority: Minor
> Fix For: 6.4.0
>
>
> For a simple struts2 application, when you pass in parameters that are not 
> "Strings" for example Longs or Enums the Xwork2 TypeConverter (and Struts2's 
> handling) needs some work.
> Issues:
> * numeric values are not properly parsed if they have space characters
> * enum values are not properly parsed if they have space characters
> * ideally some exception would bubble back up in the form of an ActionError
> Attached (in comments) is a simple controller and test case using HTMLUnit to 
> demonstrate the issue.  Even with the following logger settings, no errors 
> are visible:
> {noformat}log4j.logger.org.apache.struts2=TRACE
> log4j.logger.com.opensymphony.xwork2=TRACE
> {noformat} 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-5060) Struts 2 Rest Plugin Conversion Issue

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-5060?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-5060:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Struts 2 Rest Plugin Conversion Issue
> -
>
> Key: WW-5060
> URL: https://issues.apache.org/jira/browse/WW-5060
> Project: Struts 2
>  Issue Type: Bug
>  Components: Other
>Affects Versions: 2.3.1
>Reporter: Ronak Jain
>Priority: Major
> Fix For: 6.4.0
>
>
>  I integrated strust2 convention plugin and rest plugin.
> When a request come to server where my field is long and I am sending a 
> string then default stacktrace occurs.
> I want to handle the exception from my side but before request come to any 
> interceptor, it is throwing exception.
>  
> My configuration :
>  name="jackson" class="org.apache.struts2.rest.handler.JacksonLibHandler"/>
>  
>  
> 
> 
>   />
>   class="com.elitecore.neoxemsippbx.coreneoxemsippbx.ep.util.EliteJsonResult" />
>  
>  
>   class="com.elitecore.neoxemsippbx.system.interceptor.TransactionInterceptor">
>   class="com.elitecore.neoxemsippbx.system.interceptor.AuditInterceptor" />
>   class="com.elitecore.neoxemsippbx.system.interceptor.CustomRestWorkflowInterceptor"/>
>  
>  
>   name="excludeMethods">deleteConfirm,cacheServerGroups,validateRuleset
>  
>  
>  
>  *
>  
>  
>  
> 
>  
>  ${actionChainUrl}
>   type="tiles">commons/general/UnhandledException
>  commons/general/Error
>  ${actionChainUrl}
>   type="tiles">ServerManagerWelcome
>  ${actionChainUrl}
>   type="tiles">${actionChainUrl}
>  _${actionChainUrl}
>  ${actionChainUrl}
>  ${actionChainUrl}
>  ${actionChainUrl}
>  
>  
>  
>  attachment;filename=${fileName}
>  $(contentType)
>  fileInputStream
>  1024
>  
> 
>  
>  false
>  
>  ${includeSearchProperties}
>  
>  
> 
>   exception="java.lang.Throwable">
>   exception="java.lang.RuntimeException">
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4672) StrutsApplicationResource incompatible with superclass PostfixedApplicationResource

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4672?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4672:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> StrutsApplicationResource incompatible with superclass 
> PostfixedApplicationResource
> ---
>
> Key: WW-4672
> URL: https://issues.apache.org/jira/browse/WW-4672
> Project: Struts 2
>  Issue Type: Bug
>  Components: Plugin - Tiles
>Affects Versions: 2.5.2
>Reporter: Joonas Vali
>Priority: Minor
> Fix For: 6.4.0
>
>
> {{org.apache.struts2.tiles.StrutsApplicationResource}} constructor takes in a 
> single parameter, URL, and from this parameter getPath() is asked, which 
> returns absolute path to a resource on disk (usually?), and this is passed to 
> the superclass as String. 
> This logic is however incompatible with superclass 
> {{org.apache.tiles.request.locale.PostfixedApplicationResource}} which is 
> built to deal with relative paths to the context root. e.g 
> '/WEB-INF/tiles.xml'.
> Previous creates issues with 'refreshing' enabled in 
> (CachingLocaleUrlDefinitionDAO) superclass 
> {{org.apache.tiles.definition.dao.BaseLocaleUrlDefinitionDAO#refreshRequired()}}
>  method, which iterates over these resource paths and ultimately calls 
> {{servletContext#getResource(path)}}, which always returns null on absolute 
> paths. This results in the following NPE on next line where 
> {{resource.getLastModified()}} is asked. 
> {noformat}
>  java.lang.NullPointerException
>   at 
> org.apache.tiles.definition.dao.BaseLocaleUrlDefinitionDAO.refreshRequired(BaseLocaleUrlDefinitionDAO.java:120)
>   at 
> org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.getDefinitions(CachingLocaleUrlDefinitionDAO.java:130)
>   at 
> org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.getDefinition(CachingLocaleUrlDefinitionDAO.java:105)
>   at 
> org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.getDefinition(CachingLocaleUrlDefinitionDAO.java:49)
>   at 
> org.apache.tiles.definition.UnresolvingLocaleDefinitionsFactory.getDefinition(UnresolvingLocaleDefinitionsFactory.java:89)
>   at 
> org.apache.tiles.impl.BasicTilesContainer.getDefinition(BasicTilesContainer.java:286)
>   at 
> org.apache.tiles.impl.BasicTilesContainer.isValidDefinition(BasicTilesContainer.java:273)
>   at 
> org.apache.tiles.TilesContainerWrapper.isValidDefinition(TilesContainerWrapper.java:88)
>   at 
> org.apache.tiles.impl.mgmt.CachingTilesContainer.isValidDefinition(CachingTilesContainer.java:100)
>   at 
> org.apache.struts2.views.tiles.TilesResult.doExecute(TilesResult.java:139)
>   at 
> org.apache.struts2.result.StrutsResultSupport.execute(StrutsResultSupport.java:208)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4797) orphaned Factory code never called from spring-plugin

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4797?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4797:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> orphaned Factory code never called from spring-plugin 
> --
>
> Key: WW-4797
> URL: https://issues.apache.org/jira/browse/WW-4797
> Project: Struts 2
>  Issue Type: Task
>  Components: Plugin - Spring
>Affects Versions: 2.3.31
> Environment: JDK 1.8
> Struts-2.3.4
> Maven 3.3.1
>Reporter: Martin Gainty
>Priority: Minor
>  Labels: spring-plugin
> Fix For: 6.4.0
>
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> {{org.springframework.beans.BeanWrapper}} not created in struts-spring-plugin
> {{org.apache.struts2.spring.ClassReloadingBeanFactory}} contains orphaned 
> {{createBeanInstance}} which currently is not implemented in spring plugin
> {code:java}
> public class ClassReloadingBeanFactory extends 
> org.springframework.beans.factory.support.DefaultListableBeanFactory {
> @Override
> protected org.springframework.beans.BeanWrapper createBeanInstance(String 
> beanName, org.springframework.beans.factory.support.RootBeanDefinition mbd, 
> Object[] args) {
> Class beanClass = resolveBeanClass(mbd, beanName, null);
> if (mbd.getFactoryMethodName() != null) {
> return instantiateUsingFactoryMethod(beanName, mbd, args);
> }
> //commented to cached constructor is not used
> /* // Shortcut when re-creating the same bean...
> if (mbd.resolvedConstructorOrFactoryMethod != null) {
> if (mbd.constructorArgumentsResolved) {
> return autowireConstructor(beanName, mbd, null, args);
> } else {
> return instantiateBean(beanName, mbd);
> }
> }*/
> // Need to determine the constructor...
> Constructor[] ctors = 
> determineConstructorsFromBeanPostProcessors(beanClass, beanName);
> if (ctors != null ||
> mbd.getResolvedAutowireMode() == 
> RootBeanDefinition.AUTOWIRE_CONSTRUCTOR ||
> mbd.hasConstructorArgumentValues() || 
> !ObjectUtils.isEmpty(args)) {
> return autowireConstructor(beanName, mbd, ctors, args);
> }
> // No special handling: simply use no-arg constructor.
> return instantiateBean(beanName, mbd);
> }
> {code}
> //orphaned org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext
> org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext:
> {code:java}
> setupReloading(...)
> {
> 
> //setup the bean factory
> beanFactory = new ClassReloadingBeanFactory();
> beanFactory.setInstantiationStrategy(new 
> ClassReloadingInstantiationStrategy());
> beanFactory.setBeanClassLoader(classLoader);
> /* Where is  BeanWrapper created by createBeanInstance& return to client */
> //start watch thread
> fam.start();
> }
> {code}
> this orphaned code contains {{RootBeanDefiniton}} parameter 
> {{org.springframework.beans.factory.support.RootBeanDefinition}} mbd
> which is used to construct class of bean here:
> {{Class beanClass = resolveBeanClass(mbd, beanName, null);}}
> i assume createBeanInstance is implemented in possibly 2.4.x?
> Thanks!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-1522) Automatic Alias ActionConfigs

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-1522?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-1522:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Automatic Alias ActionConfigs
> -
>
> Key: WW-1522
> URL: https://issues.apache.org/jira/browse/WW-1522
> Project: Struts 2
>  Issue Type: Improvement
>Reporter: Ted Husted
>Priority: Major
> Fix For: 6.4.0
>
>
> Create ActionConfigs for Action class methods that do not already have aliases
> The initial "dynamic method invocation" implementation does not create an 
> ActionConfig, but scans for a "!" and invokes the method directly. The 
> implementation doesn't allow these alias methods to be browsed, overrridden 
> with static actions, nor can they have their own validators, type convertors 
> or resources. 
> Rather than scan for dynamic method references at run time, an alternate 
> approach would be to scan the configuration when it is first loaded and 
> create ActionConfigs for all potential alias methods. 
> See also http://www.mail-archive.com/dev%40struts.apache.org/msg25916.html



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-1742) new token associated execute and wait interceptor

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-1742?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-1742:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> new token associated execute and wait interceptor
> -
>
> Key: WW-1742
> URL: https://issues.apache.org/jira/browse/WW-1742
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Core Interceptors
>Reporter: Thomas Micheline
>Priority: Minor
> Fix For: 6.4.0
>
> Attachments: TokenizedExecuteAndWaitInterceptor.java
>
>
> A new interceptor could be created which associates background processes with 
> a token rather than a session.  This way, an application could allow separate 
> background processes to the same user operating in multiple windows/tabs.  
> I'll provide the class which makes use of the getName method suggest in 
> WW-1740 (and the change in WW-1741 is also needed if the token interceptor 
> preceeds this interceptor in the stack).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3226) Add optional support to AliasInterceptor to overwrite aliased parameters

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3226?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3226:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Add optional support to AliasInterceptor to overwrite aliased parameters
> 
>
> Key: WW-3226
> URL: https://issues.apache.org/jira/browse/WW-3226
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Core Interceptors
>Affects Versions: 2.1.8
>Reporter: Jasper Rosenberg
>Priority: Minor
> Fix For: 6.4.0
>
>
> It would be great if the AliasInterceptor could overwrite the aliased 
> parameters rather than just inject them under different names, much like I 
> recall staticParams supports.  I suspect many, like me, were surprised to 
> learn this wasn't how it currently behaved.  It would have to be a new flag 
> to maintain backwards compatibility.
> Alternatively, the ParametersInterceptor could be enhanced to take an 
> optional aliases map.  That would be pretty handy.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-2820) REST Plugin Issues/Improvements

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-2820?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-2820:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> REST Plugin Issues/Improvements
> ---
>
> Key: WW-2820
> URL: https://issues.apache.org/jira/browse/WW-2820
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Plugin - REST
>Affects Versions: 2.1.2
>Reporter: Alvin Singh
>Priority: Major
> Fix For: 6.4.0
>
>
> I didn't know whether I should create separate issues for each (some are not 
> issues but just require some doco). Issues described here - 
> http://www.nabble.com/forum/ViewPost.jtp?post=19230238&framed=y -
> - If you want a blank namespace - do not use "/" as your namespace in your 
> struts xml's or in namespace notation. Inconsistent behavior starts to occur. 
> - If you want a specific namespace - e.g. /v1 - you must ensure your 
> namespace has prefixed slash i.e. "/v1" otherwise it will not work
> - If you are using tiles or even jsp (I think) and have the same name folder 
> as a namespace your rest urls will not execute the action 
> - Your actions/controllers must be suffixed with 'Controller' or the action 
> mapper will not pick them up (wiki says it is optional) 
> - If you have a action/controller name the same as the package name its in - 
> strange things happen (can't find action mapping etc.). e.g package name is 
> au.com.test.rest.space, class in this package with name SpaceController will 
> not work correctly - SpacesController will.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3476) Allow overwriting of constants for each package

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3476?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3476:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Allow overwriting of constants for each package
> ---
>
> Key: WW-3476
> URL: https://issues.apache.org/jira/browse/WW-3476
> Project: Struts 2
>  Issue Type: New Feature
>  Components: XML Configuration
>Affects Versions: 2.2.1
>Reporter: Johannes Geppert
>Priority: Major
> Fix For: 6.4.0
>
>
> Allow to overwriting of constants for each package.
> So I can specify as example for each package an other ActionMapper, Local or 
> other location for the JSP Files.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3364) Using convertors in JSON serialization

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3364?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3364:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Using convertors in JSON serialization
> --
>
> Key: WW-3364
> URL: https://issues.apache.org/jira/browse/WW-3364
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Plugin - JSON
>Affects Versions: 2.1.8
>Reporter: Rahul Mohan
>Priority: Major
>  Labels: JSON
> Fix For: 6.4.0
>
>
> The bundled JSON plugin does not use registered convertors for data 
> conversion. This seriously affects the implementation of gracefully degrading 
> ajax apps.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3233) @Result name aliases

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3233?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3233:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> @Result name aliases
> 
>
> Key: WW-3233
> URL: https://issues.apache.org/jira/browse/WW-3233
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Plugin - Convention
>Affects Versions: 2.1.6
>Reporter: Alex Siman
>Priority: Minor
> Fix For: 6.4.0
>
>
> Suppose we have LoginAction which maps to "login.jsp". How to use the same 
> JSP for "input" (or whatever else) result w/o using of result location? For 
> now we do:
> @Results({
> @Result(
> name = Action.INPUT,
> location = "login.jsp"
> )
> })
> public class LoginAction {...}
> But it would be better to have something like @Result.aliases[].
> Concept example:
> @Results({
> @Result(
> /*name = "success", */
> aliases = {"input", "error"}
> )
> })
> public class LoginAction {...}
> And this action must be mapped to page "login.jsp" on any of these action 
> results: 
> "success"
> "input"
> "error"



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-2963) default-action-ref fails to find wildcard named actions

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-2963?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-2963:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> default-action-ref fails to find wildcard named actions
> ---
>
> Key: WW-2963
> URL: https://issues.apache.org/jira/browse/WW-2963
> Project: Struts 2
>  Issue Type: Bug
>  Components: Core Actions
>Affects Versions: 2.1.6
> Environment: Windows XP, jetty 6.1.5, Java 1.6
>Reporter: Tomasz Nurkiewicz
>Priority: Minor
> Fix For: 6.4.0
>
>
> With {{struts.xml}} fragment given below:
> {code:xml}
> 
> 
>   
> 
> 
>   
> 
> {code}
> Struts2 returns 404: "There is no Action mapped for namespace / and action 
> name ." Specifying action with no wildcard name (e.g. {{ name="movies" />}}) works as expected.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3353) StrutsTestCase doesn't work with rest-plugin

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3353?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3353:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> StrutsTestCase doesn't work with rest-plugin
> 
>
> Key: WW-3353
> URL: https://issues.apache.org/jira/browse/WW-3353
> Project: Struts 2
>  Issue Type: Bug
>  Components: Plugin - REST
>Affects Versions: 2.1.8
>Reporter: Bill Stilwell
>Priority: Major
> Fix For: 6.4.0
>
> Attachments: GetOrdersStrutsTest.java, pom.xml
>
>
> StrutsTestCase doesn't seem to work with rest-plugin. I can create action 
> mapping/action proxies, but they don't work - for e.g., a request for 
> /orders/3 against the rest-showcase controller doesn't call setId. 
> I will attach a sample unit test that demonstrates the issue.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3532) client validation isn't generated when using a VisitorFieldValidator annotation

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3532?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3532:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> client validation isn't generated when using a VisitorFieldValidator 
> annotation
> ---
>
> Key: WW-3532
> URL: https://issues.apache.org/jira/browse/WW-3532
> Project: Struts 2
>  Issue Type: Bug
>Affects Versions: 2.2.1
> Environment: jboss 5, struts2-core-2.2.1.jar
>Reporter: David G
>Priority: Minor
> Fix For: 6.4.0
>
> Attachments: AnnotationValidationConfigurationBuilderTest.java
>
>
> When using a VisitorFieldValidator in an action, the generated Javascript 
> doesn't validate fields on the referenced POJO, i.e. the example I have below 
> would only generate:
> 
> function validateForm_createAccount() {
> form = document.getElementById("createAccount");
> clearErrorMessages(form);
> clearErrorLabels(form);
> var errors = false;
> var continueValidation = true;
> return !errors;
> }
> 
> I have two current workarounds, but they're a bit of a pain:
> 1) Using XML validation instead of annotations.
> 2) Not to use the VisitorFieldValidator model, and instead have the form 
> fields referenced directly in the Action class.
> Here's the code I've been using (a trimmed down version of it anyway ;-) )
> AccountManagementAction.java:
> public class AccountManagementAction extends ActionSupport
> {
>   private Account account;
>   public Account getAccount()
>   {
>   return account;
>   }
>   @VisitorFieldValidator
>   public void setAccount(Account account)
>   {
>   this.account = account;
>   }
> ...
> }
> Account.java:
> public class Account
> {
>   private String username;
>   public String getUsername()
>   {
>   return username;
>   }
>   @Validations(
>   requiredStrings = @RequiredStringValidator(trim = true, message 
> = "Required"),
>   stringLengthFields = @StringLengthFieldValidator(
>   minLength = "2", maxLength = "10", trim = true,
>   message = "This must be between ${minLength} and 
> ${maxLength} letters"),
>   regexFields = @RegexFieldValidator(expression = 
> "^[0-9a-zA-Z]*$",
>   message = "Only plain letters and numbers are allowed")
> )
>   public void setUsername(String username)
>   {
>   this.username = username;
>   }
> }
> registration.jsp:
> <%@page contentType="text/html" pageEncoding="UTF-8"%>
> <%@ taglib prefix="s" uri="/struts-tags" %>
> "http://www.w3.org/TR/html4/loose.dtd";>
> 
>   
>   
>   
>   
>   
>   
>   
>   
>   
> 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3540) repopulateField config does not work correctly after conversion failed

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3540?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3540:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> repopulateField config does not work correctly after conversion failed
> --
>
> Key: WW-3540
> URL: https://issues.apache.org/jira/browse/WW-3540
> Project: Struts 2
>  Issue Type: Bug
>  Components: Core Interceptors
>Affects Versions: 2.0.14, 2.2.1
> Environment: tomcat 6.0.29
>Reporter: PanQuanyi
>Priority: Minor
> Fix For: 6.4.0
>
>   Original Estimate: 96h
>  Remaining Estimate: 96h
>
> input.jsp content:
>  label="Age">
> ValidateAction.java content:
> public class ValidateAction extends ActionSupport{
>   private int age;
>   public int getAge() {
>   return age;
>   }
>   public void setAge(int age) {
>   this.age = age;
>   }
>   @Override
>   public String execute() throws Exception {
>   return SUCCESS;
>   }
> }
> ValidateAction-conversion.xml:
> 
>   
>   
>   false
>   age not valid configed in xml
>   
>   
> 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3530) Invalid cache key in AnnotationActionValidationManager.buildValidatorKey when using visitor field validators

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3530?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3530:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Invalid cache key in AnnotationActionValidationManager.buildValidatorKey  
> when using visitor field validators
> -
>
> Key: WW-3530
> URL: https://issues.apache.org/jira/browse/WW-3530
> Project: Struts 2
>  Issue Type: Bug
>  Components: XML Validators
>Affects Versions: 2.2.1
>Reporter: Johnny Yu
>Priority: Major
> Fix For: 6.4.0
>
>
> Error scenerio:
> MyAction-validation.xml:
> 
>
>   
>   basic
>   true
>   
>   
>   
>   
>   
>   additional
>   true
>   
>   
>   
> 
> In this case, validators in MyClass-basic-validation.xml will be executed two 
> times, but validators in MyClass-additional-validation.xml will just ignored.
> The problem is caused by 
> AnnotationActionValidationManager.buildValidatorKey(Class) which returns the 
> same cache key for the validator cache.
> The current cache key is created by:
> StringBuilder sb = new StringBuilder(clazz.getName());
> sb.append("/");
> sb.append(proxy.getConfig().getName());
> sb.append("|");
> sb.append(proxy.getMethod());
> The context is not a part of the cache key. Therefore, the two visitor 
> validator will just get the same cache key. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-3576) SessionMap is not thread-safe

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3576?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3576:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> SessionMap is not thread-safe
> -
>
> Key: WW-3576
> URL: https://issues.apache.org/jira/browse/WW-3576
> Project: Struts 2
>  Issue Type: Bug
>  Components: Other
>Affects Versions: 2.2.1
>Reporter: Sylvain Veyrié
>Assignee: Lukasz Lenart
>Priority: Major
> Fix For: 6.4.0
>
>
> Searching for a bug after some stress test (Exception on "getAttribute": 
> already invalidated session), I reviewed SessionMap.java.
> Following WW-239, SessionMap has been made thread-safe.
> All methods are like this :
> public void doSomething() {
>   if (session == null) {
>   return;
>   }
>   
>   synchronized (session) {
>   session.doSometing();
>   }
> }
> For example:
> public void invalidate() {
>   if (session == null) {
>   return;
>   }
>   
>   synchronized (session) {
>   session.invalidate();
>   session = null;
>   entries = null;
>   }
> } 
> IMHO this is not thread-safe. With the example of invalidate(), if there is a 
> context switch just before the synchronized, the nullity is no more checked. 
> If another invalidate() is called at least a NPE can be thrown. There are 
> probably other side-effects like my exception problem.
> As now Struts 2 only supports Java 5+, there is two ways to fix it :
> * use a double-check-locking (DCL) and set session "volatile" (easy way)
> * use java.util.concurrent instead of synchronized keyword
> If you agree and choose one of those fixes, I can provide a patch.
> For the moment, I don't know if my bug is resolved if we directly use javax 
> session, without this wrapper.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4147) Have StrutsPrepareAndExecuteFilter initialize Freemarker rather than first actual Request

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4147?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4147:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Have StrutsPrepareAndExecuteFilter initialize Freemarker rather than first 
> actual Request
> -
>
> Key: WW-4147
> URL: https://issues.apache.org/jira/browse/WW-4147
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Other
>Affects Versions: 2.3.15.1
>Reporter: Jasper Rosenberg
>Priority: Minor
>  Labels: freemarker, performance, startup
> Fix For: 6.4.0
>
>
> Currently, the first request to the web app triggers getting the Freemarker 
> Configuration, which causes it to be built for the first time.  
> Depending on circumstances, this might be a bit slow.  It would be nice if 
> when struts was coming up, it forced Freemarker initialization before it the 
> server was declared ready to accept requests.
> The way I hacked around this was to extend StrutsPrepareAndExecuteFilter so 
> that in init(FilterConfig), I get the current FreemarkerManager, and call 
> .getConfiguration(filterConfig.getServletContext()) on it.
> As an aside, it was surprisingly difficult to get the Container to use to 
> inject the FreemarkerManager instance in StrutsPrepareAndExecuteFilter.  I'm 
> guessing I'm just missing something.
> I recognize not all struts apps are using freemarker, which is probably why 
> it inits lazily, but it would be great to have an easy hook, and 
> StrutsPrepareAndExecuteFilter is the obvious place since you have access to 
> the ServletContext.
> {code:java}
> private FreemarkerManager freemarkerManager;
> /**
>  * Override to initialize freemarker hooks proactively.
>  */
> @Override
> public void init(final FilterConfig filterConfig) throws ServletException 
> {
> super.init(filterConfig);
> // Inject the freemarker manager
> prepare.assignDispatcherToThread();
> try {
> Dispatcher.getInstance().getContainer().inject(this);
> } finally {
> Dispatcher.setInstance(null);
> }
> 
> // Force initialization of the freemarker configuration
> freemarkerManager.getConfiguration(filterConfig.getServletContext());
> }
> @Inject
> public void setFreemarkerManager(FreemarkerManager freemarkerManager) {
> this.freemarkerManager = freemarkerManager;
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4291) Can't use Spring bean name for type convertor

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4291?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4291:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Can't use Spring bean name for type convertor
> -
>
> Key: WW-4291
> URL: https://issues.apache.org/jira/browse/WW-4291
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Plugin - Spring
>Affects Versions: 6.1.1
>Reporter: Jasper Rosenberg
>Priority: Minor
> Fix For: 6.4.0
>
>
> If in your xwork.conversion.properties file you try to use a Spring bean name 
> instead of a class name, it blows up.
> This is because DefaultConfiguration.createBootstrapContainer() ends up using 
> DefaultTypeConverterCreator which has the generic ObjectFactory at that point 
> because it happens before the struts.properties file is ever loaded (where in 
> my case the SpringObjectFactory is defined.)
> {noformat}
> 10:20:06,910 ERROR [DefaultConversionPropertiesProcessor] Conversion 
> registration error
> java.lang.ClassNotFoundException: entityObjectTypeConvertor
> at 
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
> at 
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
> at 
> com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:152)
> at 
> com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:108)
> at 
> com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:161)
> at 
> com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:151)
> at 
> com.opensymphony.xwork2.conversion.impl.DefaultTypeConverterCreator.createTypeConverter(DefaultTypeConverterCreator.java:23)
> at 
> com.opensymphony.xwork2.conversion.impl.DefaultConversionPropertiesProcessor.loadConversionProperties(DefaultConversionPropertiesProcessor.java:64)
> at 
> com.opensymphony.xwork2.conversion.impl.DefaultConversionPropertiesProcessor.process(DefaultConversionPropertiesProcessor.java:40)
> at 
> com.opensymphony.xwork2.conversion.impl.XWorkConverter.setConversionPropertiesProcessor(XWorkConverter.java:179)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at 
> com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:299)
> at 
> com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:438)
> at 
> com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:207)
> ...
> at 
> com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:484)
> at 
> com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:584)
> at 
> com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:484)
> at 
> com.opensymphony.xwork2.config.impl.DefaultConfiguration.createBootstrapContainer(DefaultConfiguration.java:324)
> at 
> com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:221)
> at 
> com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
> at 
> org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)
> at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)
> at 
> org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
> at 
> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
> at 
> org.springframework.web.filter.DelegatingFilterProxy.initDelegate(DelegatingFilterProxy.java:325)
> at 
> org.springframework.web.filter.DelegatingFilterProxy.initFilterBean(DelegatingFilterProxy.java:235)
> at 
> org.springframework.web.filter.GenericFilterBean.init(GenericFilterBean.java:194)
> at 
> org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
> at 
> org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
> at 
> org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:115)
> at 
> org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4072)
> at 
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4726)
> at 
> 

[jira] [Updated] (WW-3933) Provide web-fragment.xml for easier deployment on Servlet 3.0 compliant containers

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-3933?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3933:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Provide web-fragment.xml for easier deployment on Servlet 3.0 compliant 
> containers
> --
>
> Key: WW-3933
> URL: https://issues.apache.org/jira/browse/WW-3933
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Dispatch Filter
>Affects Versions: 2.3.7
>Reporter: Daniel Le Berre
>Priority: Minor
> Fix For: 6.4.0
>
>
> Servlet 3.0 specification includes the possibility for libraries to ship 
> web-fragment.xml files in their META-INF directory to contribute some 
> declarations to the main web.xml file.
> Struts 2 only requires the declaration of a filter in the web.xml file to 
> work. When building Servlet 3.0 webapp, the web.xml file is often not used at 
> all.
> It would be nice to ship a web-fragment.xml file in struts 2 that declares 
> the PrepareAndExecute filter to simplify the use of the framework on a 
> servlet 3.0 stack.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4184) When a getter of an action calls getText("getterName.something"), method call stack overflow occurs

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4184?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4184:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> When a getter of an action calls getText("getterName.something"), method call 
> stack overflow occurs
> ---
>
> Key: WW-4184
> URL: https://issues.apache.org/jira/browse/WW-4184
> Project: Struts 2
>  Issue Type: Bug
>Affects Versions: 2.3.15.1
> Environment: Windows Vista, Java 7, Tomcat 7
>Reporter: recyclebin5385
>Priority: Minor
> Fix For: 6.4.0
>
> Attachments: WebContent.zip, src.zip
>
>
> Under a certain condition, calling a getter of an action causes method call 
> stack overflow.
> If a jsp file contains a  tag, it doesn't work and throws 
> java.util.ConcurrentModificationException.
> The condition is described below.
>  -  The action class extends com.opensymphony.xwork2.ActionSupport.
>  -  The action class has a getter and the getter calls the action class's 
> method getText().
> The argument of getText() is like "getterName.something".
> If the getter is getFoo(), the argument is like 'foo.bar'.
>  -  An *empty* properties file exists with the same name as the action class 
> in the same package.
> If the action class is TestAction, the name of the properties file is 
> TestAction.properties
>  -  The JSP file has tag .
> It seems that  tries to call getFoo() and causes call stack 
> overflow.
> It has something to do with the problem?
> 1.   calls the action class's method getFoo().
> 2.  getFoo() calls getText("foo.bar").
> 3.  getText() calls LocalizedTextUtil.findText(Class aClass, String 
> aTextName, Locale locale, String defaultMessage, Object[] args, ValueStack 
> valueStack).
> 4.  There is no property named foo.bar, so LocalizedTextUtil.findText() tries 
> to get "foo.bar" from the value stack.
> 5.  The action class instance is on the top of the value stack, so the action 
> class's getFoo() is called.
> 6.  Go back to 2. This loop continues infinitely



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4395) Make email validator regex comply with RFC 6531

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4395:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Make email validator regex comply with RFC 6531 
> 
>
> Key: WW-4395
> URL: https://issues.apache.org/jira/browse/WW-4395
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Core Actions
>Affects Versions: 2.3.16.3
>Reporter: Miguel Almeida
>Priority: Major
>  Labels: email, regex, validation
> Fix For: 6.4.0
>
>
> This is the regex for email validation in Struts:
> {noformat}
> \\b^['_a-z0-9-\\+]+(\\.['_a-z0-9-\\+]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)\*
> \.([a-z]{2}|aero|arpa|asia|biz|com|coop|edu|gov|info|int|jobs|mil|mobi|
> museum|name|nato|net|org|pro|tel|travel|xxx)$\\b
> {noformat}
> This doesn't allow special characters (e.g. àéí, äëö,...).
> However, International characters above U+007F are permitted by [RFC 
> 6531|http://tools.ietf.org/html/rfc6531]
> Because some mail servers seem to follow this standard, regex should be 
> improved to allow email addresses valid according to this standard.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4394) Move JSP support into dedicated plugin

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4394?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4394:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Move JSP support into dedicated plugin
> --
>
> Key: WW-4394
> URL: https://issues.apache.org/jira/browse/WW-4394
> Project: Struts 2
>  Issue Type: Improvement
>Reporter: Lukasz Lenart
>Priority: Major
> Fix For: 6.4.0
>
>
> The same as WW-4243



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4329) Support ConfigurationManagerListener

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4329?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4329:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Support ConfigurationManagerListener
> 
>
> Key: WW-4329
> URL: https://issues.apache.org/jira/browse/WW-4329
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Core Actions
>Reporter: Jasper Rosenberg
>Priority: Minor
> Fix For: 6.4.0
>
>
> I wanted to run some validation checks on the actions after they were loaded. 
>  I could do it at startup by creating a DispatcherListener.  However, in 
> development, if the Configuration reloads in devMode, I have no way to know 
> that and rerun my validation.  It would be great to just mimic the 
> DispatcherListener pattern for the ConfigurationManager so one could register 
> ConfigurationManagerListeners for when the configuration is loaded/reload.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4625) Struts 2 XSS vulnerability with when is used.

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4625?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4625:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Struts 2 XSS vulnerability with  when  is used.
> ---
>
> Key: WW-4625
> URL: https://issues.apache.org/jira/browse/WW-4625
> Project: Struts 2
>  Issue Type: Bug
>Affects Versions: 2.3.24, 2.3.28
> Environment: Operating System: Windows 7(N/A).
> Application Server: Tomcat 6(any server running on JRE1.6 or before JRE).
> Java: jdk1.5.0.11.
> Developloment Framework: Struts 2.3.28, 2.3.24.1.
> Browser: FireFox 38.0.1.
>Reporter: Naozumi Taromaru
>Priority: Major
>  Labels: struts2, vulnerability, xss
> Fix For: 6.4.0
>
>
>  tag and JspTemplateEngine use
> org.apache.struts2.components.Include#include.
> (I use  tag.)
> The included page is encoded by response character encoding(default is 
> ISO-8859-1(ServletResponse)).
> But encoded result is decoded by 'request' character encoding(default is 
> UTF-8(@Inject(StrutsConstants.STRUTS_I18N_ENCODING))).
> org.apache.struts2.components.Include use wrong character encoding.
> If request and response character encoding are specifically configured to 
> same character encoding,
> there are no problems.
> However, if request and response character encoding are not specifically 
> configured,
> (or <%@ page contentType="text/html; charset=ISO-8859-1" %> is written in JSP 
> only,)
> the included page is encoded by ISO-8859-1 and decoded by UTF-8.
> By using old decoding rule of UTF-8(enable on JRE1.5.0_16 or before and 
> JRE1.6.0_10 or before),
> XSS vulnerability occurs, even if input value is sanitized when output as 
> .
> Please refer to description of WW-4507 for sample attack parameter 
> information.
> Please refer to my comment written in WW-4507 for more analysis information.
> P.S.
> I'm thinking WW-4507(S2-028) has been caused by this.
> (WW-4507(S2-028) is not fixed in 2.3.28.)
> But if it's different, please show the hidden reproduction condition to 
> WW-4507.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4508) DefaultActionMapperTest failures due to invalid mock type for parameterMap

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4508?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4508:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> DefaultActionMapperTest failures due to invalid mock type for parameterMap
> --
>
> Key: WW-4508
> URL: https://issues.apache.org/jira/browse/WW-4508
> Project: Struts 2
>  Issue Type: Bug
>  Components: Unit Tests
>Affects Versions: 2.3.24
> Environment: The JVM where this was encountered is the Waratek JVM 
> (www.waratek.com) which contains support for prevention of SQL Injection 
> attacks. This bug is not reproducible using OpenJDK or any other JVM due to 
> the fact the tests reference only the keys and not the values.
>Reporter: Dermot McGahon
>Priority: Minor
> Fix For: 6.4.0
>
>
> All of the tests which use StrutsMockHttpServletRequest are setting up 
> incorrectly typed parameterMaps in the mock.
> A parameterMap should be typed 
> java.util.Map and not Map 
> as the tests are doing i.e the value parameter should be String[] and not 
> String. This caused us to see test failures when treating those values as 
> String[] when they weren't.
> See:
> http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html
> http://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html#getParameterMap%28%29



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4421) Duplicate @Action value annotation check skipped

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4421?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4421:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Duplicate @Action value annotation check skipped
> 
>
> Key: WW-4421
> URL: https://issues.apache.org/jira/browse/WW-4421
> Project: Struts 2
>  Issue Type: Bug
>  Components: Annotations, Plugin - Convention
>Affects Versions: 2.3.16.3
>Reporter: Sebastian Haas
>Priority: Major
> Fix For: 6.4.0
>
> Attachments: MethodCheckFailsOnStartup.java, 
> MethodCheckSkippedOnStartup.java
>
>
> {{PackageBasedActionConfigBuilder#buildConfiguration}} checks if there are 
> duplicate action names on method annotations. If {{ActionSupport#execute}} is 
> overridden and annotated with {{@Action}}, the duplicate action name check is 
> skipped.
> The check is disabled due to 
> {code:title=PackageBasedActionConfigBuilder.java:674}if 
> (!map.containsKey(DEFAULT_METHOD){code}
> Having duplicate action names leads to different behavior with Java 7 or Java 
> 8 environment (due to reflection method order).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4904) Support for cross context request processing

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4904?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4904:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Support for  cross context request processing
> -
>
> Key: WW-4904
> URL: https://issues.apache.org/jira/browse/WW-4904
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Dispatch Filter
>Affects Versions: 2.3.34
> Environment: Wildlfy 10.1.0
> Struts 2.3.34
> JDK 1.8.0_151
>Reporter: Prasanth 
>Priority: Minor
> Fix For: 6.4.0
>
>
> When a request is forwarded from one context to another (both using struts2)
> {code:java}
> ServletContext sContext = context.getContext("/context2");
> RequestDispatcher rd = sContext.getRequestDispatcher(resource);
> rd.forward(request, response);
> {code}
> you get a {{ClassCastException}}. Both the projects has their own struts jars 
> (in WEB-INF/lib folder).
> {noformat}
> Caused by: java.lang.ClassCastException: 
> org.apache.struts2.dispatcher.mapper.ActionMapping cannot be cast to 
> org.apache.struts2.dispatcher.mapper.ActionMapping
> at 
> org.apache.struts2.dispatcher.ng.PrepareOperations.findActionMapping(PrepareOperations.java:163)
> at 
> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:92)
> at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
> at 
> io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
> at 
> io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
> at 
> io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
> at 
> io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
> at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
> at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
> at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
> at 
> io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:274)
> at 
> io.undertow.servlet.handlers.ServletInitialHandler.dispatchToPath(ServletInitialHandler.java:209)
> at 
> io.undertow.servlet.spec.RequestDispatcherImpl.forwardImpl(RequestDispatcherImpl.java:221)
> ... 128 more
> {noformat}
> To make it work you have to have a filter (before struts2 filter) in the 
> application that is receiving the request and have the below two lines. 
> {code:java}
> request.setAttribute("struts.actionMapping", new ActionMapping());
> request.setAttribute("struts.valueStack", null);
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4858) JSONInterceptor must not populate value stack directly

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4858?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4858:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> JSONInterceptor must not populate value stack directly
> --
>
> Key: WW-4858
> URL: https://issues.apache.org/jira/browse/WW-4858
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Plugin - JSON
>Affects Versions: 2.3.1, 6.1.1
>Reporter: Yasser Zamani
>Priority: Major
>  Labels: decouple, refactoring
> Fix For: 6.4.0
>
> Attachments: StrutsUnifiedDataModel.png
>
>
> {{JSONInterceptor}} must populate value stack via OGNL to honor our 
> exclusions!
> So according to my current quick view and understanding, I'm planning 
> something like below which also resolves WW-3364: {{JSONInterceptor}} could 
> be an extension of {{ModelDrivenInterceptor}} via some refactoring of both. 
> From hereafter, {{JSONPopulator}} could be removed and {{JSONInterceptor}} 
> must give population up to {{ParametersInterceptor}}. This simply could be 
> achieved by something like pushing {{JSONInterceptor.root}} into top of stack 
> and also moving posted json to http params (or if was impossible some 
> refactoring of {{ParametersInterceptor}}).
> Please cast here any objections, votes or idea.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4428) Add support for new Java 8 LocalDate and LocalDateTime to the JSON plugin

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4428?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4428:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Add support for new Java 8 LocalDate and LocalDateTime to the JSON plugin
> -
>
> Key: WW-4428
> URL: https://issues.apache.org/jira/browse/WW-4428
> Project: Struts 2
>  Issue Type: Bug
>  Components: Plugin - JSON
>Affects Versions: 2.3.20
>Reporter: Alessandro Nistico
>Priority: Major
>  Labels: JSON
> Fix For: 6.4.0
>
>
> The JSONWriter and the JSONPopulator do not handle the new LocalDate and 
> LocalDateTime as primitive date values and will handle them through 
> introspection which will create the wrong JSON object.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4483) Add Listener for Configuration events

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4483:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Add Listener for Configuration events
> -
>
> Key: WW-4483
> URL: https://issues.apache.org/jira/browse/WW-4483
> Project: Struts 2
>  Issue Type: New Feature
>  Components: XML Configuration
>Affects Versions: 2.3.20
>Reporter: Jasper Rosenberg
>Priority: Minor
> Fix For: 6.4.0
>
>
> We have some rules that we enforce on our struts action and package 
> configurations.  We currently enforce these by validating the configuration 
> in non-production environments in a 
> DispatcherListener.dispatcherInitialized() implementation.
> That works great at startup but, in development, I dynamically reload the 
> configuration (say to fix an action definition), 
> DispatcherListener.dispatcherInitialized() is not invoked, and so the 
> configuration I reloaded is not revalidated.
> It would be great if struts2 supported a ConfigurationListener interface that 
> could listen for at least init complete, and reload complete events.  I could 
> see a lot of practical uses for that.  Thanks!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4478) Can't install own ValidatorFileParser

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4478?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4478:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Can't install own ValidatorFileParser
> -
>
> Key: WW-4478
> URL: https://issues.apache.org/jira/browse/WW-4478
> Project: Struts 2
>  Issue Type: Improvement
>  Components: XML Validators
>Affects Versions: 2.3.20
>Reporter: Jasper Rosenberg
>Priority: Minor
> Fix For: 6.4.0
>
>
> I'd like to install my own implementation of 
> com.opensymphony.xwork2.validator.ValidatorFileParser, but I can't w/o 
> overwriting the whole default struts xml because it uses "default" as the 
> name, and there is no property with which to set it.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4759) Dedicated struts2-api Maven artefact

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4759?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4759:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Dedicated struts2-api Maven artefact
> 
>
> Key: WW-4759
> URL: https://issues.apache.org/jira/browse/WW-4759
> Project: Struts 2
>  Issue Type: New Feature
>  Components: "New" API
>Affects Versions: 2.5.10
>Reporter: Lukasz Lenart
>Priority: Major
> Fix For: 6.4.0
>
>
> Create a new Maven artefact {{struts2-api}} and move all the interfaces 
> there, those interfaces are extension points that can be used by users to 
> implement custom behaviour



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-4301) includeProperties Does Not Work with a List of Lists

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-4301?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-4301:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> includeProperties Does Not Work with a List of Lists
> 
>
> Key: WW-4301
> URL: https://issues.apache.org/jira/browse/WW-4301
> Project: Struts 2
>  Issue Type: Bug
>  Components: Plugin - JSON
>Affects Versions: 2.3.16
>Reporter: Andrew Bernhagen
>Priority: Minor
>  Labels: JSON
> Fix For: 6.4.0
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> I found this issue when using server-side processing with JQuery Datatables 
> and attempting to populate.  
> Say I have this getter/field on my action:
> {code:java}
> public List> getListOfLists() {
>   return listOfLists;
> }
> {code}
> My struts.xml is defined as follows:
> {code:xml}
>  class="com.example.web.action.WebAction">
>   
>   false
>name="includeProperties">listOfLists\[\d+\]\[\d+\]
>   
> 
> {code}
> However, the include patterns that are constructed within JSONUtil are not 
> accurate.  Instead of making the expected pattern that would work:
> {noformat}
> listOfLists
> listOfLists\[\d+\]
> listOfLists\[\d+\]\[\d+\]
> {noformat}
> Only the following are created:
> {noformat}
> listOfLists\[\d+\]
> listOfLists\[\d+\]\[\d+\]
> {noformat}
> Because the first "listOfLists" is not created, the property is excluded in 
> the results.
> This all happens because of line 463 in JSONUtil:
> {code:java}
> addPattern(results, patternExpr.substring(0, 
> patternExpr.lastIndexOf(includePatternData.get(ARRAY_BEGIN_STRING).get(type))),
>  type);
> {code}
> Since we're going at the last index of the ARRAY_BEGIN_STRING string, it's 
> skipping the first index.  This could be updated to be smarter to build the 
> include patterns as expected.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-5225) add accessor to the original filename into JakartaMultiPartRequest & MultiPartRequestWrapper

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-5225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-5225:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> add accessor to the original filename into JakartaMultiPartRequest & 
> MultiPartRequestWrapper
> 
>
> Key: WW-5225
> URL: https://issues.apache.org/jira/browse/WW-5225
> Project: Struts 2
>  Issue Type: Improvement
>Reporter: Eric Blanquer
>Priority: Trivial
> Fix For: 6.4.0
>
>
> HTML input file with *webkitdirectory* *mozdirectory* allow to upload a folder
> {code}{code}
> but MultiPartRequestWrapper.getFileNames("folder") returns only the 
> canonicalName of files
> https://github.com/apache/struts/blob/12beb20949a14e8bcdff2e8ca1749ea29d880a77/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java#L233
> it will be very useful to be able to get the original *filename* of the 
> multipart request to be able to create the folder arborescence
> multipart POST eg:
> {code}-19664509768416840202761310294
> Content-Disposition: form-data; name="folder"; 
> filename="folder0/folder1/file1.txt"
> Content-Type: text/plain
> -19664509768416840202761310294
> Content-Disposition: form-data; name="folder"; 
> filename="folder0/folder2/file2.txt"
> Content-Type: text/plain
> -19664509768416840202761310294
> Content-Disposition: form-data; name="folder"; 
> filename="folder0/folder3/file3.txt"
> Content-Type: text/plain
> -19664509768416840202761310294--
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-5294) s:url tag usage in a public page triggers a warning to not expose JSP pages directly

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-5294?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-5294:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> s:url tag usage in a public page triggers a warning to not expose JSP pages 
> directly 
> -
>
> Key: WW-5294
> URL: https://issues.apache.org/jira/browse/WW-5294
> Project: Struts 2
>  Issue Type: Bug
>Affects Versions: 6.1.2
> Environment: Ubuntu 20, Java 8, Tomcat 9
>Reporter: Erica Kane
>Assignee: Lukasz Lenart
>Priority: Major
> Fix For: 6.4.0
>
>
> I have a number of public pages that use the {{}} tags with no issues. 
> But one page uses an  {{}} tag, and every time it is visited I get a 
> warning on our logs the Action invocation context is null, and that JSP pages 
> should not be exposed directly. This is an informational page only, and I 
> can't think why the URL tag is unsafe to use while the a tag is safe. I am 
> assuming this is a bug, but of course if there is an issue with the URL tag 
> on a public page I would like to know.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-5256) Use freemarker <#compress> directive in tag definitions

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-5256?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-5256:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Use freemarker <#compress> directive in tag definitions
> ---
>
> Key: WW-5256
> URL: https://issues.apache.org/jira/browse/WW-5256
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Core Tags
>Reporter: Lukasz Lenart
>Assignee: Stefaan Dutry
>Priority: Minor
> Fix For: 6.4.0
>
>
> To "compress" html generated by the tags
> https://freemarker.apache.org/docs/dgui_misc_whitespace.html#autoid_30



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-5250) Address TODO in DefaultActionValidatorManagerTest

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-5250?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-5250:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Address TODO in DefaultActionValidatorManagerTest
> -
>
> Key: WW-5250
> URL: https://issues.apache.org/jira/browse/WW-5250
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Core, Unit Tests, XML Validators
>Reporter: Lukasz Lenart
>Priority: Minor
> Fix For: 6.4.0
>
>
> There is a TODO which should be addressed:
> {noformat}
> // TODO: this all need to be converted to real unit tests
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-5249) Move test related classes into new struts2-test module

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-5249?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-5249:
--
Fix Version/s: 6.4.0
   (was: 6.2.0)

> Move test related classes into new struts2-test module
> --
>
> Key: WW-5249
> URL: https://issues.apache.org/jira/browse/WW-5249
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Core, Plugin - TestNG, Unit Tests
>Reporter: Lukasz Lenart
>Priority: Major
> Fix For: 6.4.0
>
>
> Move {{XWorkTestCase}} and other related classes in to the new module



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (WW-5233) Include Apache Tiles code base in the Tiles plugin

2023-06-28 Thread Lukasz Lenart (Jira)


 [ 
https://issues.apache.org/jira/browse/WW-5233?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-5233:
--
Fix Version/s: 6.3.0
   (was: 7.0.0)

> Include Apache Tiles code base in the Tiles plugin
> --
>
> Key: WW-5233
> URL: https://issues.apache.org/jira/browse/WW-5233
> Project: Struts 2
>  Issue Type: Improvement
>  Components: Plugin - Tiles
>Reporter: Lukasz Lenart
>Priority: Major
> Fix For: 6.3.0
>
>  Time Spent: 3h 10m
>  Remaining Estimate: 0h
>
> Apache Tiles has retired and it isn't maintained anymore. There are some 
> outstanding security issues that can be addressed right now. It will be 
> easier to maintain the code base as a part of the Tiles plugin instead of 
> taking the project back from attick.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)