|
Java example source code file (SourceSinkFactories.java)
The SourceSinkFactories.java Java example source code/* * Copyright (C) 2012 The Guava Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.common.io; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.io.SourceSinkFactory.ByteSinkFactory; import static com.google.common.io.SourceSinkFactory.ByteSourceFactory; import static com.google.common.io.SourceSinkFactory.CharSinkFactory; import static com.google.common.io.SourceSinkFactory.CharSourceFactory; import com.google.common.base.Charsets; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.nio.CharBuffer; import java.util.Arrays; import java.util.logging.Logger; import javax.annotation.Nullable; /** * {@link SourceSinkFactory} implementations. * * @author Colin Decker */ public class SourceSinkFactories { private SourceSinkFactories() {} public static CharSourceFactory stringCharSourceFactory() { return new StringSourceFactory(); } public static ByteSourceFactory byteArraySourceFactory() { return new ByteArraySourceFactory(); } public static ByteSourceFactory emptyByteSourceFactory() { return new EmptyByteSourceFactory(); } public static CharSourceFactory emptyCharSourceFactory() { return new EmptyCharSourceFactory(); } public static ByteSourceFactory fileByteSourceFactory() { return new FileByteSourceFactory(); } public static ByteSinkFactory fileByteSinkFactory() { return new FileByteSinkFactory(null); } public static ByteSinkFactory appendingFileByteSinkFactory() { String initialString = IoTestCase.ASCII + IoTestCase.I18N; return new FileByteSinkFactory(initialString.getBytes(Charsets.UTF_8)); } public static CharSourceFactory fileCharSourceFactory() { return new FileCharSourceFactory(); } public static CharSinkFactory fileCharSinkFactory() { return new FileCharSinkFactory(null); } public static CharSinkFactory appendingFileCharSinkFactory() { String initialString = IoTestCase.ASCII + IoTestCase.I18N; return new FileCharSinkFactory(initialString); } public static ByteSourceFactory urlByteSourceFactory() { return new UrlByteSourceFactory(); } public static CharSourceFactory urlCharSourceFactory() { return new UrlCharSourceFactory(); } public static ByteSourceFactory asByteSourceFactory(final CharSourceFactory factory) { checkNotNull(factory); return new ByteSourceFactory() { @Override public ByteSource createSource(byte[] data) throws IOException { return factory.createSource(new String(data, Charsets.UTF_8)) .asByteSource(Charsets.UTF_8); } @Override public byte[] getExpected(byte[] data) { return factory.getExpected(new String(data, Charsets.UTF_8)).getBytes(Charsets.UTF_8); } @Override public void tearDown() throws IOException { factory.tearDown(); } }; } public static CharSourceFactory asCharSourceFactory(final ByteSourceFactory factory) { checkNotNull(factory); return new CharSourceFactory() { @Override public CharSource createSource(String string) throws IOException { return factory.createSource(string.getBytes(Charsets.UTF_8)) .asCharSource(Charsets.UTF_8); } @Override public String getExpected(String data) { return new String(factory.getExpected(data.getBytes(Charsets.UTF_8)), Charsets.UTF_8); } @Override public void tearDown() throws IOException { factory.tearDown(); } }; } public static CharSinkFactory asCharSinkFactory(final ByteSinkFactory factory) { checkNotNull(factory); return new CharSinkFactory() { @Override public CharSink createSink() throws IOException { return factory.createSink().asCharSink(Charsets.UTF_8); } @Override public String getSinkContents() throws IOException { return new String(factory.getSinkContents(), Charsets.UTF_8); } @Override public String getExpected(String data) { /* * Get what the byte sink factory would expect for no written bytes, then append expected * string to that. */ byte[] factoryExpectedForNothing = factory.getExpected(new byte[0]); return new String(factoryExpectedForNothing, Charsets.UTF_8) + checkNotNull(data); } @Override public void tearDown() throws IOException { factory.tearDown(); } }; } public static ByteSourceFactory asSlicedByteSourceFactory(final ByteSourceFactory factory, final long off, final long len) { checkNotNull(factory); return new ByteSourceFactory() { @Override public ByteSource createSource(byte[] bytes) throws IOException { return factory.createSource(bytes).slice(off, len); } @Override public byte[] getExpected(byte[] bytes) { byte[] baseExpected = factory.getExpected(bytes); int startOffset = (int) Math.min(off, baseExpected.length); int actualLen = (int) Math.min(len, baseExpected.length - startOffset); return Arrays.copyOfRange(baseExpected, startOffset, startOffset + actualLen); } @Override public void tearDown() throws IOException { factory.tearDown(); } }; } private static class StringSourceFactory implements CharSourceFactory { @Override public CharSource createSource(String data) throws IOException { return CharSource.wrap(data); } @Override public String getExpected(String data) { return data; } @Override public void tearDown() throws IOException { } } private static class ByteArraySourceFactory implements ByteSourceFactory { @Override public ByteSource createSource(byte[] bytes) throws IOException { return ByteSource.wrap(bytes); } @Override public byte[] getExpected(byte[] bytes) { return bytes; } @Override public void tearDown() throws IOException { } } private static class EmptyCharSourceFactory implements CharSourceFactory { @Override public CharSource createSource(String data) throws IOException { return CharSource.empty(); } @Override public String getExpected(String data) { return ""; } @Override public void tearDown() throws IOException { } } private static class EmptyByteSourceFactory implements ByteSourceFactory { @Override public ByteSource createSource(byte[] bytes) throws IOException { return ByteSource.empty(); } @Override public byte[] getExpected(byte[] bytes) { return new byte[0]; } @Override public void tearDown() throws IOException { } } private abstract static class FileFactory { private static final Logger logger = Logger.getLogger(FileFactory.class.getName()); private final ThreadLocal<File> fileThreadLocal = new ThreadLocal Other Java examples (source code examples)Here is a short list of links related to this Java SourceSinkFactories.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.