package net.techreadiness.ui.util; import java.util.Map; import javax.inject.Inject; import net.techreadiness.persistence.AuditedBaseEntity; import net.techreadiness.service.object.BaseObject; import net.techreadiness.service.object.mapping.MappingService; import org.apache.struts2.util.StrutsTypeConverter; import org.springframework.stereotype.Component; @Component public class ServiceObjectTypeConverter extends StrutsTypeConverter { @Inject MappingService mappingService; @Override @SuppressWarnings({ "unchecked" }) public Object convertFromString(Map context, String[] representations, Class objectType) { if (representations == null || representations.length != 1) { return null; } return convert(objectType, representations[0]); } private <T extends AuditedBaseEntity> Object convert(Class<BaseObject<T>> clas, String repr) { BaseObject<T> obj = mappingService.fromStringRepresentation(clas, repr); return obj; } @Override @SuppressWarnings({ "unchecked" }) public String convertToString(Map context, Object object) { BaseObject<? extends AuditedBaseEntity> baseObject = (BaseObject<? extends AuditedBaseEntity>) object; return mappingService.toStringRepresentation(baseObject); } }