/******************************************************************************* * Copyright (c) 2000, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.update.internal.core; import java.io.*; import org.eclipse.core.runtime.*; import org.eclipse.osgi.util.NLS; import org.eclipse.update.core.*; /** * Plugin Content Consumer on a Site */ public class SiteFileNonPluginContentConsumer extends ContentConsumer { private String path; private boolean closed = false; /* * Constructor */ public SiteFileNonPluginContentConsumer(String featurePath) { this.path = featurePath; } /* * @see ISiteContentConsumer#store(ContentReference, IProgressMonitor) */ public void store(ContentReference contentReference, IProgressMonitor monitor) throws CoreException { if (closed) { UpdateCore.warn("Attempt to store in a closed SiteFileNonPluginContentConsumer", new Exception()); //$NON-NLS-1$ return; } InputStream inStream = null; String featurePath = path; String contentKey = contentReference.getIdentifier(); featurePath += contentKey; try { inStream = contentReference.getInputStream(); UpdateManagerUtils.copyToLocal(inStream, featurePath, null); UpdateManagerUtils.checkPermissions(contentReference, featurePath); // 20305 } catch (IOException e) { throw Utilities.newCoreException(NLS.bind(Messages.GlobalConsumer_ErrorCreatingFile, (new String[] { featurePath })), e); } finally { if (inStream != null) { try { // close stream inStream.close(); } catch (IOException e) { } } } } /* * @see ISiteContentConsumer#close() */ public void close() { if (closed) { UpdateCore.warn("Attempt to close a closed SiteFileNonPluginContentConsumer", new Exception()); //$NON-NLS-1$ return; } closed = true; } }