/*
* 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.plugins.platform.content.yum;
import java.io.File;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.content.PackageDetailsKey;
import org.rhq.core.domain.content.composite.PackageVersionMetadataComposite;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.pluginapi.content.ContentContext;
import org.rhq.core.pluginapi.content.ContentServices;
import org.rhq.core.pluginapi.inventory.ResourceContext;
/**
* Represents a context in which the yum server objects can interface with the rest of the system. By insulating this
* interface, the code can be utilized by any part of the system simply by re-implementing the context.
*
* @author jortel
*/
@SuppressWarnings("unchecked")
public class PluginContext implements YumContext {
private final URL baseurl;
private final ResourceContext resourceContext;
private final ContentContext contentContext;
public PluginContext(int port, ResourceContext resourceContext, ContentContext contentContext)
throws MalformedURLException {
this.resourceContext = resourceContext;
this.contentContext = contentContext;
this.baseurl = new URL("http://localhost:" + port + "/yum");
}
/* (non-Javadoc)
* @see org.jboss.on.plugins.platform.content.yum.YumContext#baseurl()
*/
public URL baseurl() {
return baseurl;
}
/* (non-Javadoc)
* @see org.jboss.on.plugins.platform.content.yum.YumContext#basepath()
*/
public String basepath() {
return baseurl.getPath();
}
/* (non-Javadoc)
* @see org.jboss.on.plugins.platform.content.yum.YumContext#port()
*/
public int port() {
return baseurl.getPort();
}
/* (non-Javadoc)
* @see
* org.jboss.on.plugins.platform.content.yum.YumContext#writePackageBits(org.jboss.on.domain.content.PackageDetailsKey,
* java.io.OutputStream)
*/
public long writePackageBits(PackageDetailsKey key, OutputStream ostr) {
return getContentServices().downloadPackageBits(contentContext, key, ostr, true);
}
/* (non-Javadoc)
* @see
* org.jboss.on.plugins.platform.content.yum.YumContext#writePackageBits(org.jboss.on.domain.content.PackageDetailsKey,
* long[], java.io.OutputStream)
*/
public long writePackageBits(PackageDetailsKey key, long[] range, OutputStream ostr) {
return getContentServices().downloadPackageBitsRange(contentContext, key, ostr, range[0], range[1], true);
}
/* (non-Javadoc)
* @see
* org.jboss.on.plugins.platform.content.yum.YumContext#getPackageBitsLength(org.jboss.on.domain.content.PackageDetailsKey)
*/
public long getPackageBitsLength(PackageDetailsKey key) {
return getContentServices().getPackageBitsLength(contentContext, key);
}
/* (non-Javadoc)
* @see
* org.jboss.on.plugins.platform.content.yum.YumContext#getPackageVersionMetadata(org.jboss.on.domain.util.PageControl)
*/
public PageList<PackageVersionMetadataComposite> getPackageVersionMetadata(PageControl pc) {
return getContentServices().getPackageVersionMetadata(contentContext, pc);
}
/* (non-Javadoc)
* @see org.jboss.on.plugins.platform.content.yum.YumContext#getResourceSubscriptionMD5()
*/
public String getResourceSubscriptionMD5() {
return getContentServices().getResourceSubscriptionMD5(contentContext);
}
/* (non-Javadoc)
* @see org.jboss.on.plugins.platform.content.yum.YumContext#getTemporaryDirectory()
*/
public File getTemporaryDirectory() {
return resourceContext.getTemporaryDirectory();
}
/* (non-Javadoc)
* @see org.jboss.on.plugins.platform.content.yum.YumContext#getPluginConfiguration()
*/
public Configuration getPluginConfiguration() {
return resourceContext.getPluginConfiguration();
}
/* (non-Javadoc)
* @see org.jboss.on.plugins.platform.content.yum.YumContext#getMetadataCacheTimeout()
*/
public long getMetadataCacheTimeout() {
long time = 1800L;
Configuration config = getPluginConfiguration();
if (config != null) {
PropertySimple p = config.getSimple("metadataCacheTimeout");
if (p != null) {
Long timeLong = p.getLongValue();
if (timeLong != null) {
time = (timeLong.longValue());
}
}
}
return time;
}
private ContentServices getContentServices() {
return contentContext.getContentServices();
}
}