|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.lib.cvsclient.response;
import java.io.*;
import java.util.*;
import org.netbeans.lib.cvsclient.util.*;
import org.netbeans.lib.cvsclient.util.SimpleStringPattern;
import org.netbeans.lib.cvsclient.command.KeywordSubstitutionOptions;
/**
* This class handles the response from the server to a wrapper-sendme-rcsOptions
* request
* @author Sriram Seshan
*/
public class WrapperSendResponse implements Response {
public static Map parseWrappers(String line) {
StringTokenizer tokenizer = new StringTokenizer(line);
// the first token is the pattern
SimpleStringPattern pattern = new SimpleStringPattern(tokenizer.nextToken());
// it is followed by option value pairs
String option, value;
Map wrappersMap = null;
while (tokenizer.hasMoreTokens()) {
option = tokenizer.nextToken();
value = tokenizer.nextToken();
// do not bother with the -m Options now
if (option.equals("-k")) { //NOI18N
// This is a keyword substitution option
// strip the quotes
int first = value.indexOf('\'');
int last = value.lastIndexOf('\'');
if (first >=0 && last >= 0) {
value = value.substring(first+1, last);
}
KeywordSubstitutionOptions keywordOption = KeywordSubstitutionOptions.findKeywordSubstOption(value);
if (wrappersMap == null) {
if (!tokenizer.hasMoreTokens()) {
wrappersMap = Collections.singletonMap(pattern, keywordOption);
} else {
wrappersMap = new LinkedHashMap();
wrappersMap.put(pattern, keywordOption);
}
} else {
wrappersMap.put(pattern, keywordOption);
}
}
}
return wrappersMap;
}
/**
* Process the data for the response.
* @param dis the data inputstream allowing the client to read the server's
* response. Note that the actual response name has already been read
* and the input stream is positioned just before the first argument, if
* any.
*/
public void process(LoggedDataInputStream dis, ResponseServices services)
throws ResponseException {
try {
String wrapperSettings = dis.readLine();
Map wrappers = parseWrappers(wrapperSettings);
for (Iterator it = wrappers.keySet().iterator(); it.hasNext(); ) {
StringPattern pattern = (StringPattern) it.next();
KeywordSubstitutionOptions keywordOption = (KeywordSubstitutionOptions) wrappers.get(pattern);
services.addWrapper(pattern, keywordOption);
}
}
catch (EOFException ex) {
throw new ResponseException(ex, ResponseException.getLocalMessage("CommandException.EndOfFile", null)); //NOI18N
}
catch (IOException ex) {
throw new ResponseException(ex);
}
catch (NoSuchElementException nse) {
throw new ResponseException(nse);
}
}
/**
* Is this a terminal response, i.e. should reading of responses stop
* after this response. This is true for responses such as OK or
* an error response
*/
public boolean isTerminalResponse() {
return false;
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.