/******************************************************************************* * Copyright (c) 2006-2008, Cloudsmith Inc. * The code, documentation and other materials contained herein have been * licensed under the Eclipse Public License - v 1.0 by the copyright holder * listed above, as the Initial Contributor under such license. The text of * such license is available at www.eclipse.org. ******************************************************************************/ package org.eclipse.buckminster.p2.remote.server; import java.io.IOException; import java.io.OutputStream; import java.net.URI; import org.eclipse.buckminster.p2.remote.Activator; import org.eclipse.buckminster.p2.remote.Messages; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.equinox.internal.p2.console.ProvisioningHelper; import org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryIO; import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository; import org.eclipse.equinox.internal.provisional.p2.query.Collector; import org.eclipse.equinox.internal.provisional.p2.query.Query; import org.eclipse.osgi.util.NLS; /** * @author Thomas Hallgren */ public class MetadataRepositoryFacade extends RepositoryFacade { private static final Query s_matchAll = new Query() { @Override public boolean isMatch(Object candidate) { return true; } }; public MetadataRepositoryFacade(String name, LoggingMetadataRepository repository) { super(name, repository); } @Override protected void refreshMirror(URI uri, Query query) throws ProvisionException { if(query == null) query = s_matchAll; IMetadataRepository source = ProvisioningHelper.getMetadataRepository(RepositoryServer.url(uri)); if(source == null) throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, NLS.bind( Messages.noSuchMetadataRepository, uri), null)); Collector result = source.query(query, new Collector(), null); ((IMetadataRepository)getRepository()).addInstallableUnits((IInstallableUnit[])result.toArray(IInstallableUnit.class)); } @Override protected void writeRepository(OutputStream output) throws IOException { new MetadataRepositoryIO().write((IMetadataRepository)getRepository(), output); } }