001/**
002 * Get more info at : www.jrebirth.org .
003 * Copyright JRebirth.org © 2011-2013
004 * Contact : sebastien.bordes@jrebirth.org
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License");
007 * you may not use this file except in compliance with the License.
008 * You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.jrebirth.af.core.resource.parameter;
019
020import org.jrebirth.af.api.exception.CoreRuntimeException;
021import org.jrebirth.af.api.resource.parameter.ParameterItem;
022import org.jrebirth.af.api.resource.parameter.ParameterParams;
023import org.jrebirth.af.core.resource.AbstractResourceItem;
024
025/**
026 * The class <strong>ParameterItemBase</strong> is used to build Parameterized Object.
027 *
028 * @param <T> the object type of the parameter
029 *
030 * @author Sébastien Bordes
031 */
032public final class ParameterItemBase<T> extends AbstractResourceItem<ParameterItem<?>, ParameterParams, T> implements ParameterItemReal<T> {
033
034    public static <T extends Object> ParameterItemBase<T> create(final T o) {
035        return new ParameterItemBase<T>();
036    }
037
038    /**
039     * {@inheritDoc}
040     */
041    @Override
042    public void define(final T forcedValue) {
043        // The default programmatic value (stored into ObjectParameter) is not updated but overridden into the local map
044        ((ParameterBuilder) builder()).define(this, forcedValue);
045    }
046
047    /**
048     * {@inheritDoc}
049     */
050    @Override
051    public void persist() {
052        throw new CoreRuntimeException("Not Implemented yet");
053    }
054
055}