Search in sources :

Example 1 with BeanEditContext

use of org.apache.tapestry5.services.BeanEditContext in project tapestry-5 by apache.

the class BeanEditorTest method refresh_bean_validation_context.

@Test
public void refresh_bean_validation_context() {
    ComponentResources resources = mockComponentResources();
    BeanModelSource source = mockBeanModelSource();
    BeanModel model = mockBeanModel();
    Environment env = mockEnvironment();
    RegistrationData data = new RegistrationData();
    Messages messages = mockMessages();
    PropertyOverrides overrides = mockPropertyOverrides();
    BeanValidationContext beanValidationContext = newMock(BeanValidationContext.class);
    train_getBoundType(resources, "object", RegistrationData.class);
    train_createEditModel(source, RegistrationData.class, messages, model);
    train_getOverrideMessages(overrides, messages);
    expect(model.newInstance()).andReturn(data);
    expect(env.push(eq(BeanValidationContext.class), isA(BeanValidationContext.class))).andReturn(beanValidationContext);
    expect(model.getBeanType()).andReturn(RegistrationData.class);
    BeanEditContext ctxt = new BeanEditContext() {

        public Class<?> getBeanClass() {
            return RegistrationData.class;
        }

        public <T extends Annotation> T getAnnotation(Class<T> type) {
            return null;
        }
    };
    expect(env.push(eq(BeanEditContext.class), contextEq())).andReturn(ctxt);
    replay();
    BeanEditor component = new BeanEditor();
    component.inject(resources, overrides, source, env);
    component.doPrepare();
    verify();
}
Also used : RegistrationData(org.apache.tapestry5.integration.app1.data.RegistrationData) BeanModelSource(org.apache.tapestry5.beanmodel.services.BeanModelSource) Messages(org.apache.tapestry5.commons.Messages) BeanModel(org.apache.tapestry5.beanmodel.BeanModel) BeanValidationContext(org.apache.tapestry5.internal.BeanValidationContext) Environment(org.apache.tapestry5.services.Environment) PropertyOverrides(org.apache.tapestry5.PropertyOverrides) Annotation(java.lang.annotation.Annotation) ComponentResources(org.apache.tapestry5.ComponentResources) BeanEditContext(org.apache.tapestry5.services.BeanEditContext) Test(org.testng.annotations.Test)

Example 2 with BeanEditContext

use of org.apache.tapestry5.services.BeanEditContext in project tapestry-5 by apache.

the class BeanEditor method doPrepare.

/**
 * Used to initialize the model if necessary, to instantiate the object being edited if necessary, and to push the
 * BeanEditContext into the environment.
 */
void doPrepare() {
    if (model == null) {
        Class type = resources.getBoundType("object");
        model = modelSource.createEditModel(type, overrides.getOverrideMessages());
        BeanModelUtils.modify(model, add, include, exclude, reorder);
    }
    if (object == null) {
        try {
            object = model.newInstance();
        } catch (Exception ex) {
            String message = String.format("Exception instantiating instance of %s (for component '%s'): %s", PlasticUtils.toTypeName(model.getBeanType()), resources.getCompleteId(), ex);
            throw new TapestryException(message, resources.getLocation(), ex);
        }
    }
    BeanEditContext context = new BeanEditContextImpl(model.getBeanType());
    cachedObject = object;
    environment.push(BeanEditContext.class, context);
    // TAP5-2101: Always provide a new BeanValidationContext
    environment.push(BeanValidationContext.class, new BeanValidationContextImpl(object));
}
Also used : BeanEditContextImpl(org.apache.tapestry5.internal.BeanEditContextImpl) TapestryException(org.apache.tapestry5.commons.internal.util.TapestryException) TapestryException(org.apache.tapestry5.commons.internal.util.TapestryException) BeanEditContext(org.apache.tapestry5.services.BeanEditContext) BeanValidationContextImpl(org.apache.tapestry5.internal.BeanValidationContextImpl)

Example 3 with BeanEditContext

use of org.apache.tapestry5.services.BeanEditContext in project tapestry-5 by apache.

the class BeanEditorTest method beaneditcontext_pushed_to_environment.

@Test
public void beaneditcontext_pushed_to_environment() {
    ComponentResources resources = mockComponentResources();
    BeanModelSource source = mockBeanModelSource();
    BeanModel model = mockBeanModel();
    Environment env = mockEnvironment();
    RegistrationData data = new RegistrationData();
    Messages messages = mockMessages();
    PropertyOverrides overrides = mockPropertyOverrides();
    BeanValidationContext beanValidationContext = newMock(BeanValidationContext.class);
    train_getBoundType(resources, "object", RegistrationData.class);
    train_createEditModel(source, RegistrationData.class, messages, model);
    train_getOverrideMessages(overrides, messages);
    expect(model.newInstance()).andReturn(data);
    expect(model.getBeanType()).andReturn(RegistrationData.class);
    BeanEditContext ctxt = new BeanEditContext() {

        public Class<?> getBeanClass() {
            return RegistrationData.class;
        }

        public <T extends Annotation> T getAnnotation(Class<T> type) {
            return null;
        }
    };
    expect(env.push(eq(BeanEditContext.class), contextEq())).andReturn(ctxt);
    expect(env.push(eq(BeanValidationContext.class), isA(BeanValidationContext.class))).andReturn(beanValidationContext);
    replay();
    BeanEditor component = new BeanEditor();
    component.inject(resources, overrides, source, env);
    component.doPrepare();
    verify();
}
Also used : RegistrationData(org.apache.tapestry5.integration.app1.data.RegistrationData) BeanModelSource(org.apache.tapestry5.beanmodel.services.BeanModelSource) Messages(org.apache.tapestry5.commons.Messages) BeanModel(org.apache.tapestry5.beanmodel.BeanModel) BeanValidationContext(org.apache.tapestry5.internal.BeanValidationContext) Environment(org.apache.tapestry5.services.Environment) PropertyOverrides(org.apache.tapestry5.PropertyOverrides) Annotation(java.lang.annotation.Annotation) ComponentResources(org.apache.tapestry5.ComponentResources) BeanEditContext(org.apache.tapestry5.services.BeanEditContext) Test(org.testng.annotations.Test)

Aggregations

BeanEditContext (org.apache.tapestry5.services.BeanEditContext)3 Annotation (java.lang.annotation.Annotation)2 ComponentResources (org.apache.tapestry5.ComponentResources)2 PropertyOverrides (org.apache.tapestry5.PropertyOverrides)2 BeanModel (org.apache.tapestry5.beanmodel.BeanModel)2 BeanModelSource (org.apache.tapestry5.beanmodel.services.BeanModelSource)2 Messages (org.apache.tapestry5.commons.Messages)2 RegistrationData (org.apache.tapestry5.integration.app1.data.RegistrationData)2 BeanValidationContext (org.apache.tapestry5.internal.BeanValidationContext)2 Environment (org.apache.tapestry5.services.Environment)2 Test (org.testng.annotations.Test)2 TapestryException (org.apache.tapestry5.commons.internal.util.TapestryException)1 BeanEditContextImpl (org.apache.tapestry5.internal.BeanEditContextImpl)1 BeanValidationContextImpl (org.apache.tapestry5.internal.BeanValidationContextImpl)1