/** * Logs a message to the error log. * * @param log the error log to write the message. * @param message the message to write * @param e the exception to write */ public void log( String message, Throwable e, HttpServletRequest request, HttpServletResponse response, ServletContext application) throws IOException { WriteStream logStream = getLogStream(); if (logStream == null) return; Throwable t = e; while (t != null) { e = t; if (e instanceof ServletException) t = ((ServletException) e).getRootCause(); else if (e instanceof ExceptionWrapper) t = ((ExceptionWrapper) e).getRootCause(); else t = null; } CharBuffer cb = CharBuffer.allocate(); QDate.formatLocal(cb, CurrentTime.getCurrentTime(), "[%Y/%m/%d %H:%M:%S] "); cb.append(message); logStream.log(cb.close()); if (e != null && !(e instanceof CompileException)) logStream.log(e); logStream.flush(); }
private void checkMetaEncoding(Element elt) { String http = elt.getAttribute("http-equiv"); String content = elt.getAttribute("content"); if (http.equals("") || content.equals("") || !http.equalsIgnoreCase("content-type")) return; CharCursor cursor = new StringCharCursor(content); charsetScanner.scan(cursor); charsetScanner.skip(cursor); CharBuffer buf = CharBuffer.allocate(); while (cursor.current() != cursor.DONE) { buf.clear(); charsetScanner.scan(cursor, buf); if (buf.toString().equalsIgnoreCase("charset")) { charsetScanner.skip(cursor); buf.clear(); charsetScanner.scan(cursor, buf); if (buf.length() > 0) { try { is.setEncoding(buf.close()); } catch (IOException e) { } return; } } } }
/** Escapes the XML string. */ public static String escapeXml(String string) { if (string == null) return ""; CharBuffer cb = CharBuffer.allocate(); for (int i = 0; i < string.length(); i++) { int ch = string.charAt(i); switch (ch) { case '<': cb.append("<"); break; case '>': cb.append(">"); break; case '&': cb.append("&"); break; case '\'': cb.append("'"); break; case '"': cb.append("""); break; default: cb.append((char) ch); break; } } return cb.close(); }
private String digestToBase64(byte[] digest, int len) { CharBuffer cb = CharBuffer.allocate(); Base64.encode(cb, digest, 0, len); return cb.close(); }
/** Initialize the server. */ private void serverInit(CauchoRequest req) throws ServletException { if (_urlPrefix != null) return; WebApp app = (WebApp) getServletContext(); // calculate the URL prefix _servletId = req.getServletPath(); CharBuffer cb = CharBuffer.allocate(); if (!"default".equals(app.getAdmin().getHost().getName()) && !"".equals(app.getAdmin().getHost().getName())) { String hostName = app.getAdmin().getHost().getURL(); cb.append(hostName); cb.append(app.getContextPath()); cb.append(_servletId); } else { cb.append(req.getScheme()); cb.append("://"); cb.append(req.getServerName()); cb.append(":"); cb.append(req.getServerPort()); cb.append(app.getContextPath()); cb.append(_servletId); } _urlPrefix = cb.close(); initProtocol(); }
/** * The location of a javadoc generated api, can be a url, required. * * <p>Examples: * * <ul> * <li>http://java.sun.com/j2se/1.4.2/docs/api * <li>file://usr/local/java/axis_1-1/docs/apiDocs * <li>resin/ * </ul> */ public void setLocation(String location) { if (!location.endsWith("/")) { CharBuffer cb = CharBuffer.allocate(); cb.append(location); cb.append('/'); _location = cb.close(); } else _location = location; }
/** * A location href, relative to the web-app root, appropriately rewritten to handle remote * locations and locations that are local absolute. */ String getLocationHref(String file) { CharBuffer cb = CharBuffer.allocate(); if (_isLocalAbsolute) { cb.append(_id); cb.append('/'); } else { cb.append(_location); } cb.append(file); return cb.close(); }
/** Joins the array. */ public static String join(String[] array, String sep) { if (array == null) return ""; if (sep == null) sep = ""; CharBuffer result = CharBuffer.allocate(); for (int i = 0; i < array.length; i++) { if (i != 0) result.append(sep); result.append(array[i]); } return result.close(); }
public void init() throws ConfigException { if (_id == null) throw new ConfigException(L.l("`{0}' is required", "id")); if (_location == null) throw new ConfigException(L.l("`{0}' is required", "location")); if (_name == null) _name = _location.toString(); if (_indexString == null) _indexString = "index-all.html"; _locationPath = Vfs.lookup(_location); int split = _indexString.indexOf('#'); if (split > -1) { CharBuffer before = new CharBuffer(_indexString.substring(0, split)); CharBuffer after = new CharBuffer(_indexString.substring(split + 1)); CharBuffer index = CharBuffer.allocate(); boolean isIndex = false; for (int i = 1; i <= 27; i++) { index.append(before); index.append(i); index.append(after); Path indexPath = _locationPath.lookup(index.toString()); if (indexPath.exists()) { isIndex = true; _index.add(indexPath); } index.clear(); } if (!isIndex) { throw new ConfigException(L.l("`{0}' not found", _locationPath.lookup(_indexString))); } } else _index.add(_locationPath.lookup(_indexString)); if (_locationPath.getScheme().equals("file")) { _isLocal = true; Path pwd = Vfs.getPwd(); if (!_locationPath.getPath().startsWith(pwd.getPath())) _isLocalAbsolute = true; } }
/** * Returns the server container responsible for handling the request * * @param pathInfo the path info of the request * @return the server bean responsible for handling the request */ Skeleton getSkeleton(String pathInfo, String queryString) throws Exception { CharBuffer cb = CharBuffer.allocate(); cb.append(pathInfo); cb.append('?'); cb.append(queryString); Skeleton skeleton = (Skeleton) _beanMap.get(cb); if (skeleton != null) { cb.free(); return skeleton; } skeleton = _protocolContainer.getSkeleton(pathInfo, queryString); _beanMap.put(cb, skeleton); return skeleton; }
/** * Logs an error. * * @param message the error message * @param request the servlet request * @param response the servlet response * @param application the servlet context */ public void log( String message, HttpServletRequest request, HttpServletResponse response, ServletContext application) throws IOException { WriteStream logStream = getLogStream(); if (logStream == null) return; CharBuffer cb = CharBuffer.allocate(); QDate.formatLocal(cb, CurrentTime.getCurrentTime(), "[%Y/%m/%d %H:%M:%S] "); cb.append(message); logStream.log(cb.close()); logStream.flush(); }
/** Replaces substrings. */ public static String replace(String input, String before, String after) { if (input == null) return ""; if (before == null || before.equals("")) return input; if (after == null) after = ""; CharBuffer result = CharBuffer.allocate(); int head = 0; int next; while ((next = input.indexOf(before, head)) >= 0) { result.append(input.substring(head, next)); result.append(after); head = next + before.length(); } result.append(input.substring(head)); return result.close(); }
/** * Walk down the path starting from the portion immediately following the scheme. i.e. schemeWalk * is responsible for parsing the host and port from the URL. * * @param userPath the user's passed in path * @param attributes the attributes for the new path * @param uri the normalized full uri * @param offset offset into the uri to start processing, i.e. after the scheme. * @return the looked-up path. */ @Override public Path schemeWalk(String userPath, Map<String, Object> attributes, String uri, int offset) { int length = uri.length(); if (length < 2 + offset || uri.charAt(offset) != '/' || uri.charAt(offset + 1) != '/') throw new RuntimeException(L.l("bad scheme in `{0}'", uri)); CharBuffer buf = CharBuffer.allocate(); int i = 2 + offset; int ch = 0; boolean isInBrace = false; for (; i < length && ((ch = uri.charAt(i)) != ':' || isInBrace) && ch != '/' && ch != '?'; i++) { buf.append((char) ch); if (ch == '[') isInBrace = true; else if (ch == ']') isInBrace = false; } String host = buf.close(); if (host.length() == 0) throw new RuntimeException(L.l("bad host in `{0}'", uri)); int port = 0; if (ch == ':') { for (i++; i < length && (ch = uri.charAt(i)) >= '0' && ch <= '9'; i++) { port = 10 * port + uri.charAt(i) - '0'; } } if (port == 0) port = 80; HttpPath root = create(host, port); return root.fsWalk(userPath, attributes, uri.substring(i)); }