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

com.github.cafapi.common.util.ref.DataSource Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2015-2024 Open Text.
 *
 * 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 com.github.cafapi.common.util.ref;

import java.io.InputStream;

/**
 * Interface for defining how to retrieve objects or streams from a reference.
 */
public abstract class DataSource
{
    /**
     * Retrieve an object of the specified class identified by a specific reference.
     *
     * @param ref the reference that points to an instance of an object of the specified class
     * @param clazz the class of the object instance the reference points to
     * @param  the type of the object instance
     * @return the object instance of the specified class identified by the specified reference
     * @throws DataSourceException if the object instance cannot be acquired
     */
    public abstract  T getObject(final String ref, final Class clazz)
        throws DataSourceException;

    /**
     * Retrieve a stream of data identified by a specific reference.
     *
     * @param ref the reference that points to a stream of data
     * @return a stream of data identified by the specified reference
     * @throws DataSourceException if the data stream cannot be acquired
     */
    public abstract InputStream getStream(final String ref)
        throws DataSourceException;

    /**
     * Determine the size of the data abstracted.
     *
     * @param ref the reference that points to the data
     * @return the size of the data, in bytes
     * @throws DataSourceException if the data size cannot be acquired
     */
    public abstract long getDataSize(final String ref)
        throws DataSourceException;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy