Capturar MaxUploadSizeExceededException en Spring Portlet MVC

En el applicationContext.xml

	<bean id="portletMultipartResolver"
		class="org.springframework.web.portlet.multipart.CommonsPortletMultipartResolver">
		<property name="maxUploadSize" value="1000000" />
	</bean>
	
	<bean class="org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver"/>

en el controlado:

	@ExceptionHandler(MaxUploadSizeExceededException.class)
	public ModelAndView handleException1(RenderRequest req, RenderResponse res, Object handler, Exception exception)
	{
		ModelAndView modelAndView = new ModelAndView("uploadFile");
		modelAndView.addObject("message", exception.getMessage());
		return modelAndView;
	}
Capturar MaxUploadSizeExceededException en Spring Portlet MVC

Conversion con/de Enumerados

El problema: el API de Factura electronica tiene un enumerado llamado FacturaeVersion. Este contiene el siguiente string «FACTURAE_32», segun la version, varian los ultimos digitos, estos pueden ser: 30, 31, 32. Cuando necesitas usar las clases que validan el xml, o la contabilidad, o la firma del xml necesitas indicar la version de la siguiente manera: «3.0», «3.1», «3.2». ¿Porque? porque casi solo contemplan que el xml esta en fichero y no como un Stream. La version dentro del xml esta de esta ultima forma. La gran pregunta seria ¿Porque denominar «FACTURAE_31» si luego vas a usar «3.0»?.

La solucion:

public enum FacturaeVersionConverter {

	v30("3.0", FacturaeVersion.FACTURAE_30),
	v31("3.1", FacturaeVersion.FACTURAE_31),
	v32("3.2", FacturaeVersion.FACTURAE_32);

	private FacturaeVersion facturaeVersion;
	private String strVersion;

	FacturaeVersionConverter(String strVersion, FacturaeVersion facturaeVersion){
		this.facturaeVersion = facturaeVersion;
		this.strVersion = strVersion;

		EnumHelper.correspondencesMap.put(strVersion, this);
	}

	public String getStringVersion(){
		return strVersion;
	}

	public FacturaeVersion getFacturaeVersion(){
		return facturaeVersion;
	}

    public static FacturaeVersionConverter convert(String strVersion) {
        return EnumHelper.correspondencesMap.get(strVersion);
    }

    public static FacturaeVersionConverter convert(FacturaeVersion facturaeVersion) {
    	for(Entry entry: EnumHelper.correspondencesMap.entrySet()){
    		if(entry.getValue().getFacturaeVersion().name().equals(facturaeVersion.name())){
    			return entry.getValue();
    		}
    	}

        return null;
    }

	private static final class EnumHelper {

        static final Map correspondencesMap =
                new HashMap();
    }
}

La llamada a la solucion:

String strVersion = FacturaeVersionConverter.convert(FacturaeVersion.FACTURAE_30).getStringVersion();
FacturaeVersion facturaeVersion = FacturaeVersionConverter.convert("3.1").getFacturaeVersion();
Conversion con/de Enumerados