+
+public void write(final Object value) {
+ AppLogger.LOGGER.appVersion("ContentWriter", 1, 0, 0, "Beta1"); (1)
+ Objects.requireNonNull(value, ErrorMessages.MESSAGES.nullParam("value")); (2)
+ write(Objects.requireNonNull(value, ErrorMessages.MESSAGES.nullParam("value")).toString());
+}
+
+
+public void write(final String value) {
+ AppLogger.LOGGER.appVersion("ContentWriter", 1, 0, 0, "Beta1");
+ if (Objects.requireNonNull(value, ErrorMessages.MESSAGES.nullParam("value")).isEmpty()) {
+ throw ErrorMessages.MESSAGES.invalidValue(value); (3)
+ }
+ try {
+ synchronized (outputLock) {
+ writer.write(value);
+ writer.newLine();
+ if (autoFlush) {
+ flush();
+ }
+ }
+ } catch (IOException e) {
+ throw ErrorMessages.MESSAGES.operationFailed(UncheckedIOException::new, e, "write"); (4)
+ }
+}
+
+@Override
+public void close() {
+ try {
+ synchronized (outputLock) {
+ writer.close();
+ }
+ AppLogger.LOGGER.tracef("ContentWriter %s was successfully closed.", this);
+ } catch (Exception e) {
+ throw ErrorMessages.MESSAGES.closeFailure(e, this);
+ }
+}
+
+
+public void safeClose() {
+ try {
+ synchronized (outputLock) {
+ writer.close();
+ }
+ AppLogger.LOGGER.tracef("ContentWriter %s was successfully closed.", this);
+ } catch (Exception e) {
+ AppLogger.LOGGER.closeFailure(e, this); (5)
+ }
+}
+