Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
@Inject
private ModelPersister modelPersister;
 
//...
 
SampleModel model = resource.adaptTo(SampleModel.class); // inject SampleModel with Slice
model.setPageLimit(123);
modelPersister.persist(model, resource);
resource.getResourceResolver().commit();

Read more about Slice Persistence

Extending mapper made easy

Extending the out-of-the-box mapper is now much easier. Thanks to Guice multibindings you can easily register your own Field Processor which can map a field in a custom way. Below code snippet demonstrate how you can register your own field processor ({{MyCustomFieldProcessor}}) with use of multibinding:

Code Block
languagejava
public class CustomProcessorModule implements Module { 
   @Override
   protected void configure() {
      Multibinder<FieldProcessor> multibinder = Multibinder.newSetBinder(binder(), FieldProcessor.class);
      multibinder.addBinding().to(MyCustomFieldProcessor.class);
   }
  
}

Read more about extending mapper.

@PreMapping @PostMapping annotations

...

Code Block
languagejava
@SliceResource
public class MyComponentModel {

  @JcrProperty
  private String property;

  @Inject
  private ModelProvider modelProvider;

  @PreMapping
  public void preMapping() {
    // modelProvider is already setinjected; property is not setmapped yet
  }

  @PostMapping
  public void postMapping() {
    // modelProvider and property are already set
  }
}

...