public static String getAddressByIP(String ip) { try { String js = visitWeb("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=" + ip); JsonParser jsonParser = new JsonParser(); js = js.trim(); JsonObject jo = jsonParser.parse(js.substring(21, js.length() - 1)).getAsJsonObject(); String province = ""; String city = ""; try { // 获取 省、市 province = jo.get("province") == null ? "" : URLDecoder.decode(jo.get("province").toString(), "UTF-8"); city = jo.get("city") == null ? "" : URLDecoder.decode(jo.get("city").toString(), "UTF-8"); // 省为空用国家代替 if (StringUtils.isEmpty(province)) { province = jo.get("country") == null ? "" : URLDecoder.decode(jo.get("country").toString(), "UTF-8"); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return (province.equals("") || province.equals(city)) ? city : province + " " + city; } catch (Exception e) { e.printStackTrace(); return ""; } }
/** {@inheritDoc} */ public synchronized Result createConference(String creator, String mucRoomName) { Conference conference = conferenceMap.get(mucRoomName); if (conference == null) { // Create new conference try { ApiResult result = api.createNewConference(creator, mucRoomName); if (result.getError() == null) { conference = result.getConference(); conferenceMap.put(mucRoomName, conference); } else if (result.getStatusCode() == 409 && result.getError().getConflictId() != null) { Number conflictId = result.getError().getConflictId(); // Conference already exists(check if we have it locally) conference = findConferenceForId(conflictId); logger.info("Conference '" + mucRoomName + "' already " + "allocated, id: " + conflictId); // do GET conflict conference if (conference == null) { ApiResult getResult = api.getConference(conflictId); if (getResult.getConference() != null) { conference = getResult.getConference(); // Fill full room name as it is not transferred // over REST API conference.setMucRoomName(mucRoomName); conferenceMap.put(mucRoomName, conference); } else { logger.error("API error: " + result); return new Result(RESULT_INTERNAL_ERROR, result.getError().getMessage()); } } } else { // Other error logger.error("API error: " + result); return new Result(RESULT_INTERNAL_ERROR, result.getError().getMessage()); } } catch (FaultTolerantRESTRequest.RetryExhaustedException e) { logger.error(e, e); return new Result(RESULT_INTERNAL_ERROR, e.getMessage()); } catch (UnsupportedEncodingException e) { logger.error(e, e); return new Result(RESULT_INTERNAL_ERROR, e.getMessage()); } } // Verify owner == creator if (creator.equals(conference.getOwner())) { return new Result(RESULT_OK); } else { logger.error( "Room " + mucRoomName + ", conflict : " + creator + " != " + conference.getOwner()); return new Result(RESULT_CONFLICT); } }
private void extractInfo(File filename) { checkpoint = false; String line; try { ArrayList<String> order = new ArrayList<String>(); BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "iso-8859-1")); while ((line = input.readLine()) != null) { if (line.equalsIgnoreCase("hämtas")) checkpoint = true; if (checkpoint) order.add(new String(line)); } // printList(order); int quant = Integer.parseInt(order.get(2)); int rows = 9; int outer = (quant * rows); double price; double total; // DecimalFormat decimal = (DecimalFormat) format; Number number; for (int i = 4; i <= outer; i += 9) { Data d = new Data( order.get(i + 1), order.get(i + 3), order.get(i + 4), order.get(i + 5), order.get(i + 7)); dataList.add(d); /* try { System.out.println(order.get(i+5)); number = format.parse(order.get(i+5)); System.out.println("Number is " + number); price = number.doubleValue(); System.out.println("Price is " + price); number = format.parse(order.get(i+7)); total = number.doubleValue(); Data d = new Data(order.get(i), Integer.parseInt(order.get(i+1)), Integer.parseInt(order.get(i+2)), order.get(i+3), order.get(i+4), price, total); dataList.add(d); } catch (ParseException numExcep) { numExcep.printStackTrace(); System.exit(1); } **/ } // printDataList(dataList); } catch (FileNotFoundException found) { found.printStackTrace(); System.exit(1); } catch (UnsupportedEncodingException encode) { encode.printStackTrace(); System.exit(1); } catch (IOException ioexcep) { ioexcep.printStackTrace(); System.exit(1); } }
public ErrorInfo listPolicy(String polname, String token) throws IOException, RestException { String realm = "/"; String data = null; ErrorInfo ei = null; InputStreamReader iss = null; BufferedReader br = null; HttpURLConnection urlc = null; InputStream inputStream = null; try { data = "policynames=" + URLEncoder.encode(polname, "UTF-8") + "&realm=" + URLEncoder.encode(realm, "UTF-8") + "&submit=" + URLEncoder.encode("Submit", "UTF-8"); } catch (UnsupportedEncodingException e) { System.out.println("OpenssoHelper: " + e.getMessage()); e.printStackTrace(); } if (data != null) { try { r.Connect(new URL(url + ssoadm_list)); } catch (MalformedURLException e) { System.out.println("OpenssoHelper: " + e.getMessage()); e.printStackTrace(); } urlc = (HttpURLConnection) r.c; urlc.addRequestProperty("Cookie", "iPlanetDirectoryPro=\"" + token + "\""); r.Send(urlc, data); String answer = null; int status = 0; inputStream = urlc.getInputStream(); iss = new InputStreamReader(inputStream); br = new BufferedReader(iss); answer = BrToString(br); status = urlc.getResponseCode(); if (answer != null) { ei = new ErrorInfo(answer, status); } br.close(); iss.close(); inputStream.close(); urlc.disconnect(); } return ei; }
public ErrorInfo doLogin() throws IOException, RestException { String data = null; ErrorInfo ei = null; InputStreamReader iss = null; BufferedReader br = null; HttpURLConnection urlc = null; InputStream inputStream = null; try { data = "username="******"UTF-8") + "&password="******"UTF-8"); } catch (UnsupportedEncodingException e) { System.out.println("OpenssoHelper: " + e.getMessage()); e.printStackTrace(); } if (data != null) { try { r.Connect(new URL(url + authenticate)); } catch (MalformedURLException e) { System.out.println("OpenssoHelper: " + e.getMessage()); e.printStackTrace(); } urlc = (HttpURLConnection) r.c; r.Send(urlc, data); String answer = null; int status = 0; inputStream = urlc.getInputStream(); iss = new InputStreamReader(inputStream); br = new BufferedReader(iss); answer = BrToString(br); status = urlc.getResponseCode(); if (answer != null) { ei = new ErrorInfo(answer, status); } br.close(); iss.close(); inputStream.close(); urlc.disconnect(); } return ei; }
public void parsePyPIList(final List<String> packages, final PyPackageService service) { myPackageNames = null; for (String pyPackage : packages) { try { final Matcher matcher = PYPI_PATTERN.matcher(URLDecoder.decode(pyPackage, "UTF-8")); if (matcher.find()) { final String packageName = matcher.group(1); final String packageVersion = matcher.group(2); if (!packageName.contains(" ")) service.PY_PACKAGES.put(packageName, packageVersion); } } catch (UnsupportedEncodingException e) { LOG.warn(e.getMessage()); } } }
private static void createFile(List<String> palabras, String pathToWords) { PrintWriter writer = null; try { writer = new PrintWriter(pathToWords, "UTF-8"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } for (String temp : palabras) { writer.println(temp); } writer.close(); }
public void printString(String output) { PrintWriter printer; try { printer = new PrintWriter("botOutput.txt", "UTF-8"); printer.write(output); printer.close(); /* for (String word : individual.toString().split(" ")) { printer.write(word); }*/ } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } }
// добавить продукт в базу json server public static void add(ProductREST product) throws NotValidProductException, IOException { try { check(product); // рповеряем продукт // connection к серверу HttpURLConnection con = (HttpURLConnection) ((new URL(PRODUCT_URL).openConnection())); con.setRequestMethod("POST"); // метод post для добавления // генерируем запрос StringBuilder urlParameters = new StringBuilder(); urlParameters .append("name=") .append(URLEncoder.encode(product.getName(), "UTF8")) .append("&"); urlParameters.append("price=").append(product.getPrice()).append("&"); urlParameters.append("weight=").append(product.getWeight()).append("&"); urlParameters .append("manufacturer=") .append(product.getManufacturer().getCountry()) .append("&"); urlParameters.append("category=").append(URLEncoder.encode(product.getCategory(), "UTF8")); con.setDoOutput(true); // разрешаем отправку данных // отправляем try (DataOutputStream out = new DataOutputStream(con.getOutputStream())) { out.writeBytes(urlParameters.toString()); } // код ответа int responseCode = con.getResponseCode(); System.out.println("\nSending 'POST' request to URL : " + PRODUCT_URL); System.out.println("Response Code : " + responseCode); } catch (NotValidProductException e) { e.printStackTrace(); throw e; } catch (UnsupportedEncodingException e) { e.printStackTrace(); throw new UnsupportedEncodingException("cannot recognize encoding"); } catch (ProtocolException e) { e.printStackTrace(); throw new ProtocolException("No such protocol, protocol must be POST,DELETE,PATCH,GET etc."); } catch (MalformedURLException e) { e.printStackTrace(); throw new MalformedURLException("Url is not valid"); } catch (IOException e) { e.printStackTrace(); throw new IOException("cannot write information to server"); } }
public void createExcel(String file) { String filename = createPath(file); System.out.println(filename); /* try { WorkbookSettings ws = new WorkbookSettings(); ws.setLocale(new Locale("sv", "SE")); WritableWorkbook workbook = Workbook.createWorkbook(new File(filename), ws); WritableSheet s = workbook.createSheet("Sheet1", 0); //writeDataSheet(s); workbook.write(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); }**/ try { File newFile = new File(filename); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), "UTF8")); // BufferedWrite output = new BufferedWriter(new OutputStreamReader(new // FileInputS§tream(filename), "iso-8859-1")); // FileWriter fw = new FileWriter(newFile.getAbsoluteFile()); // BufferedWriter bw = new BufferedWriter(fw); // bw.write("Artikel;Antal/st;Pris/st;Total\n"); out.append("Artikel;Antal/st;Pris/st;Total\n"); for (Data d : dataList) { out.append(d.toString()); out.append("\n"); // bw.write(d.toString()); // bw.write("\n"); } // bw.close(); out.flush(); out.close(); } catch (UnsupportedEncodingException unsuppEn) { unsuppEn.printStackTrace(); } catch (IOException ioE) { ioE.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }
public String getBody(String url, String text, LinkedHashMap header) { if (text != null && text.length() > 0) { File tmpFile = new File("/tmp/aa"); OutputStreamWriter out = null; try { // write the input out = new OutputStreamWriter(new FileOutputStream(tmpFile), "UTF8"); out.write(text); out.close(); // run TextPro String[] CONFIG = {"TEXTPRO=" + TEXTPRO_PATH, "PATH=" + "/usr/bin/" + ":."}; String[] cmd = { "/bin/tcsh", "-c", "perl " + TEXTPRO_PATH + "/textpro.pl -l eng -c token+pos+lemma+sentence -y " + tmpFile }; Process process = run(cmd, CONFIG); process.waitFor(); // read the TextPro's output BufferedReader txpFile = new BufferedReader( new InputStreamReader(new FileInputStream(tmpFile.getCanonicalPath() + ".txp"))); StringBuilder result = new StringBuilder(); String line; while ((line = txpFile.readLine()) != null) { if (!line.startsWith("# FILE:")) { result.append(line).append("\n"); } } txpFile.close(); return result.toString(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } return ""; }
/** * Parses the term passed in the parameter and returns a JIPTerm object that wraps the * corresponding prolog term.<br> * If the string passed in the parameter doesn't contains a valid prolog term it raises a * JIPSyntaxErrorException. * * @param strTerm Term to be parsed. If the term doesn't end with a "dot" one is appended to it. * @return a new JIPTerm object. * @exception com.ugos.jiprolog.engine.JIPSyntaxErrorException */ public final JIPTerm parseTerm(String strTerm) throws JIPSyntaxErrorException { try { final byte[] btTerm = strTerm.getBytes(getEncoding()); final ByteArrayInputStream is = new ByteArrayInputStream(btTerm); PrologParser parser = new PrologParser( new ParserReader(new PushbackLineNumberInputStream(is)), m_opManager, m_engine, "user"); m_singletonVars = parser.getSingletonVariables(); final PrologObject term = parser.parseNext(); return JIPTerm.getJIPTerm(term); } catch (UnsupportedEncodingException ex) { throw new JIPRuntimeException(ex.getMessage()); } }
public static Pair<String, List<String>> decodeKeyValues(String str) { int index = str.indexOf("="); if (index == -1) { return null; } String k = str.substring(0, index); LinkedList<String> vlist = new LinkedList<String>(); try { String vstr = URLDecoder.decode(str.substring(index + 1, str.length()), "UTF-8"); String[] array = vstr.split(","); for (int i = 0; i < array.length; i++) { vlist.addLast(array[i]); } return new Pair<String, List<String>>(k, vlist); } catch (UnsupportedEncodingException e) { System.err.println("BAD STRING " + str); e.printStackTrace(); return null; } catch (Exception e) { System.err.println("BAD STRING " + str); return null; } }
/** * Parse the content of a purported HTML stream digital object and store the results in RepInfo. * * @param stream An InputStream, positioned at its beginning, which is generated from the object * to be parsed. If multiple calls to <code>parse</code> are made on the basis of a nonzero * value being returned, a new InputStream must be provided each time. * @param info A fresh (on the first call) RepInfo object which will be modified to reflect the * results of the parsing If multiple calls to <code>parse</code> are made on the basis of a * nonzero value being returned, the same RepInfo object should be passed with each call. * @param parseIndex Must be 0 in first call to <code>parse</code>. If <code>parse</code> returns * a nonzero value, it must be called again with <code>parseIndex</code> equal to that return * value. */ public int parse(InputStream stream, RepInfo info, int parseIndex) throws IOException { if (parseIndex != 0) { // Coming in with parseIndex = 1 indicates that we've determined // this is XHTML; so we invoke the XML module to parse it. // If parseIndex is 100, this is the first invocation of the // XML module, so we call it with 0; otherwise we call it with // the value of parseIndex. if (isXmlAvailable()) { edu.harvard.hul.ois.jhove.module.XmlModule xmlMod = new edu.harvard.hul.ois.jhove.module.XmlModule(); if (parseIndex == 100) { parseIndex = 0; } xmlMod.setApp(_app); xmlMod.setBase(_je); xmlMod.setDefaultParams(_defaultParams); try { xmlMod.applyDefaultParams(); } catch (Exception e) { // really shouldn't happen } xmlMod.setXhtmlDoctype(_doctype); return xmlMod.parse(stream, info, parseIndex); } else { // The XML module shouldn't be missing from any installation, // but someone who really wanted to could remove it. In // that case, you deserve what you get. info.setMessage(new ErrorMessage("XML-HUL module required to validate XHTML documents")); info.setWellFormed(false); // Treat it as completely wrong return 0; } } else { /* parseIndex = 0, first call only */ _doctype = null; } // Test if textMD is to be generated if (_defaultParams != null) { Iterator iter = _defaultParams.iterator(); while (iter.hasNext()) { String param = (String) iter.next(); if (param.toLowerCase().equals("withtextmd=true")) { _withTextMD = true; } } } initParse(); info.setFormat(_format[0]); info.setMimeType(_mimeType[0]); info.setModule(this); if (_textMD == null || parseIndex == 0) { _textMD = new TextMDMetadata(); } /* We may have already done the checksums while converting a temporary file. */ Checksummer ckSummer = null; if (_je != null && _je.getChecksumFlag() && info.getChecksum().size() == 0) { ckSummer = new Checksummer(); _cstream = new ChecksumInputStream(stream, ckSummer); _dstream = getBufferedDataStream(_cstream, _je != null ? _je.getBufferSize() : 0); } else { _dstream = getBufferedDataStream(stream, _je != null ? _je.getBufferSize() : 0); } ParseHtml parser = null; HtmlMetadata metadata = null; HtmlCharStream cstream = null; try { cstream = new HtmlCharStream(_dstream, "ISO-8859-1"); parser = new ParseHtml(cstream); } catch (UnsupportedEncodingException e) { info.setMessage(new ErrorMessage("Internal error: " + e.getMessage())); info.setWellFormed(false); return 0; // shouldn't happen! } int type = 0; try { List elements = parser.HtmlDoc(); if (elements.isEmpty()) { // Consider an empty document bad info.setWellFormed(false); info.setMessage(new ErrorMessage("Document is empty")); return 0; } type = checkDoctype(elements); if (type < 0) { info.setWellFormed(false); info.setMessage(new ErrorMessage("DOCTYPE is not HTML")); return 0; } /* Check if there is at least one html, head, body or title tag. * A plain text document * might be interpreted as a single PCDATA, which is in some * ethereal sense well-formed HTML, but it's pointless to consider * it such. It might also use angle brackets as a text delimiter, * and that shouldn't count as HTML either. */ boolean hasElements = false; Iterator iter = elements.iterator(); while (iter.hasNext()) { Object o = iter.next(); if (o instanceof JHOpenTag) { String name = ((JHOpenTag) o).getName(); if ("html".equals(name) || "head".equals(name) || "body".equals(name) || "title".equals(name)) { hasElements = true; } break; } } if (!hasElements) { info.setMessage(new ErrorMessage("Document contains no html, head, body or title tags")); info.setWellFormed(false); return 0; } // CRLF from HtmlCharStream ... String lineEnd = cstream.getKindOfLineEnd(); if (lineEnd == null) { info.setMessage(new InfoMessage("Not able to determine type of end of line")); _textMD.setLinebreak(TextMDMetadata.NILL); } else if (lineEnd.equalsIgnoreCase("CR")) { _textMD.setLinebreak(TextMDMetadata.LINEBREAK_CR); } else if (lineEnd.equalsIgnoreCase("LF")) { _textMD.setLinebreak(TextMDMetadata.LINEBREAK_LF); } else if (lineEnd.equalsIgnoreCase("CRLF")) { _textMD.setLinebreak(TextMDMetadata.LINEBREAK_CRLF); } if (type == 0) { /* If we can't find a doctype, it still might be XHTML * if the elements start with an XML declaration and * the root element is "html" */ switch (seemsToBeXHTML(elements)) { case 0: // Not XML break; // fall through case 1: // XML but not HTML info.setMessage( new ErrorMessage( "Document has XML declaration but no DOCTYPE; " + "probably XML rather than HTML")); info.setWellFormed(false); return 0; case 2: // probably XHTML return 100; } info.setMessage( new ErrorMessage( "Unrecognized or missing DOCTYPE declaration; " + "validation continuing as HTML 3.2")); info.setValid(false); // But keep going } HtmlDocDesc docDesc = null; switch (type) { case HTML_3_2: default: docDesc = new Html3_2DocDesc(); _textMD.setMarkup_basis("HTML"); _textMD.setMarkup_basis_version("3.2"); break; case HTML_4_0_FRAMESET: docDesc = new Html4_0FrameDocDesc(); _textMD.setMarkup_basis("HTML"); _textMD.setMarkup_basis_version("4.0"); break; case HTML_4_0_TRANSITIONAL: docDesc = new Html4_0TransDocDesc(); _textMD.setMarkup_basis("HTML"); _textMD.setMarkup_basis_version("4.0"); break; case HTML_4_0_STRICT: docDesc = new Html4_0StrictDocDesc(); _textMD.setMarkup_basis("HTML"); _textMD.setMarkup_basis_version("4.0"); break; case HTML_4_01_FRAMESET: docDesc = new Html4_01FrameDocDesc(); _textMD.setMarkup_basis("HTML"); _textMD.setMarkup_basis_version("4.01"); break; case HTML_4_01_TRANSITIONAL: docDesc = new Html4_01TransDocDesc(); _textMD.setMarkup_basis("HTML"); _textMD.setMarkup_basis_version("4.01"); break; case HTML_4_01_STRICT: docDesc = new Html4_01StrictDocDesc(); _textMD.setMarkup_basis("HTML"); _textMD.setMarkup_basis_version("4.01"); break; case XHTML_1_0_STRICT: case XHTML_1_0_TRANSITIONAL: case XHTML_1_0_FRAMESET: case XHTML_1_1: // Force a second call to parse as XML. 100 is a // magic code for the first XML call. return 100; } _textMD.setMarkup_language(_doctype); if (docDesc == null) { info.setMessage( new InfoMessage( "Code for appropriate HTML version not available yet:" + "substituting HTML 3.2")); docDesc = new Html3_2DocDesc(); } docDesc.validate(elements, info); metadata = docDesc.getMetadata(); // Try to get the charset from the meta Content if (metadata.getCharset() != null) { _textMD.setCharset(metadata.getCharset()); } else { _textMD.setCharset(TextMDMetadata.CHARSET_ISO8859_1); } String textMDEncoding = _textMD.getCharset(); if (textMDEncoding.indexOf("UTF") != -1) { _textMD.setByte_order( _bigEndian ? TextMDMetadata.BYTE_ORDER_BIG : TextMDMetadata.BYTE_ORDER_LITTLE); _textMD.setByte_size("8"); _textMD.setCharacter_size("variable"); } else { _textMD.setByte_order( _bigEndian ? TextMDMetadata.BYTE_ORDER_BIG : TextMDMetadata.BYTE_ORDER_LITTLE); _textMD.setByte_size("8"); _textMD.setCharacter_size("1"); } } catch (ParseException e) { Token t = e.currentToken; info.setMessage( new ErrorMessage("Parse error", "Line = " + t.beginLine + ", column = " + t.beginColumn)); info.setWellFormed(false); } catch (TokenMgrError f) { info.setMessage(new ErrorMessage("TokenMgrError: " + f.getLocalizedMessage())); info.setWellFormed(false); } if (info.getWellFormed() == RepInfo.FALSE) { return 0; } if (type != 0) { if (profileNames[type] != null) { info.setProfile(profileNames[type]); } info.setVersion(versionNames[type]); } if (metadata != null) { Property property = metadata.toProperty(_withTextMD ? _textMD : null); if (property != null) { info.setProperty(property); } } if (ckSummer != null) { info.setSize(_cstream.getNBytes()); info.setChecksum(new Checksum(ckSummer.getCRC32(), ChecksumType.CRC32)); String value = ckSummer.getMD5(); if (value != null) { info.setChecksum(new Checksum(value, ChecksumType.MD5)); } if ((value = ckSummer.getSHA1()) != null) { info.setChecksum(new Checksum(value, ChecksumType.SHA1)); } } return 0; }
private boolean encodeObject(Object object) throws IOException { if (object instanceof BEncodableObject) { object = ((BEncodableObject) object).toBencodeObject(); } if (object instanceof String || object instanceof Float) { String tempString = (object instanceof String) ? (String) object : String.valueOf((Float) object); // usually this is simpler to encode by hand as chars < 0x80 map directly in UTF-8 boolean simple = true; int char_count = tempString.length(); byte[] encoded = new byte[char_count]; for (int i = 0; i < char_count; i++) { char c = tempString.charAt(i); if (c < 0x80) { encoded[i] = (byte) c; } else { simple = false; break; } } if (simple) { writeInt(char_count); writeChar(':'); writeBytes(encoded); } else { ByteBuffer bb = Constants.DEFAULT_CHARSET.encode(tempString); writeInt(bb.limit()); writeChar(':'); writeByteBuffer(bb); } } else if (object instanceof Map) { Map tempMap = (Map) object; SortedMap tempTree = null; // unfortunately there are some occasions where we want to ensure that // the 'key' of the map is not mangled by assuming its UTF-8 encodable. // In particular the response from a tracker scrape request uses the // torrent hash as the KEY. Hence the introduction of the type below // to allow the constructor of the Map to indicate that the keys should // be extracted using a BYTE_ENCODING boolean byte_keys = object instanceof ByteEncodedKeyHashMap; // write the d writeChar('d'); // are we sorted? if (tempMap instanceof TreeMap) { tempTree = (TreeMap) tempMap; } else { tempTree = new TreeMap(tempMap); } Iterator it = tempTree.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object o_key = entry.getKey(); Object value = entry.getValue(); if (value != null) { if (o_key instanceof byte[]) { encodeObject(o_key); if (!encodeObject(value)) encodeObject(""); } else if (o_key instanceof String) { String key = (String) o_key; if (byte_keys) { try { encodeObject(Constants.BYTE_CHARSET.encode(key)); if (!encodeObject(value)) encodeObject(""); } catch (UnsupportedEncodingException e) { throw (new IOException("BEncoder: unsupport encoding: " + e.getMessage())); } } else { encodeObject(key); // Key goes in as UTF-8 if (!encodeObject(value)) encodeObject(""); } } else Debug.out( "Attempt to encode an unsupported map key type: " + object.getClass() + ";value=" + object); } } writeChar('e'); } else if (object instanceof List) { List tempList = (List) object; // write out the l writeChar('l'); for (int i = 0; i < tempList.size(); i++) { encodeObject(tempList.get(i)); } writeChar('e'); } else if (object instanceof Long) { Long tempLong = (Long) object; // write out the l writeChar('i'); writeLong(tempLong.longValue()); writeChar('e'); } else if (object instanceof Integer) { Integer tempInteger = (Integer) object; // write out the l writeChar('i'); writeInt(tempInteger.intValue()); writeChar('e'); } else if (object instanceof byte[]) { byte[] tempByteArray = (byte[]) object; writeInt(tempByteArray.length); writeChar(':'); if (url_encode) { writeBytes( URLEncoder.encode( new String(tempByteArray, Constants.BYTE_ENCODING), Constants.BYTE_ENCODING) .getBytes()); } else { writeBytes(tempByteArray); } } else if (object instanceof ByteBuffer) { ByteBuffer bb = (ByteBuffer) object; writeInt(bb.limit()); writeChar(':'); writeByteBuffer(bb); } else if (object == null) { // ideally we'd bork here but I don't want to run the risk of breaking existing stuff so just // log Debug.out("Attempt to encode a null value: sofar=" + getEncodedSoFar()); return false; } else { Debug.out( "Attempt to encode an unsupported entry type: " + object.getClass() + ";value=" + object); return false; } return true; }