Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java50
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));
}

Back to the top