Subversion Repositories XServices

Rev

Rev 92 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 92 Rev 94
1
/*
1
/*
2
 *   Copyright 2010 Brian Rosenberger (Brutex Network)
2
 *   Copyright 2010 Brian Rosenberger (Brutex Network)
3
 *
3
 *
4
 *   Licensed under the Apache License, Version 2.0 (the "License");
4
 *   Licensed under the Apache License, Version 2.0 (the "License");
5
 *   you may not use this file except in compliance with the License.
5
 *   you may not use this file except in compliance with the License.
6
 *   You may obtain a copy of the License at
6
 *   You may obtain a copy of the License at
7
 *
7
 *
8
 *       http://www.apache.org/licenses/LICENSE-2.0
8
 *       http://www.apache.org/licenses/LICENSE-2.0
9
 *
9
 *
10
 *   Unless required by applicable law or agreed to in writing, software
10
 *   Unless required by applicable law or agreed to in writing, software
11
 *   distributed under the License is distributed on an "AS IS" BASIS,
11
 *   distributed under the License is distributed on an "AS IS" BASIS,
12
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 *   See the License for the specific language governing permissions and
13
 *   See the License for the specific language governing permissions and
14
 *   limitations under the License.
14
 *   limitations under the License.
15
 */
15
 */
-
 
16
 
-
 
17
 
16
package net.brutex.xservices.ws.impl;
18
package net.brutex.xservices.ws.impl;
17
 
19
 
18
import java.io.ByteArrayOutputStream;
20
import java.io.ByteArrayOutputStream;
19
import java.io.File;
21
import java.io.File;
20
import java.io.FileNotFoundException;
22
import java.io.FileNotFoundException;
21
import java.io.FileOutputStream;
23
import java.io.FileOutputStream;
22
import java.io.IOException;
24
import java.io.IOException;
23
import java.io.InputStream;
25
import java.io.InputStream;
24
import java.util.List;
26
import java.util.List;
25
 
27
 
26
import javax.activation.DataHandler;
28
import javax.activation.DataHandler;
27
import javax.jws.WebMethod;
29
import javax.jws.WebMethod;
28
import javax.jws.WebParam;
30
import javax.jws.WebParam;
29
import javax.jws.WebService;
31
import javax.jws.WebService;
30
 
32
 
31
import net.brutex.xservices.types.ReplacePattern;
33
import net.brutex.xservices.types.ReplacePattern;
32
import net.brutex.xservices.types.ReturnCode;
34
import net.brutex.xservices.types.ReturnCode;
33
import net.brutex.xservices.types.ant.ArchiveResource;
35
import net.brutex.xservices.types.ant.ArchiveResource;
34
import net.brutex.xservices.types.ant.AttachmentType;
36
import net.brutex.xservices.types.ant.AttachmentType;
35
import net.brutex.xservices.types.ant.FileResource;
37
import net.brutex.xservices.types.ant.FileResource;
36
import net.brutex.xservices.types.ant.FileSetResource;
38
import net.brutex.xservices.types.ant.FileSetResource;
37
import net.brutex.xservices.util.BrutexNamespaces;
39
import net.brutex.xservices.util.BrutexNamespaces;
38
import net.brutex.xservices.util.RunTask;
40
import net.brutex.xservices.util.RunTask;
39
import net.brutex.xservices.ws.FileService;
41
import net.brutex.xservices.ws.FileService;
40
import net.brutex.xservices.ws.XServicesFault;
42
import net.brutex.xservices.ws.XServicesFault;
41
 
43
 
42
import org.apache.cxf.aegis.type.mtom.StreamDataSource;
44
import org.apache.cxf.aegis.type.mtom.StreamDataSource;
43
import org.apache.tools.ant.BuildException;
45
import org.apache.tools.ant.BuildException;
44
import org.apache.tools.ant.taskdefs.Basename;
46
import org.apache.tools.ant.taskdefs.Basename;
45
import org.apache.tools.ant.taskdefs.Chmod;
47
import org.apache.tools.ant.taskdefs.Chmod;
46
import org.apache.tools.ant.taskdefs.Copy;
48
import org.apache.tools.ant.taskdefs.Copy;
47
import org.apache.tools.ant.taskdefs.Echo;
49
import org.apache.tools.ant.taskdefs.Echo;
48
import org.apache.tools.ant.taskdefs.LoadResource;
50
import org.apache.tools.ant.taskdefs.LoadResource;
49
import org.apache.tools.ant.taskdefs.Replace;
51
import org.apache.tools.ant.taskdefs.Replace;
50
import org.apache.tools.ant.taskdefs.optional.ReplaceRegExp;
52
import org.apache.tools.ant.taskdefs.optional.ReplaceRegExp;
51
import org.apache.tools.ant.taskdefs.optional.unix.Chgrp;
53
import org.apache.tools.ant.taskdefs.optional.unix.Chgrp;
52
import org.apache.tools.ant.taskdefs.optional.unix.Chown;
54
import org.apache.tools.ant.taskdefs.optional.unix.Chown;
53
import org.apache.tools.ant.types.FileSet;
55
import org.apache.tools.ant.types.FileSet;
54
 
56
 
55
/**
57
/**
56
 * 
58
 * 
57
 * @author Brian Rosenberger, bru@brutex.de
59
 * @author Brian Rosenberger, bru@brutex.de
58
 */
60
 */
59
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.FileService", serviceName = "FileService")
61
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.FileService", serviceName = "FileService")
60
public class FileServiceImpl implements FileService {
62
public class FileServiceImpl implements FileService {
61
 
63
 
62
	/*
64
	/*
63
	 * (non-Javadoc)
65
	 * (non-Javadoc)
64
	 * 
66
	 * 
65
	 * @see net.brutex.xservices.ws.impl.FileService#basename(java.lang.String,
67
	 * @see net.brutex.xservices.ws.impl.FileService#basename(java.lang.String,
66
	 * java.lang.String)
68
	 * java.lang.String)
67
	 */
69
	 */
68
	
70
	
69
	public String basename(String filename, String suffix) {
71
	public String basename(String filename, String suffix) {
70
		final String BASENAME_VALUE = "basename.value";
72
		final String BASENAME_VALUE = "basename.value";
71
		Basename basename = new Basename();
73
		Basename basename = new Basename();
72
		RunTask runner = new RunTask(basename);
74
		RunTask runner = new RunTask(basename);
73
		basename.setFile(new File(filename));
75
		basename.setFile(new File(filename));
74
		if (suffix != null && !suffix.equals("")) {
76
		if (suffix != null && !suffix.equals("")) {
75
			basename.setSuffix(suffix);
77
			basename.setSuffix(suffix);
76
		}
78
		}
77
		basename.setProperty(BASENAME_VALUE);
79
		basename.setProperty(BASENAME_VALUE);
78
		ReturnCode r = runner.postTask();
80
		ReturnCode r = runner.postTask();
79
		return r.getProperty(BASENAME_VALUE);
81
		return r.getProperty(BASENAME_VALUE);
80
	}
82
	}
81
 
83
 
82
	public ReturnCode replaceInFile(FileResource res, String search,
84
	public ReturnCode replaceInFile(FileResource res, String search,
83
			String replace) throws XServicesFault {
85
			String replace) throws XServicesFault {
84
		ReturnCode r = null;
86
		ReturnCode r = null;
85
		Replace rep = new Replace();
87
		Replace rep = new Replace();
86
		rep.setTaskName("Replace");
88
		rep.setTaskName("Replace");
87
		RunTask runner = new RunTask(rep);
89
		RunTask runner = new RunTask(rep);
88
		rep.addConfigured(res.getAntResource(rep.getProject()));
90
		rep.addConfigured(res.getAntResource(rep.getProject()));
89
		rep.setToken(search);
91
		rep.setToken(search);
90
		rep.setValue(replace);
92
		rep.setValue(replace);
91
		try {
93
		try {
92
			r = runner.postTask();
94
			r = runner.postTask();
93
		} catch (BuildException e) {
95
		} catch (BuildException e) {
94
			throw new XServicesFault(e);
96
			throw new XServicesFault(e);
95
		}
97
		}
96
		return r;
98
		return r;
97
	}
99
	}
98
 
100
 
99
	public ReturnCode replaceInFile2(FileResource res,
101
	public ReturnCode replaceInFile2(FileResource res,
100
			List<ReplacePattern> patternList) throws XServicesFault {
102
			List<ReplacePattern> patternList) throws XServicesFault {
101
		ReturnCode r = null;
103
		ReturnCode r = null;
102
		for (ReplacePattern pat : patternList) {
104
		for (ReplacePattern pat : patternList) {
103
			Replace rep = new Replace();
105
			Replace rep = new Replace();
104
			rep.setTaskName("Replace");
106
			rep.setTaskName("Replace");
105
			RunTask runner = new RunTask(rep);
107
			RunTask runner = new RunTask(rep);
106
			rep.addConfigured(res.getAntResource(rep.getProject()));
108
			rep.addConfigured(res.getAntResource(rep.getProject()));
107
			rep.setToken(pat.search);
109
			rep.setToken(pat.search);
108
			rep.setValue(pat.replace);
110
			rep.setValue(pat.replace);
109
			try {
111
			try {
110
				r = runner.postTask();
112
				r = runner.postTask();
111
			} catch (BuildException e) {
113
			} catch (BuildException e) {
112
				throw new XServicesFault(e);
114
				throw new XServicesFault(e);
113
			}
115
			}
114
		}
116
		}
115
		return r;
117
		return r;
116
	}
118
	}
117
 
119
 
118
	public ReturnCode replaceInFileRegEx(FileResource res, String search,
120
	public ReturnCode replaceInFileRegEx(FileResource res, String search,
119
			String replace, String flags) throws XServicesFault {
121
			String replace, String flags) throws XServicesFault {
120
		ReplaceRegExp rep = new ReplaceRegExp();
122
		ReplaceRegExp rep = new ReplaceRegExp();
121
		rep.setTaskName("ReplaceRegExp");
123
		rep.setTaskName("ReplaceRegExp");
122
		RunTask runner = new RunTask(rep);
124
		RunTask runner = new RunTask(rep);
123
		File infile = new File(res.uri);
125
		File infile = new File(res.uri);
124
		rep.setFile(infile);
126
		rep.setFile(infile);
125
		rep.setMatch(search);
127
		rep.setMatch(search);
126
		rep.setReplace(replace);
128
		rep.setReplace(replace);
127
		rep.setFlags(flags);
129
		rep.setFlags(flags);
128
		try {
130
		try {
129
			ReturnCode r = runner.postTask();
131
			ReturnCode r = runner.postTask();
130
			return r;
132
			return r;
131
		} catch (BuildException e) {
133
		} catch (BuildException e) {
132
			throw new XServicesFault(e);
134
			throw new XServicesFault(e);
133
		}
135
		}
134
	}
136
	}
135
 
137
 
136
	/*
138
	/*
137
	 * (non-Javadoc)
139
	 * (non-Javadoc)
138
	 * 
140
	 * 
139
	 * @see
141
	 * @see
140
	 * net.brutex.xservices.ws.impl.FileService#base64Encode(net.brutex.xservices
142
	 * net.brutex.xservices.ws.impl.FileService#base64Encode(net.brutex.xservices
141
	 * .types.FileSetResource)
143
	 * .types.FileSetResource)
142
	 */
144
	 */
143
	
145
	
144
	public AttachmentType downloadFile(FileResource res) throws XServicesFault {
146
	public AttachmentType downloadFile(FileResource res) throws XServicesFault {
145
		InputStream is = null;
147
		InputStream is = null;
146
		try {
148
		try {
147
			is = res.getAntResource(null).getInputStream();
149
			is = res.getAntResource(null).getInputStream();
148
			StreamDataSource ssource = new StreamDataSource(
150
			StreamDataSource ssource = new StreamDataSource(
149
					"application/binary", is);
151
					"application/binary", is);
150
			DataHandler h = new DataHandler(ssource);
152
			DataHandler h = new DataHandler(ssource);
151
			AttachmentType t = new AttachmentType();
153
			AttachmentType t = new AttachmentType();
152
			t.setContent(h);
154
			t.setContent(h);
153
			t.setFilename(res.getAntResource(null).getName());
155
			t.setFilename(res.getAntResource(null).getName());
154
			return t;
156
			return t;
155
		} catch (IOException e) {
157
		} catch (IOException e) {
156
			throw new XServicesFault(e);
158
			throw new XServicesFault(e);
157
		}
159
		}
158
	}
160
	}
159
	
161
	
160
	public byte[] encodeFile(FileResource res) throws XServicesFault {
162
	public byte[] encodeFile(FileResource res) throws XServicesFault {
161
		InputStream is = null;
163
		InputStream is = null;
162
		try {
164
		try {
163
			is = res.getAntResource(null).getInputStream();
165
			is = res.getAntResource(null).getInputStream();
164
		
166
		
165
		ByteArrayOutputStream buffer = new ByteArrayOutputStream();
167
		ByteArrayOutputStream buffer = new ByteArrayOutputStream();
166
 
168
 
167
		int nRead;
169
		int nRead;
168
		byte[] data = new byte[4096];
170
		byte[] data = new byte[4096];
169
		while ((nRead = is.read(data, 0, data.length)) != -1) {
171
		while ((nRead = is.read(data, 0, data.length)) != -1) {
170
		  buffer.write(data, 0, nRead);
172
		  buffer.write(data, 0, nRead);
171
		}
173
		}
172
		buffer.flush();
174
		buffer.flush();
173
		return buffer.toByteArray();
175
		return buffer.toByteArray();
174
		
176
		
175
		} catch (IOException e) {
177
		} catch (IOException e) {
176
			throw new XServicesFault(e);
178
			throw new XServicesFault(e);
177
		}
179
		}
178
	}
180
	}
179
 
181
 
180
	/*
182
	/*
181
	 * (non-Javadoc)
183
	 * (non-Javadoc)
182
	 * 
184
	 * 
183
	 * @see
185
	 * @see
184
	 * net.brutex.xservices.ws.impl.FileService#base64Decode(net.brutex.xservices
186
	 * net.brutex.xservices.ws.impl.FileService#base64Decode(net.brutex.xservices
185
	 * .types.AttachmentType)
187
	 * .types.AttachmentType)
186
	 */
188
	 */
187
	
189
	
188
	public String uploadFile(AttachmentType file) throws XServicesFault {
190
	public String uploadFile(AttachmentType file) throws XServicesFault {
189
		DataHandler h = file.getContent();
191
		DataHandler h = file.getContent();
190
		File f = new File(file.getFilename());
192
		File f = new File(file.getFilename());
191
		FileOutputStream fout;
193
		FileOutputStream fout;
192
		try {
194
		try {
193
			fout = new FileOutputStream(f);
195
			fout = new FileOutputStream(f);
194
			h.writeTo(fout);
196
			h.writeTo(fout);
195
			fout.flush();
197
			fout.flush();
196
			fout.close();
198
			fout.close();
197
		} catch (FileNotFoundException e) {
199
		} catch (FileNotFoundException e) {
198
			throw new XServicesFault(e);
200
			throw new XServicesFault(e);
199
		} catch (IOException e) {
201
		} catch (IOException e) {
200
			throw new XServicesFault(e);
202
			throw new XServicesFault(e);
201
		}
203
		}
202
		return file.getFilename();
204
		return file.getFilename();
203
	}
205
	}
204
 
206
 
205
	/*
207
	/*
206
	 * (non-Javadoc)
208
	 * (non-Javadoc)
207
	 * 
209
	 * 
208
	 * @see
210
	 * @see
209
	 * net.brutex.xservices.ws.impl.FileService#copy(net.brutex.xservices.types
211
	 * net.brutex.xservices.ws.impl.FileService#copy(net.brutex.xservices.types
210
	 * .FileSetResource, java.lang.String, boolean, boolean, java.lang.String)
212
	 * .FileSetResource, java.lang.String, boolean, boolean, java.lang.String)
211
	 */
213
	 */
212
	
214
	
213
	public ReturnCode copy(FileSetResource src, String todir, boolean plm,
215
	public ReturnCode copy(FileSetResource src, String todir, boolean plm,
214
			boolean overwrite, String encoding) throws XServicesFault {
216
			boolean overwrite, String encoding) throws XServicesFault {
215
		Copy copy = new Copy();
217
		Copy copy = new Copy();
216
		copy.setTaskName("Copy");
218
		copy.setTaskName("Copy");
217
		RunTask runner = new RunTask(copy);
219
		RunTask runner = new RunTask(copy);
218
		FileSet set = src.getAntResource(copy.getProject());
220
		FileSet set = src.getAntResource(copy.getProject());
219
		copy.add(set);
221
		copy.add(set);
220
		File dst = new File(todir);
222
		File dst = new File(todir);
221
		if (dst.isDirectory()) {
223
		if (dst.isDirectory()) {
222
			copy.setTodir(dst);
224
			copy.setTodir(dst);
223
		}
225
		}
224
		if (dst.isFile()) {
226
		if (dst.isFile()) {
225
			copy.setTofile(dst);
227
			copy.setTofile(dst);
226
		}
228
		}
227
		copy.setOverwrite(overwrite);
229
		copy.setOverwrite(overwrite);
228
		copy.setPreserveLastModified(plm);
230
		copy.setPreserveLastModified(plm);
229
		if (encoding != null && !encoding.equals("")) {
231
		if (encoding != null && !encoding.equals("")) {
230
			copy.setOutputEncoding(encoding);
232
			copy.setOutputEncoding(encoding);
231
		} else {
233
		} else {
232
			copy.setOutputEncoding(System.getProperty("file.encoding"));
234
			copy.setOutputEncoding(System.getProperty("file.encoding"));
233
		}
235
		}
234
		return runner.postTask();
236
		return runner.postTask();
235
	}
237
	}
236
 
238
 
237
	
239
	
238
	public ReturnCode copyFile(String fromFile, String tofile, boolean overwrite)
240
	public ReturnCode copyFile(String fromFile, String tofile, boolean overwrite)
239
			throws XServicesFault {
241
			throws XServicesFault {
240
		Copy copy = new Copy();
242
		Copy copy = new Copy();
241
		copy.setTaskName("Copy");
243
		copy.setTaskName("Copy");
242
		RunTask runner = new RunTask(copy);
244
		RunTask runner = new RunTask(copy);
243
		File f = new File(fromFile);
245
		File f = new File(fromFile);
244
		if (!f.isFile())
246
		if (!f.isFile())
245
			throw new XServicesFault("File '" + fromFile + "' not found.");
247
			throw new XServicesFault("File '" + fromFile + "' not found.");
246
		copy.setFile(new File(fromFile));
248
		copy.setFile(new File(fromFile));
247
		copy.setTofile(new File(tofile));
249
		copy.setTofile(new File(tofile));
248
		copy.setOverwrite(overwrite);
250
		copy.setOverwrite(overwrite);
249
		return runner.postTask();
251
		return runner.postTask();
250
	}
252
	}
251
 
253
 
252
	/*
254
	/*
253
	 * (non-Javadoc)
255
	 * (non-Javadoc)
254
	 * 
256
	 * 
255
	 * @see
257
	 * @see
256
	 * net.brutex.xservices.ws.impl.FileService#loadRes(net.brutex.xservices
258
	 * net.brutex.xservices.ws.impl.FileService#loadRes(net.brutex.xservices
257
	 * .types.FileResource, java.lang.String)
259
	 * .types.FileResource, java.lang.String)
258
	 */
260
	 */
259
	
261
	
260
	public String loadRes(FileResource res, String encoding)
262
	public String loadRes(FileResource res, String encoding)
261
			throws XServicesFault {
263
			throws XServicesFault {
262
		if (encoding == null || encoding.equals("")) {
264
		if (encoding == null || encoding.equals("")) {
263
			encoding = System.getProperty("file.encoding");
265
			encoding = System.getProperty("file.encoding");
264
		}
266
		}
265
		LoadResource lr = new LoadResource();
267
		LoadResource lr = new LoadResource();
266
		lr.setTaskName("LoadResource");
268
		lr.setTaskName("LoadResource");
267
		RunTask runner = new RunTask(lr);
269
		RunTask runner = new RunTask(lr);
268
		lr.addConfigured(res.getAntResource(lr.getProject()));
270
		lr.addConfigured(res.getAntResource(lr.getProject()));
269
		lr.setEncoding(encoding);
271
		lr.setEncoding(encoding);
270
		System.out.println("Using encoding: " + encoding);
272
		System.out.println("Using encoding: " + encoding);
271
		lr.setProperty("LoadResource.out");
273
		lr.setProperty("LoadResource.out");
272
		ReturnCode r = runner.postTask();
274
		ReturnCode r = runner.postTask();
273
		return r.getProperty("LoadResource.out");
275
		return r.getProperty("LoadResource.out");
274
	}
276
	}
275
 
277
 
276
	/*
278
	/*
277
	 * (non-Javadoc)
279
	 * (non-Javadoc)
278
	 * 
280
	 * 
279
	 * @see
281
	 * @see
280
	 * net.brutex.xservices.ws.impl.FileService#loadResFromArchive(net.brutex
282
	 * net.brutex.xservices.ws.impl.FileService#loadResFromArchive(net.brutex
281
	 * .xservices.types.ArchiveResource, java.lang.String)
283
	 * .xservices.types.ArchiveResource, java.lang.String)
282
	 */
284
	 */
283
	
285
	
284
	public String loadResFromArchive(ArchiveResource res, String encoding) {
286
	public String loadResFromArchive(ArchiveResource res, String encoding) {
285
		if (encoding == null || encoding.equals("")) {
287
		if (encoding == null || encoding.equals("")) {
286
			encoding = System.getProperty("file.encoding");
288
			encoding = System.getProperty("file.encoding");
287
		}
289
		}
288
		LoadResource lr = new LoadResource();
290
		LoadResource lr = new LoadResource();
289
		lr.setTaskName("LoadResource");
291
		lr.setTaskName("LoadResource");
290
		RunTask runner = new RunTask(lr);
292
		RunTask runner = new RunTask(lr);
291
		lr.addConfigured(res.getAntResource(lr.getProject()));
293
		lr.addConfigured(res.getAntResource(lr.getProject()));
292
		lr.setEncoding(encoding);
294
		lr.setEncoding(encoding);
293
		System.out.println("Using encoding: " + encoding);
295
		System.out.println("Using encoding: " + encoding);
294
		lr.setProperty("LoadResource.out");
296
		lr.setProperty("LoadResource.out");
295
		ReturnCode r = runner.postTask();
297
		ReturnCode r = runner.postTask();
296
		return r.getProperty("LoadResource.out");
298
		return r.getProperty("LoadResource.out");
297
 
299
 
298
	}
300
	}
299
 
301
 
300
	/*
302
	/*
301
	 * (non-Javadoc)
303
	 * (non-Javadoc)
302
	 * 
304
	 * 
303
	 * @see net.brutex.xservices.ws.impl.FileService#echo2file(java.lang.String,
305
	 * @see net.brutex.xservices.ws.impl.FileService#echo2file(java.lang.String,
304
	 * java.lang.String, java.lang.String, boolean)
306
	 * java.lang.String, java.lang.String, boolean)
305
	 */
307
	 */
306
	
308
	
307
	public ReturnCode echo2file(String message, String file, String encoding,
309
	public ReturnCode echo2file(String message, String file, String encoding,
308
			boolean append) throws XServicesFault {
310
			boolean append) throws XServicesFault {
309
 
311
 
310
		Echo echo = new Echo();
312
		Echo echo = new Echo();
311
		echo.setTaskName("toFile");
313
		echo.setTaskName("toFile");
312
		RunTask runTask = new RunTask(echo);
314
		RunTask runTask = new RunTask(echo);
313
		echo.addText(message);
315
		echo.addText(message);
314
		echo.setEncoding(encoding);
316
		echo.setEncoding(encoding);
315
		File f = new File(file);
317
		File f = new File(file);
316
		try {
318
		try {
317
			if (!f.canWrite())
319
			if (!f.canWrite())
318
 
320
 
319
				throw new XServicesFault("Cannot write to file: "
321
				throw new XServicesFault("Cannot write to file: "
320
						+ f.getCanonicalPath());
322
						+ f.getCanonicalPath());
321
 
323
 
322
			echo.setFile(f);
324
			echo.setFile(f);
323
			echo.setAppend(append);
325
			echo.setAppend(append);
324
			ReturnCode c = runTask.postTask();
326
			ReturnCode c = runTask.postTask();
325
			return c;
327
			return c;
326
		} catch (BuildException e) {
328
		} catch (BuildException e) {
327
			throw new XServicesFault("Error in echo2file.", e);
329
			throw new XServicesFault("Error in echo2file.", e);
328
		} catch (IOException e) {
330
		} catch (IOException e) {
329
			throw new XServicesFault("Cannot write to file.", e);
331
			throw new XServicesFault("Cannot write to file.", e);
330
		}
332
		}
331
	}
333
	}
332
 
334
 
333
	/*
335
	/*
334
	 * (non-Javadoc)
336
	 * (non-Javadoc)
335
	 * 
337
	 * 
336
	 * @see
338
	 * @see
337
	 * net.brutex.xservices.ws.impl.FileService#changeOwner(net.brutex.xservices
339
	 * net.brutex.xservices.ws.impl.FileService#changeOwner(net.brutex.xservices
338
	 * .types.FileSetResource, java.lang.String)
340
	 * .types.FileSetResource, java.lang.String)
339
	 */
341
	 */
340
	
342
	
341
	public ReturnCode changeOwner(FileSetResource res, String owner) {
343
	public ReturnCode changeOwner(FileSetResource res, String owner) {
342
		Chown chown = new Chown();
344
		Chown chown = new Chown();
343
		chown.setTaskName("Chown");
345
		chown.setTaskName("Chown");
344
		RunTask runner = new RunTask(chown);
346
		RunTask runner = new RunTask(chown);
345
		chown.setOwner(owner);
347
		chown.setOwner(owner);
346
		FileSet set = res.getAntResource(chown.getProject());
348
		FileSet set = res.getAntResource(chown.getProject());
347
		chown.add(set);
349
		chown.add(set);
348
		chown.setMaxParallel(300);
350
		chown.setMaxParallel(300);
349
		return runner.postTask();
351
		return runner.postTask();
350
	}
352
	}
351
 
353
 
352
	/*
354
	/*
353
	 * (non-Javadoc)
355
	 * (non-Javadoc)
354
	 * 
356
	 * 
355
	 * @see
357
	 * @see
356
	 * net.brutex.xservices.ws.impl.FileService#changeGroup(net.brutex.xservices
358
	 * net.brutex.xservices.ws.impl.FileService#changeGroup(net.brutex.xservices
357
	 * .types.FileSetResource, java.lang.String)
359
	 * .types.FileSetResource, java.lang.String)
358
	 */
360
	 */
359
	
361
	
360
	public ReturnCode changeGroup(FileSetResource res, String group) {
362
	public ReturnCode changeGroup(FileSetResource res, String group) {
361
		Chgrp chgrp = new Chgrp();
363
		Chgrp chgrp = new Chgrp();
362
		chgrp.setTaskName("Chgrp");
364
		chgrp.setTaskName("Chgrp");
363
		RunTask runner = new RunTask(chgrp);
365
		RunTask runner = new RunTask(chgrp);
364
		chgrp.setGroup(group);
366
		chgrp.setGroup(group);
365
		FileSet set = res.getAntResource(chgrp.getProject());
367
		FileSet set = res.getAntResource(chgrp.getProject());
366
		chgrp.add(set);
368
		chgrp.add(set);
367
		chgrp.setMaxParallel(300);
369
		chgrp.setMaxParallel(300);
368
		return runner.postTask();
370
		return runner.postTask();
369
	}
371
	}
370
 
372
 
371
	/*
373
	/*
372
	 * (non-Javadoc)
374
	 * (non-Javadoc)
373
	 * 
375
	 * 
374
	 * @see
376
	 * @see
375
	 * net.brutex.xservices.ws.impl.FileService#changeMode(net.brutex.xservices
377
	 * net.brutex.xservices.ws.impl.FileService#changeMode(net.brutex.xservices
376
	 * .types.FileSetResource, java.lang.String)
378
	 * .types.FileSetResource, java.lang.String)
377
	 */
379
	 */
378
	
380
	
379
	public ReturnCode changeMode(FileSetResource res, String perm) {
381
	public ReturnCode changeMode(FileSetResource res, String perm) {
380
		Chmod chmod = new Chmod();
382
		Chmod chmod = new Chmod();
381
		chmod.setTaskName("Chmod");
383
		chmod.setTaskName("Chmod");
382
		RunTask runner = new RunTask(chmod);
384
		RunTask runner = new RunTask(chmod);
383
		FileSet set = res.getAntResource(chmod.getProject());
385
		FileSet set = res.getAntResource(chmod.getProject());
384
		chmod.add(set);
386
		chmod.add(set);
385
		chmod.setMaxParallel(300);
387
		chmod.setMaxParallel(300);
386
		chmod.setPerm(perm);
388
		chmod.setPerm(perm);
387
		chmod.setVerbose(true);
389
		chmod.setVerbose(true);
388
		return runner.postTask();
390
		return runner.postTask();
389
	}
391
	}
390
 
392
 
391
}
393
}