/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2, as * published by the Free Software Foundation, and/or the GNU Lesser * General Public License, version 2.1, also as published by the Free * Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License and the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU General Public License * and the GNU Lesser General Public License along with this program; * if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package org.rhq.enterprise.server.plugin.pc.content; import org.rhq.core.domain.configuration.Configuration; /** * Interface used by the server to communicate with a content source. Content sources implement this interface as * well as any other source interfaces to further describe what functionality is provided by the content source. * <p/> * The class name of this interface's implementation is the class name specified in the server plugin descriptor. * * @author Jason Dobies * @author John Mazzitelli * * @see RepoSource * @see PackageSource */ public interface ContentProvider { /** * Initializes the adapter with the configuration values indicating how to connect to the external source system. * * @param configuration user entered values describing how the content source should function. * * @throws Exception if the content source has an issue being configured. */ void initialize(Configuration configuration) throws Exception; /** * Informs the adapter that it should shutdown. */ void shutdown(); /** * Tests if the content source can communicate with the external package source. This will be called after * {@link #initialize(Configuration)} to ensure the adapter is in a configured state to run the test. * * @throws Exception if the connection cannot be made to the external system. */ void testConnection() throws Exception; /** * Fetch the Map of estimated 'weights' for the individual steps for syncing a ContentProvider. * * Steps include: * * Package Metadata * Package Bits * Distribution Metadata * Distribution Bits * Advisory (Errata) Metadata * Advisory Bits ? */ SyncProgressWeight getSyncProgressWeight(); }