/** * Copyright (C) 2011 * Michael Mosmann <michael@mosmann.de> * Jan Bernitt <unknown@email.de> * * with contributions from * nobody yet * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.flapdoodle.wicket.model.property; import org.apache.wicket.model.IModel; public abstract class PropertyModels { private PropertyModels() { // no instance } public static <T, S> Property<T, S> property(IPropertyAccess<T, S> propertyAccess) { return new Property<T, S>(propertyAccess); } public static <T, S> OnModel<S> on(IModel<S> source) { return new OnModel<S>(source); } public static class OnModel<S> { private final IModel<S> _source; public OnModel(IModel<S> source) { _source = source; } public <T> IModel<T> property(IPropertyAccess<T, S> propertyAccess) { return new PropertyAccessModel<T, S>(_source, propertyAccess); } } public static class Property<T, S> { private final IPropertyAccess<T, S> _propertyAccess; public Property(IPropertyAccess<T, S> propertyAccess) { _propertyAccess = propertyAccess; } public IModel<T> of(IModel<S> source) { return new PropertyAccessModel<T, S>(source, _propertyAccess); } } }