Search in sources :

Example 6 with StubConfigurationProvider

use of com.opensymphony.xwork2.test.StubConfigurationProvider in project struts by apache.

the class DebugTagTest method setStrutsConstant.

/**
 * Overwrite the Struts Constant and reload container
 */
private void setStrutsConstant(final Map<String, String> overwritePropeties) {
    configurationManager.addContainerProvider(new StubConfigurationProvider() {

        @Override
        public boolean needsReload() {
            return true;
        }

        @Override
        public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
            for (Map.Entry<String, String> stringStringEntry : overwritePropeties.entrySet()) {
                props.setProperty(stringStringEntry.getKey(), stringStringEntry.getValue(), null);
            }
        }
    });
    configurationManager.reload();
    container = configurationManager.getConfiguration().getContainer();
    stack.getActionContext().withContainer(container);
}
Also used : ContainerBuilder(com.opensymphony.xwork2.inject.ContainerBuilder) StubConfigurationProvider(com.opensymphony.xwork2.test.StubConfigurationProvider) LocatableProperties(com.opensymphony.xwork2.util.location.LocatableProperties) ConfigurationException(com.opensymphony.xwork2.config.ConfigurationException)

Example 7 with StubConfigurationProvider

use of com.opensymphony.xwork2.test.StubConfigurationProvider in project struts by apache.

the class StrutsBeanSelectionProviderTest method testRegister.

public void testRegister() {
    LocalizedTextProvider localizedTextProvider = container.getInstance(LocalizedTextProvider.class);
    assertEquals("The form has already been processed or no token was supplied, please try again.", localizedTextProvider.findDefaultText("struts.messages.invalid.token", Locale.getDefault()));
    loadConfigurationProviders(new StubConfigurationProvider() {

        @Override
        public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
            props.setProperty(StrutsConstants.STRUTS_CUSTOM_I18N_RESOURCES, "testmessages,testmessages2");
            props.setProperty(StrutsConstants.STRUTS_LOCALE, "US");
        }
    });
    localizedTextProvider = container.getInstance(LocalizedTextProvider.class);
    assertEquals("Replaced message for token tag", localizedTextProvider.findDefaultText("struts.messages.invalid.token", Locale.getDefault()));
}
Also used : ContainerBuilder(com.opensymphony.xwork2.inject.ContainerBuilder) StubConfigurationProvider(com.opensymphony.xwork2.test.StubConfigurationProvider) LocatableProperties(com.opensymphony.xwork2.util.location.LocatableProperties) ConfigurationException(com.opensymphony.xwork2.config.ConfigurationException) LocalizedTextProvider(com.opensymphony.xwork2.LocalizedTextProvider)

Example 8 with StubConfigurationProvider

use of com.opensymphony.xwork2.test.StubConfigurationProvider in project struts by apache.

the class OgnlValueStackTest method testFailOnTooLongExpressionLongerThan192_ViaOverriddenProperty.

public void testFailOnTooLongExpressionLongerThan192_ViaOverriddenProperty() {
    try {
        loadConfigurationProviders(new StubConfigurationProvider() {

            @Override
            public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
                props.setProperty(StrutsConstants.STRUTS_OGNL_EXPRESSION_MAX_LENGTH, "192");
            }
        });
        Integer repeat = Integer.parseInt(container.getInstance(String.class, StrutsConstants.STRUTS_OGNL_EXPRESSION_MAX_LENGTH));
        OgnlValueStack vs = createValueStack();
        try {
            vs.findValue(StringUtils.repeat('.', repeat + 1), true);
            fail("Failed to throw exception on too long expression");
        } catch (Exception ex) {
            assertTrue(ex.getCause() instanceof OgnlException);
            assertTrue(((OgnlException) ex.getCause()).getReason() instanceof SecurityException);
        }
    } finally {
        // Reset expressionMaxLength value to default (disabled)
        ognlUtil.applyExpressionMaxLength(null);
    }
}
Also used : OgnlException(ognl.OgnlException) ContainerBuilder(com.opensymphony.xwork2.inject.ContainerBuilder) StubConfigurationProvider(com.opensymphony.xwork2.test.StubConfigurationProvider) LocatableProperties(com.opensymphony.xwork2.util.location.LocatableProperties) ConfigurationException(com.opensymphony.xwork2.config.ConfigurationException) ParseException(ognl.ParseException) ConfigurationException(com.opensymphony.xwork2.config.ConfigurationException) StrutsException(org.apache.struts2.StrutsException) OgnlException(ognl.OgnlException)

Example 9 with StubConfigurationProvider

use of com.opensymphony.xwork2.test.StubConfigurationProvider in project struts by apache.

the class SetPropertiesTest method testAddingToCollectionBasedOnPermission.

public void testAddingToCollectionBasedOnPermission() {
    final MockObjectTypeDeterminer determiner = new MockObjectTypeDeterminer(Long.class, Bar.class, "id", true);
    loadConfigurationProviders(new StubConfigurationProvider() {

        @Override
        public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
            builder.factory(ObjectTypeDeterminer.class, new Factory() {

                public Object create(Context context) throws Exception {
                    return determiner;
                }

                @Override
                public Class type() {
                    return determiner.getClass();
                }
            }, Scope.SINGLETON);
        }
    });
    Collection barColl = new HashSet();
    ValueStack vs = ActionContext.getContext().getValueStack();
    ReflectionContextState.setCreatingNullObjects(vs.getContext(), true);
    ReflectionContextState.setReportingConversionErrors(vs.getContext(), true);
    Foo foo = new Foo();
    foo.setBarCollection(barColl);
    vs.push(foo);
    String bar1Title = "title";
    vs.setValue("barCollection(11).title", bar1Title);
    assertEquals(1, barColl.size());
    Object bar = barColl.iterator().next();
    assertTrue(bar instanceof Bar);
    assertEquals(((Bar) bar).getTitle(), bar1Title);
    assertEquals(((Bar) bar).getId(), new Long(11));
    // now test where there is no permission
    determiner.setShouldCreateIfNew(false);
    String bar2Title = "another title";
    vs.setValue("barCollection(22).title", bar1Title);
    assertEquals(1, barColl.size());
    bar = barColl.iterator().next();
    assertTrue(bar instanceof Bar);
    assertEquals(((Bar) bar).getTitle(), bar1Title);
    assertEquals(((Bar) bar).getId(), new Long(11));
}
Also used : Context(com.opensymphony.xwork2.inject.Context) ActionContext(com.opensymphony.xwork2.ActionContext) ValueStack(com.opensymphony.xwork2.util.ValueStack) StubConfigurationProvider(com.opensymphony.xwork2.test.StubConfigurationProvider) Foo(com.opensymphony.xwork2.util.Foo) MockObjectTypeDeterminer(com.opensymphony.xwork2.mock.MockObjectTypeDeterminer) Factory(com.opensymphony.xwork2.inject.Factory) Bar(com.opensymphony.xwork2.util.Bar) ContainerBuilder(com.opensymphony.xwork2.inject.ContainerBuilder) ObjectTypeDeterminer(com.opensymphony.xwork2.conversion.ObjectTypeDeterminer) MockObjectTypeDeterminer(com.opensymphony.xwork2.mock.MockObjectTypeDeterminer) LocatableProperties(com.opensymphony.xwork2.util.location.LocatableProperties) ConfigurationException(com.opensymphony.xwork2.config.ConfigurationException)

Example 10 with StubConfigurationProvider

use of com.opensymphony.xwork2.test.StubConfigurationProvider in project struts by apache.

the class SetPropertiesTest method doTestAddingToListsWithObjects.

public void doTestAddingToListsWithObjects(final boolean allowAdditions) {
    loadConfigurationProviders(new StubConfigurationProvider() {

        @Override
        public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
            builder.factory(ObjectTypeDeterminer.class, new Factory() {

                public Object create(Context context) throws Exception {
                    return new MockObjectTypeDeterminer(null, Cat.class, null, allowAdditions);
                }

                @Override
                public Class type() {
                    return Cat.class;
                }
            });
        }
    });
    Foo foo = new Foo();
    foo.setMoreCats(new ArrayList());
    String spielname = "Spielen";
    ValueStack vs = ActionContext.getContext().getValueStack();
    vs.getContext().put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);
    vs.getContext().put(ReflectionContextState.CREATE_NULL_OBJECTS, Boolean.TRUE);
    vs.push(foo);
    try {
        vs.setValue("moreCats[2].name", spielname);
    } catch (IndexOutOfBoundsException e) {
        if (allowAdditions) {
            throw e;
        }
    }
    Object setCat = null;
    if (allowAdditions) {
        setCat = foo.getMoreCats().get(2);
        assertNotNull(setCat);
        assertTrue(setCat instanceof Cat);
        assertTrue(((Cat) setCat).getName().equals(spielname));
    } else {
        assertTrue(foo.getMoreCats() == null || foo.getMoreCats().size() == 0);
    }
    // has been created
    if (allowAdditions) {
        spielname = "paws";
        vs.setValue("moreCats[0].name", spielname);
        setCat = foo.getMoreCats().get(0);
        assertNotNull(setCat);
        assertTrue(setCat instanceof Cat);
        assertTrue(((Cat) setCat).getName().equals(spielname));
    }
}
Also used : Context(com.opensymphony.xwork2.inject.Context) ActionContext(com.opensymphony.xwork2.ActionContext) ValueStack(com.opensymphony.xwork2.util.ValueStack) StubConfigurationProvider(com.opensymphony.xwork2.test.StubConfigurationProvider) Foo(com.opensymphony.xwork2.util.Foo) Factory(com.opensymphony.xwork2.inject.Factory) MockObjectTypeDeterminer(com.opensymphony.xwork2.mock.MockObjectTypeDeterminer) ContainerBuilder(com.opensymphony.xwork2.inject.ContainerBuilder) ObjectTypeDeterminer(com.opensymphony.xwork2.conversion.ObjectTypeDeterminer) MockObjectTypeDeterminer(com.opensymphony.xwork2.mock.MockObjectTypeDeterminer) LocatableProperties(com.opensymphony.xwork2.util.location.LocatableProperties) ConfigurationException(com.opensymphony.xwork2.config.ConfigurationException) Cat(com.opensymphony.xwork2.util.Cat)

Aggregations

ContainerBuilder (com.opensymphony.xwork2.inject.ContainerBuilder)10 StubConfigurationProvider (com.opensymphony.xwork2.test.StubConfigurationProvider)10 LocatableProperties (com.opensymphony.xwork2.util.location.LocatableProperties)10 ConfigurationException (com.opensymphony.xwork2.config.ConfigurationException)9 Context (com.opensymphony.xwork2.inject.Context)3 Factory (com.opensymphony.xwork2.inject.Factory)3 ActionContext (com.opensymphony.xwork2.ActionContext)2 ObjectTypeDeterminer (com.opensymphony.xwork2.conversion.ObjectTypeDeterminer)2 MockObjectTypeDeterminer (com.opensymphony.xwork2.mock.MockObjectTypeDeterminer)2 Foo (com.opensymphony.xwork2.util.Foo)2 ValueStack (com.opensymphony.xwork2.util.ValueStack)2 ActionProxyFactory (com.opensymphony.xwork2.ActionProxyFactory)1 DefaultActionProxyFactory (com.opensymphony.xwork2.DefaultActionProxyFactory)1 LocalizedTextProvider (com.opensymphony.xwork2.LocalizedTextProvider)1 ObjectFactory (com.opensymphony.xwork2.ObjectFactory)1 TextProvider (com.opensymphony.xwork2.TextProvider)1 ConfigurationProvider (com.opensymphony.xwork2.config.ConfigurationProvider)1 DummyTextProvider (com.opensymphony.xwork2.mock.DummyTextProvider)1 Bar (com.opensymphony.xwork2.util.Bar)1 Cat (com.opensymphony.xwork2.util.Cat)1