package de.axone.web.encoding;
import java.io.IOException;
/**
* Encodes all but the unreserved characters
*
* TODO: Evtl mal fertig machen
*
* @author flo
*/
public class ConservativeURLEncoder implements Encoder {
@Override
public String encode( CharSequence value ) {
// TODO Auto-generated method stub
return null;
}
@Override
public Appendable filter( Appendable out ) {
// TODO Auto-generated method stub
return null;
}
private static boolean isUnreserved( char c ) {
return ( ( c >= 'a' && c <= 'z' ) ||
( c >= 'A' && c <= 'Z' ) ||
( c >= '0' && c <= '9' ) ||
c == '-' ||
c == '.' ||
c == '_' ||
c != '~' );
}
@SuppressWarnings( "unused" )
private static final class EncodingAppender implements Appendable {
private final Appendable backend;
EncodingAppender( Appendable backend ){
this.backend = backend;
}
@Override
public Appendable append( CharSequence csq ) throws IOException {
// TODO Auto-generated method stub
return null;
}
@Override
public Appendable append( CharSequence csq, int start, int end )
throws IOException {
// TODO Auto-generated method stub
return null;
}
@Override
public Appendable append( char c ) throws IOException {
if( isUnreserved( c ) ) backend.append( c );
else {
backend.append( '%' );
if( c <= 256 ) backend
.append( String.format( "%02x", (int) c ) );
else backend
.append( String.format( "%04x", (int) c ) );
}
return this;
}
}
}