OK thanks. I guess if v6 is going into maintenance only, the mirroring
of the same classes with different package names should be less problematic.
On 29/11/2024 03:38, Kusal Kithul-Godage wrote:
If you're extending a class in the com.opensymphony.xwork2 package you
may not be able to migrate across deprecated imports. In this case
you're extending
com.opensymphony.xwork2.validator.ValidationInterceptor and so you
will need to retain the deprecated imports. It's not that something
was missed, I just didn't get around to introducing org.apache.struts2
variants for every class (ensuring cross-compatibility during this
process is not always simple). So you may end up with some code or
classes that unfortunately can't be migrated until 7.0.
On Thu, Nov 28, 2024 at 8:27 PM Greg Huber<gregh3...@gmail.com> wrote:
When updating one of my interceptors to org.apache.struts2. package, the
class won't compile now:
The method doBeforeInvocation(com.opensymphony.xwork2.ActionInvocation)
in the type ValidationInterceptor is not applicable for the arguments
(org.apache.struts2.ActionInvocation)
The method doIntercept(ActionInvocation) of type
DMIAwareValidationInterceptor must override or implement a supertype method
The method getValidationContext(ActionProxy) of type
DMIAwareValidationInterceptor must override or implement a supertype method
The method getValidationContext(com.opensymphony.xwork2.ActionProxy) in
the type ValidationInterceptor is not applicable for the arguments
(org.apache.struts2.ActionProxy)
Maybe something got missed?
#####
Here is my class
package my.ui.struts2.interceptors;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsConstants;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionProxy;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.validator.ValidationInterceptor;
/**
* Define our own context to support method's names in validation file
name if
* DMI is enabled and method was specified validation file name will be
* constructed like this: -
*
* <ActionClass>-<actionAlias>!<methodName>-validation.xml
*/
public class DMIAwareValidationInterceptor extends ValidationInterceptor {
private static final long serialVersionUID = 9007212648956424490L;
private boolean dmiEnabled = false;
@Inject(StrutsConstants.STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION)
public void setEnableDynamicMethodInvocation(String value) {
dmiEnabled = Boolean.parseBoolean(value);
}
@Override
protected String doIntercept(ActionInvocation invocation) throws
Exception {
// Only run validator for a post if on DMI so handles errors
correctly
// final ActionContext context = invocation.getInvocationContext();
final HttpServletRequest request = (HttpServletRequest) invocation
.getInvocationContext().get(ServletActionContext.HTTP_REQUEST);
if (dmiEnabled && "POST".equals(request.getMethod()) ||
!dmiEnabled) {
doBeforeInvocation(invocation);
}
return invocation.invoke();
}
/**
* @see
com.opensymphony.xwork2.validator.ValidationInterceptor#getValidationContext(com.opensymphony.xwork2.ActionProxy)
*/
@Override
protected String getValidationContext(ActionProxy proxy) {
if (dmiEnabled && StringUtils.isNotEmpty(proxy.getMethod())) {
return proxy.getActionName() + "!" + proxy.getMethod();
}
return super.getValidationContext(proxy);
}
}
On 26/11/2024 06:06, Lukasz Lenart wrote:
Internal changes
A lot of classes have been marked as deprecated because of relocation
of them into a new package. All classes from package
com.opensymphony.xwork2 will be moved into org.apache.struts2 in
Struts 7 and this deprecation can help you adapt to incoming changes.
---------------------------------------------------------------------
To unsubscribe, e-mail:dev-unsubscr...@struts.apache.org
For additional commands, e-mail:dev-h...@struts.apache.org