diff options
Diffstat (limited to 'bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/TemplateHandler.java')
-rw-r--r-- | bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/TemplateHandler.java | 50 |
1 files changed, 47 insertions, 3 deletions
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/TemplateHandler.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/TemplateHandler.java index 8fc729edc..e55ead110 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/TemplateHandler.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/TemplateHandler.java @@ -10,6 +10,10 @@ *******************************************************************************/ package org.eclipse.team.internal.ccvs.core.client; +import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.InputStream; + import org.eclipse.core.resources.IContainer; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.team.internal.ccvs.core.*; @@ -40,10 +44,50 @@ public class TemplateHandler extends ResponseHandler { String remoteDir = session.readLine(); ICVSFolder localFolder = getExistingFolder(session, localDir); IContainer container = (IContainer)localFolder.getIResource(); - ICVSFile templateFile; + ICVSStorage templateFile; if (container == null) { - // TODO: Need to accept bytes from server - return; + // Create a dummy storage handle to recieve the contents from the server + templateFile = new ICVSStorage() { + public String getName() { + return "Template"; //$NON-NLS-1$ + } + public void setContents( + InputStream stream, + int responseType, + boolean keepLocalHistory, + IProgressMonitor monitor) + throws CVSException { + + try { + // Transfer the contents + OutputStream out = new ByteArrayOutputStream(); + try { + byte[] buffer = new byte[1024]; + int read; + while ((read = stream.read(buffer)) >= 0) { + Policy.checkCanceled(monitor); + out.write(buffer, 0, read); + } + } finally { + out.close(); + } + } catch (IOException e) { + throw CVSException.wrapException(e); //$NON-NLS-1$ + } finally { + try { + stream.close(); + } catch (IOException e1) { + // Ignore close errors + } + } + } + public long getSize() { + return 0; + } + public InputStream getContents() throws CVSException { + return new ByteArrayInputStream(new byte[0]); + } + }; } else { templateFile = CVSWorkspaceRoot.getCVSFileFor(SyncFileWriter.getTemplateFile(container)); } |