OutputStreamTesterTest.java revision cb318c6f4fe5b0e20099fa85f1b95ccb2d24119f
1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* 2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership. 5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with 7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License. You may obtain a copy of the License at 8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software 12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and 15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License. 16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 18cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpackage tests.api.java.io; 19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestSuite; 21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport org.apache.harmony.testframework.SinkTester; 22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport org.apache.harmony.testframework.WrapperTester; 23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport tests.support.Streams; 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.BufferedOutputStream; 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ByteArrayInputStream; 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ByteArrayOutputStream; 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.DataOutputStream; 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.File; 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FileInputStream; 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FileOutputStream; 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FilterOutputStream; 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException; 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ObjectInputStream; 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ObjectOutputStream; 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.OutputStream; 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PipedInputStream; 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PipedOutputStream; 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PrintStream; 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.concurrent.Callable; 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.concurrent.ExecutorService; 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.concurrent.Executors; 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.concurrent.Future; 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/** 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Tests basic {@link OutputStream} behaviors for the luni implementations of 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the type. 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class OutputStreamTesterTest { 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public static junit.framework.Test suite() { 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath TestSuite suite = new TestSuite(); 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // sink tests 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new FileOutputStreamSinkTester(true).createTests()); 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new FileOutputStreamSinkTester(false).createTests()); 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new ByteArrayOutputStreamSinkTester(0).setThrowsExceptions(false).createTests()); 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new ByteArrayOutputStreamSinkTester(4).setThrowsExceptions(false).createTests()); 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new PipedOutputStreamSinkTester().createTests()); 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // wrapper tests 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new BufferedOutputStreamTester(1).createTests()); 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new BufferedOutputStreamTester(5).createTests()); 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new BufferedOutputStreamTester(1024).createTests()); 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new FilterOutputStreamTester().createTests()); 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new DataOutputStreamTester().createTests()); 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // fails wrapperTestFlushThrowsViaClose() and sinkTestWriteAfterClose(): 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // suite.addTest(new ObjectOutputStreamTester().createTests()); 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath suite.addTest(new PrintStreamTester().setThrowsExceptions(false).createTests()); 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return suite; 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class FileOutputStreamSinkTester extends SinkTester { 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private final boolean append; 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private File file; 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private FileOutputStreamSinkTester(boolean append) { 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath this.append = append; 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public OutputStream create() throws IOException { 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath file = File.createTempFile("FileOutputStreamSinkTester", "tmp"); 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath file.deleteOnExit(); 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new FileOutputStream(file, append); 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public byte[] getBytes() throws IOException { 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return Streams.streamToBytes(new FileInputStream(file)); 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class ByteArrayOutputStreamSinkTester extends SinkTester { 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private final int size; 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private ByteArrayOutputStream stream; 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private ByteArrayOutputStreamSinkTester(int size) { 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath this.size = size; 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public OutputStream create() throws IOException { 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath stream = new ByteArrayOutputStream(size); 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return stream; 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public byte[] getBytes() throws IOException { 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return stream.toByteArray(); 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class PipedOutputStreamSinkTester extends SinkTester { 114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private ExecutorService executor; 116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private Future<byte[]> future; 117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public OutputStream create() throws IOException { 119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath final PipedInputStream in = new PipedInputStream(); 120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedOutputStream out = new PipedOutputStream(in); 121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath executor = Executors.newSingleThreadExecutor(); 123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath future = executor.submit(new Callable<byte[]>() { 124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath final ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public byte[] call() throws Exception { 127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] buffer = new byte[256]; 128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int count; 129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath while ((count = in.read(buffer)) != -1) { 130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath bytes.write(buffer, 0, count); 131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return bytes.toByteArray(); 133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }); 135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return out; 137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public byte[] getBytes() throws Exception { 140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath executor.shutdown(); 141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return future.get(); 142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class FilterOutputStreamTester extends WrapperTester { 146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public OutputStream create(OutputStream delegate) throws Exception { 148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new FilterOutputStream(delegate); 149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public byte[] decode(byte[] delegateBytes) throws Exception { 152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return delegateBytes; 153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class BufferedOutputStreamTester extends WrapperTester { 157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private final int bufferSize; 158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private BufferedOutputStreamTester(int bufferSize) { 160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath this.bufferSize = bufferSize; 161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public OutputStream create(OutputStream delegate) throws Exception { 164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new BufferedOutputStream(delegate, bufferSize); 165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public byte[] decode(byte[] delegateBytes) throws Exception { 168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return delegateBytes; 169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class DataOutputStreamTester extends WrapperTester { 173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public OutputStream create(OutputStream delegate) throws Exception { 175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new DataOutputStream(delegate); 176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public byte[] decode(byte[] delegateBytes) throws Exception { 179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return delegateBytes; 180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class ObjectOutputStreamTester extends WrapperTester { 184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public OutputStream create(OutputStream delegate) throws Exception { 186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new ObjectOutputStream(delegate); 187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public byte[] decode(byte[] delegateBytes) throws Exception { 190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return Streams.streamToBytes(new ObjectInputStream( 191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new ByteArrayInputStream(delegateBytes))); 192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class PrintStreamTester extends WrapperTester { 196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public OutputStream create(OutputStream delegate) throws Exception { 198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new PrintStream(delegate); 199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public byte[] decode(byte[] delegateBytes) throws Exception { 202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return delegateBytes; 203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 206