001package org.kuali.common.util.xml.jaxb.adapter; 002 003import javax.xml.bind.annotation.adapters.XmlAdapter; 004 005import org.kuali.common.util.Assert; 006import org.kuali.common.util.Str; 007 008public final class FlattenStringAdapter extends XmlAdapter<String, String> { 009 010 public FlattenStringAdapter() { 011 this(FlattenConstants.DEFAULT_CR_REPLACEMENT, FlattenConstants.DEFAULT_LF_REPLACEMENT); 012 } 013 014 public FlattenStringAdapter(String carriageReturnReplacement, String linefeedReplacement) { 015 // No blanks because this needs to work in both directions (flatten + inflate) 016 Assert.noBlanks(carriageReturnReplacement, linefeedReplacement); 017 this.carriageReturnReplacement = carriageReturnReplacement; 018 this.linefeedReplacement = linefeedReplacement; 019 } 020 021 private final String carriageReturnReplacement; 022 private final String linefeedReplacement; 023 024 @Override 025 public String marshal(String string) { 026 if (string != null) { 027 return Str.flatten(string, carriageReturnReplacement, linefeedReplacement); 028 } else { 029 return null; 030 } 031 } 032 033 @Override 034 public String unmarshal(String value) { 035 if (value == null) { 036 return null; 037 } else { 038 return Str.inflate(value, carriageReturnReplacement, linefeedReplacement); 039 } 040 } 041 042 public String getCarriageReturnReplacement() { 043 return carriageReturnReplacement; 044 } 045 046 public String getLinefeedReplacement() { 047 return linefeedReplacement; 048 } 049 050}