Feature #1440
Updated by Francisco Villegas 5 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. 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 = LoggerFactory.getLogger(*Registro_Can.class.getName()*);
</code></pre>
por:
<pre><code class="java">
private static final Logger logger = LoggerFactory.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> {} {}", variable1, variable2);
</code></pre>
Las variables se ponen entre "{}" (uno por variable y se pueden intercalar en el texto)
h3. Si es error (por ejemplo en un catch):
<pre><code class="java">
logger.error("<nombre del metodo> <mensaje> {} {} ...", variable1, variable2, ..., ex);
</code></pre>
Las variables se ponen entre "{}" (uno por variable y se pueden intercalar en el texto). la excepción final no requiere "{}".
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