Project

General

Profile

Feature #1440

Updated by Miguel Ruiz Velasco 14 days ago

h1. Modificaciones a fuentes de Evaluación 

 h2. Quitar "WEB-INF.classes." del paquete 
 Es un efecto indeseable de la ingenieria inversa 

 <pre> 
 package WEB-INF.classes.<paquete>; 
 </pre> → <pre> 
 package <paquete>; 
 </pre> 

 h2. Conflicto java.util.Date y java.sql.Date 

 Comentar: 
 <pre><code class="java"> 
 import java.sql.Date; 
 </code></pre> 
 Para que sólo quede: 
 <pre><code class="java"> 
 import java.util.Date; 
 </code></pre> 


 h2. Modificar creacion de conexion a base de datos de try a try-with-resource 

 Obviamente respetar el query y externalizar a una variable) 

 <pre><code class="java"> 

         try (Conexion con = new Conexion(); 
              Connection conn = con.ConexionDB_06(); 
              CallableStatement cs = conn.prepareCall("{call sp_buscar_Ciudad (?,?,?)} ")) { 
 </code></pre> 


 a: 

 <pre><code class="java"> 
 String consulta = "SELECT CL_PAIS, NB_PAIS, CL_CVE_RENAPO FROM C_PAIS WHERE CL_PAIS != 0"; 
 try (          Connection conn = Conexion.ConexionDB_06(); 
              PreparedStatement pst = conn.prepareStatement(consulta); 
             ) { 
 </code></pre> 


 h3. Quitar cierres de conexión 

 (puede que esté combinado con el resultset) 

 <pre><code class="java"> 
 finally { 
         if (conn != null) 
           try { 
             conn.close(); 
           } catch (SQLException er) { 
             er.printStackTrace(); 
           }   
       }  
 </code></pre> 

 Se quitará porque el try-with-resources cierra automáticamente 


 h2. Y los resultset de try a try-with-resource 

 Tiene que ser uno distinto la de arriba 

 <pre><code class="java"> 
 ResultSet resultSet = null; 
 ... 
 if (call.execute()) { 
           resultSet = call.getResultSet(); 
 ... 
 } 
 </code></pre> 

 a:  

 <pre><code class="java"> 
  if (call.execute())  
         try ( ResultSet resultSet = call.getResultSet(); ){ 
 ... 
 } // si tiene un catch () hay que respetarlo 
 </code></pre> 

 H3. y quitar los cierres tambien 

 Puede que esté combinado con la conexion 


 <pre><code class="java"> 
 finally { 
         if (resultSet != null) 
           try { 
             resultSet.close(); 
           } catch (SQLException er) { 
             er.printStackTrace(); 
           }   
       }  
 </code></pre> 

 Se quitará porque el try-with-resources cierra automáticamente 



 h2. Mapper a minusculas 

 <pre><code class="java"> 
 private static final ObjectMapper MAPPER = new ObjectMapper(); 
 </code></pre> 

 a 

 <pre><code class="java"> 
 private static final ObjectMapper mapper = new ObjectMapper(); 
 </code></pre> 

 H2. Cambiar de json.simple a Jackson 

 Sería mejor cambiar a un DTO (data transfer object), pero por falta de tiempo lo dejaremos con estructuras genéricas. 

 Borrar: 
 <pre><code class="java"> 
 import org.json.simple.JSONObject; 
 </code></pre> 


 Cambiar: 
 <pre><code class="java"> 
 JSONObject js = new JSONObject(); 
 ... 
 js.toJSONString(); 
 </code></pre> 

 a 

 <pre><code class="java"> 
 ObjectNode js = MAPPER.createObjectNode(); 
 ... 
 response.getWriter().println(MAPPER.writeValueAsString(err)); 
 </code></pre> 


 h2. Loggers (poner getClass(), excepto en loggers que sean estáticos) 

 Comentar: 
 <pre><code class="java"> 
 import java.util.logging.Level; 
 import java.util.logging.Logger; 
 </code></pre> 

 Agregar: 
 <pre><code class="java"> 
 import org.slf4j.Logger; 
 import org.slf4j.LoggerFactory; 
 </code></pre> 

 Cambiar: 
 <pre><code class="java"> 
 private static final Logger logger = Logger.getLogger(*Registro_Can.class.getName()*); 
 </code></pre> 

 por: 
 <pre><code class="java"> 
 private static final Logger logger = Logger.getLogger(getClass()); 
 </code></pre> 



 h2. Logging statements en métodos 

 Es importante que TODOS tengan un mensaje. 

 Sustituir: 
 <pre><code class="java"> 
 Logger.getLogger(Controller.ServletBusquedaGralAsp.class.getName()).log(Level.SEVERE, (String)null, ex); 
 </code></pre> 

 por: 

 <pre><code class="java"> 
 logger.info("<nombre del metodo> <mensaje> {} {}", <mensaje>", variable1, variable2); 
 </code></pre> 

 h3. Si es error (por ejemplo en un catch): 

 
 <pre><code class="java"> 
 logger.error("<nombre del metodo> <mensaje> {} {} ...", <mensaje>", variable1, variable2, ..., ex); 
 </code></pre> 

 h2. Cambiar servlet de javax a jakarta 

 <pre><code class="java"> 
 import javax.servlet.ServletException; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 </code></pre> 
 a 
 <pre><code class="java"> 
 import jakarta.servlet.ServletException; 
 import jakarta.servlet.http.HttpServlet; 
 import jakarta.servlet.http.HttpServletRequest; 
 import jakarta.servlet.http.HttpServletResponse; 
 </code></pre> 

 h2. logging warn en metodos copiados 

 En los métodos que se copiaron de la versión anterior, hay que ponerle un logger.warn indicando eso, por si hay errores 



Back