All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.openjpa.conf.CacheMarshaller Maven / Gradle / Ivy

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 org.apache.openjpa.conf;


import org.apache.openjpa.lib.conf.Configurable;
import org.apache.openjpa.lib.conf.Configuration;

/**
 * Responsible for marshalling and unmarshalling objects between memory and
 * durable cache.
 *
 * @since 1.1.0
 */
public interface CacheMarshaller {

    /**
     * Load and return an instance of the type handled by this marshaller.
     * If the type implements {@link Configurable}, then this method will invoke
     * {@link Configurable#setConfiguration}, 
     * {@link Configurable#startConfiguration()}, and
     * {@link Configurable#endConfiguration()} on the instance before returning.
     */
    public Object load();

    /**
     * Store o into the cache.
     */
    public void store(Object o);

    /**
     * The id that this marshaller is responsible for.
     * A value for this parameter is required.
     */
    public void setId(String id);

    /**
     * The id that this marshaller is responsible for.
     */
    public String getId();

    /**
     * The {@link ValidationPolicy} that this marshaller should use.
     * A value for this parameter is required. The class will be instantiated
     * via the {@link org.apache.openjpa.lib.conf.Configurations} mechanism,
     * ensuring that if the class implements {@link Configurable} or
     * {@link org.apache.openjpa.lib.conf.GenericConfigurable}, it will be taken
     * through the appropriate lifecycle.
     */
    public void setValidationPolicy(String policy)
        throws InstantiationException, IllegalAccessException;

    /**
     * Validation policies are responsible for computing whether or not a
     * cached data structure is valid for the current context.
     * 

* getValidCachedData(getCacheableData(o), conf) should * return an object equivalent to o in the expected case. *

* Implementations of this class will often also implement * {@link Configurable} in order to receive the current * {@link Configuration}. */ public interface ValidationPolicy { /** * Returns an object that this policy considers to be valid, based * on o. If o is not valid, this method * will return null. */ public Object getValidData(Object o); /** * Return an object that the {@link CacheMarshaller} should store. */ public Object getCacheableData(Object o); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy