public Value receive(Env env, @Optional("1") long timeout) throws JMSException { Message message = _consumer.receive(timeout); if (message == null) return BooleanValue.FALSE; if (message instanceof ObjectMessage) { Object object = ((ObjectMessage) message).getObject(); return env.wrapJava(object); } else if (message instanceof TextMessage) { return env.createString(((TextMessage) message).getText()); } else if (message instanceof StreamMessage) { Object object = ((StreamMessage) message).readObject(); return env.wrapJava(object); } else if (message instanceof BytesMessage) { BytesMessage bytesMessage = (BytesMessage) message; int length = (int) bytesMessage.getBodyLength(); StringValue bb = env.createBinaryBuilder(length); TempBuffer tempBuffer = TempBuffer.allocate(); int sublen; while (true) { sublen = bytesMessage.readBytes(tempBuffer.getBuffer()); if (sublen > 0) bb.append(tempBuffer.getBuffer(), 0, sublen); else break; } TempBuffer.free(tempBuffer); return bb; } else if (message instanceof MapMessage) { MapMessage mapMessage = (MapMessage) message; Enumeration mapNames = mapMessage.getMapNames(); ArrayValue array = new ArrayValueImpl(); while (mapNames.hasMoreElements()) { String name = mapNames.nextElement().toString(); Object object = mapMessage.getObject(name); array.put(env.createString(name), env.wrapJava(object)); } return array; } else { return BooleanValue.FALSE; } }
private static StringValue format(Env env, StringValue msg, Value []args) { if (args.length == 0) return msg; StringValue sb; if (msg.isUnicode()) sb = env.createUnicodeBuilder(); else sb = env.createBinaryBuilder(); return formatImpl(env, msg, args, sb); }
static void fillPost( Env env, ArrayValue postArray, ArrayValue files, InputStream is, String contentType, String encoding, int contentLength, boolean addSlashesToValues, boolean isAllowUploads) { long maxPostSize = env.getIniBytes("post_max_size", 0); try { if (encoding == null) encoding = env.getHttpInputEncoding(); if (contentType != null && contentType.startsWith("multipart/form-data")) { String boundary = getBoundary(contentType); ReadStream rs = new ReadStream(new VfsStream(is, null)); if (boundary == null) { env.warning(L.l("multipart/form-data POST is missing boundary")); return; } MultipartStream ms = new MultipartStream(rs, boundary); if (encoding != null) ms.setEncoding(encoding); readMultipartStream(env, ms, postArray, files, addSlashesToValues, isAllowUploads); rs.close(); if (rs.getLength() > maxPostSize) { env.warning( L.l("POST length of {0} exceeds max size of {1}", rs.getLength(), maxPostSize)); postArray.clear(); files.clear(); return; } } else { StringValue bb = env.createBinaryBuilder(); bb.appendReadAll(is, Integer.MAX_VALUE); if (bb.length() > maxPostSize) { env.warning(L.l("POST length of {0} exceeds max size of {1}", bb.length(), maxPostSize)); return; } env.setInputData(bb); if (contentType != null && contentType.startsWith("application/x-www-form-urlencoded")) StringUtility.parseStr(env, bb, postArray, false, encoding); } } catch (IOException e) { env.warning(e); } finally { } }