Figured this out:
Map<String, Object> contextMap = new HashMap<String, Object>();
contextMap.put(StrutsStatics.HTTP_REQUEST, getServletRequest());
ActionContext context = new ActionContext(contextMap);
context.setLocale(Locale.getDefault());
//
http://mail-archives.apache.org/mod_mbox/struts-user/201001.mbox/%[email protected]%3E
ConfigurationManager configurationManager = new
ConfigurationManager(Container.DEFAULT_NAME);
OgnlValueStackFactory factory = new OgnlValueStackFactory();
configurationManager.addContainerProvider(new
XWorkConfigurationProvider());
configurationManager.reload();
Container container =
configurationManager.getConfiguration().getContainer();
container.inject(factory);
LocalizedTextProvider instance =
container.getInstance(LocalizedTextProvider.class);
instance.addDefaultResourceBundle(“…");
…
--
_________________________________________________________
Adam Brin
Director of Technology, Digital Antiquity
480.965.1278
> On Jul 13, 2017, at 11:08 AM, Adam Brin <[email protected]> wrote:
>
> Hi,
> With the removal of the TextProviderFactory and it’s replacement with beans,
> I can’t figure out how to properly setup our test environment (when testing
> Controllers that are autowired by spring. How do I inject a custom
> resourceBundle into the ActionContext or stack? I used to be able to create
> my own textProvider, but this no longer works. I’ve seen code like the
> following in the struts2 tests, but localizedTextProvider is null here:
>
> LocalizedTextProvider localizedTextProvider =
> container.getInstance(LocalizedTextProvider.class);
>
> I think if I can get the localizedTextProvider properly installed into the
> container, I’d be fine, but I can’t see how to do that. Here’s our setup code
> that worked with Struts 2.5.10:
>
>
> T controller = applicationContext.getBean(controllerClass);
> if (controller instanceof AbstractAuthenticatableAction) {
> TdarActionSupport tas = (TdarActionSupport) controller;
> tas.setServletRequest(getServletRequest());
> tas.setServletResponse(getServletResponse());
> // set the context
> }
> Map<String, Object> contextMap = new HashMap<String, Object>();
> contextMap.put(StrutsStatics.HTTP_REQUEST, getServletRequest());
> ActionContext context = new ActionContext(contextMap);
> context.setLocale(Locale.getDefault());
>
> ConfigurationManager configurationManager = new ConfigurationManager();
> OgnlValueStackFactory factory = new OgnlValueStackFactory();
>
> // FIXME: needs to be a better way to handle this
> TextProviderFactory textProviderFactory = new TextProviderFactory();
>
>
> factory.setTextProvider(textProviderFactory.createInstance(getResourceBundle(),
> (LocaleProvider) controller));
>
> configurationManager.addContainerProvider(new
> XWorkConfigurationProvider());
> configurationManager.getConfiguration().getContainer().inject(factory);
> if (controller instanceof ActionSupport) {
> ((ActionSupport)
> controller).setContainer(configurationManager.getConfiguration().getContainer());
> }
> ValueStack stack = factory.createValueStack();
>
> context.setValueStack(stack);
> ActionContext.setContext(context);
> --
> _________________________________________________________
> Adam Brin
> Director of Technology, Digital Antiquity
> 480.965.1278
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]