package com.acme.app; import java.util.Objects; public class CustomParam { private final String internalValue; public CustomParam( String internalValue ) { this.internalValue = internalValue; } public String computedValue() { return "Custom-" + internalValue; } /* package */ String internalValue() { return internalValue; } public static class ParameterBinder implements io.werval.api.routes.ParameterBinder<CustomParam> { @Override public boolean accept( Class<?> type ) { return CustomParam.class.equals( type ); } @Override public CustomParam bind( java.lang.String paramName, java.lang.String paramValue ) { return new CustomParam( paramValue.intern() ); } @Override public java.lang.String unbind( java.lang.String paramName, CustomParam paramValue ) { return paramValue.internalValue().intern(); } } @Override public int hashCode() { int hash = 5; hash = 83 * hash + Objects.hashCode( this.internalValue ); return hash; } @Override public boolean equals( Object obj ) { if( obj == null ) { return false; } if( getClass() != obj.getClass() ) { return false; } final CustomParam other = (CustomParam) obj; if( !Objects.equals( this.internalValue, other.internalValue ) ) { return false; } return true; } @Override public java.lang.String toString() { return computedValue(); } }