/** * Reads a string from a reader. * * @param reader the reader to be read. * @return a string read from the specified reader. * @throws IOException if there is IO error occurred during the operation. */ public static String readString(Reader reader) throws IOException { StringWriter writer = new StringWriter(); pipe(reader, writer); String s = writer.toString(); writer.close(); return s; }
/** * Reads an array of bytes from an input stream. * * @param ins the input stream to be read. * @return an array of bytes read from the specified input stream. * @throws IOException if there is IO error occurred during the operation. */ public static byte[] readBytes(InputStream ins) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(ins.available()); pipe(ins, out); byte[] bytes = out.toByteArray(); out.close(); return bytes; }
/** * Reads an array of bytes from a reader. * * @param reader the reader to be read. * @param charset the charset used to convert the characters. * @return an array of bytes read from the specified reader. * @throws IOException if there is IO error occurred during the operation. */ public static byte[] readBytes(Reader reader, Charset charset) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); OutputStreamWriter writer = new OutputStreamWriter(out, charset); pipe(reader, writer); byte[] bytes = out.toByteArray(); writer.close(); out.close(); return bytes; }
/** * Writes an array of bytes to a writer. * * @param bytes an array of bytes to write. * @param writer to writer to be written. * @param charset the charset used to convert the bytes. * @throws IOException if there is IO error occurred during the operation. */ public static void writeBytes(byte[] bytes, Writer writer, Charset charset) throws IOException { ByteArrayInputStream ins = new ByteArrayInputStream(bytes); InputStreamReader reader; if (charset == null) { reader = new InputStreamReader(ins); } else { reader = new InputStreamReader(ins, charset); } pipe(reader, writer); reader.close(); ins.close(); }
/** * Writes a string to a writer. * * @param s the string to write. * @param writer the writer to be written. * @throws IOException if there is IO error occurred during the operation. */ public static void writeString(String s, Writer writer) throws IOException { StringReader reader = new StringReader(s); pipe(reader, writer); reader.close(); }
/** * Writes an array of bytes to an output stream. * * @param bytes an array of bytes to write. * @param out the output stream to be written. * @throws IOException if there is IO error occurred during the operation. */ public static void writeBytes(byte[] bytes, OutputStream out) throws IOException { ByteArrayInputStream ins = new ByteArrayInputStream(bytes); pipe(ins, out); ins.close(); }
/** The main method is for CLI mode. */ public static void main(String[] args) { try { java.io.PrintStream out = System.out; if (args.length < 2) { out.println("Usage: as2-envelop [config-xml] [log-path]"); out.println(); out.println( "Example: as2-envelop ./config/as2-envelop/as2-request.xml ./logs/as2-envelop.log"); System.exit(1); } out.println("------------------------------------------------------"); out.println(" AS2 Envelop Queryer "); out.println("------------------------------------------------------"); // Initialize the logger. out.println("Initialize logger .. "); // The logger path is specified at the last argument. FileLogger logger = new FileLogger(new File(args[args.length - 1])); // Initialize the query parameter. out.println("Importing AS2 administrative sending parameters ... "); AS2AdminData acd = DataFactory.getInstance() .createAS2AdminDataFromXML(new PropertyTree(new File(args[0]).toURI().toURL())); boolean historyQueryNeeded = false; AS2MessageHistoryRequestData queryData = new AS2MessageHistoryRequestData(); if (acd.getMessageIdCriteria() == null || acd.getMessageIdCriteria().trim().equals("")) { historyQueryNeeded = true; // print command prompt out.println("No messageID was specified!"); out.println("Start querying message repositry ..."); String endpoint = acd.getEnvelopQueryEndpoint(); String host = endpoint.substring(0, endpoint.indexOf("/corvus")); host += "/corvus/httpd/as2/msg_history"; queryData.setEndPoint(host); } /* If the user has entered message id but no messagebox, using the messageid as serach criteria and as user to chose his target message */ else if (acd.getMessageBoxCriteria() == null || acd.getMessageBoxCriteria().trim().equals("")) { historyQueryNeeded = true; // print command prompt out.println("Message Box value haven't specified."); out.println( "Start query message whcih matched with messageID: " + acd.getMessageIdCriteria()); String endpoint = acd.getEnvelopQueryEndpoint(); String host = endpoint.substring(0, endpoint.indexOf("/corvus")); host += "/corvus/httpd/as2/msg_history"; queryData.setEndPoint(host); queryData.setMessageId(acd.getMessageIdCriteria()); } // Debug Message System.out.println("history Endpoint: " + queryData.getEndPoint()); System.out.println("Repositry Endpoint: " + acd.getEnvelopQueryEndpoint()); if (historyQueryNeeded) { List msgList = listAvailableMessage(queryData, logger); if (msgList == null || msgList.size() == 0) { out.println(); out.println(); out.println("No stream data found in repositry..."); out.println("Please view log for details .. "); return; } int selection = promptForSelection(msgList); if (selection == -1) { return; } String messageID = (String) ((List) msgList.get(selection)).get(0); String messageBox = (String) ((List) msgList.get(selection)).get(1); acd.setMessageIdCriteria(messageID); acd.setMessageBoxCriteria(messageBox.toUpperCase()); out.println(); out.println(); out.println("Start download targeted message envelop ..."); } // Initialize the sender. out.println("Initialize AS2 HTTP data service client... "); AS2EnvelopQuerySender sender = new AS2EnvelopQuerySender(logger, acd); out.println("Sending AS2 HTTP Envelop Query request ... "); sender.run(); out.println(); out.println(" Sending Done: "); out.println("----------------------------------------------------"); out.println("The Message Envelope : "); InputStream eins = sender.getEnvelopStream(); if (eins.available() == 0) { out.println("No stream data found."); out.println( "The message envelop does not exist for message id " + sender.getMessageIdToDownload() + " and message box " + sender.getMessageBoxToDownload()); } else IOHandler.pipe(sender.getEnvelopStream(), out); out.println("Please view log for details .. "); } catch (Exception e) { e.printStackTrace(System.err); } }