Hola,
Si alguna vez te has realizado la siguiente pregunta: Por qué usar Enum sobre Constantes en Java? o se les han realizado esa pregunta en el trabajo o en una entrevista, las ventajas son las siguientes:

¿Por qué enums?
  1. Constantes fácilmente relacionadas, más legibles y que expresan una clara intencionalidad.
  2. Ahorro en tiempo de ejecución y compilación, ya que typescript asigna sus valores como constantes declaradas por cada asignación.
  3. Fácilmente refactorizable.
Cuando no utilizar enums:
  • Cuando cualquiera de sus propiedades pueda ser reasignada en tiempo de ejecución.
  • Cuando se pretenda ampliar la cantidad de propiedades de forma indefinida. La naturaleza de un enum debe estar definida y constatada por la utilidad que se le vaya a dar.


Si se quiere profundizar más, tengan en cuenta lo siguiente:

Primero, en las versiones anteriores a la versión 1.5 o 5 de Java no existían los tipos de datos enum con lo que se debía usar constantes de la siguiente forma:

public static String COLOR_ROJO = "rojo";
public static String COLOR_VERDE = "verde";
public static String COLOR_AZUL = "azul";

A partir de la versión 5 de Java se incorporarón al lenguaje los tipos de datos enumerados con el objetivo de mejorar varios aspectos sobre el uso de las constantes.

Segundo, tener en cuenta sus definiciones:

const
Un dato que no va a ser modificador a lo largo de un programa, es una constante:

const DEFAULT_COLOR: string = 'red';

Esto es aplicable a un conjunto de datos también.

const DEFAULT_CONFIGURATION: any {
    APP_NAME: ‘Nombre de mi programa‘,
    AUTHOR: ‘Branko Fuenzalida’,
    BUILD: 34,
    VERSION: ‘1.0.0’
};

enum
Un conjunto de constantes relacionadas entre si por un factor común, es un Enum:

enum Colors { 
    enum Colors {
        Blue, // 0 Blue = 'BLUE',
        Green, // 1 Green = 'GREEN',
        Purple, // 2 Purple = 'PURPLE',
        Red // 3 Red = 'RED'
    }; 
};

Si no se indica un valor para cada propiedad, se le es asignado una consecución de números en incremento empezando por el cero.

Básicamente, un enum en Java es un conjunto fijo y relacionado de constantes como pueden ser los días de la semana y deberían usarse siempre que se necesite representar un conjunto de constantes con esas características. La característica de relacionado es importante, las constantes solo lo están por la convención que sigamos al darles un nombre. Los enums se definen de la siguiente forma:

public enum Dia { 
    LUNES, 
    MARTES, 
    MIERCOLES, 
    JUEVES, 
    VIERNES, 
    SABADO, 
    DOMINGO 
}

public enum Color { 

    ROJO("FF0000"), 
    VERDE("00FF00"), 
    AZUL("0000FF");

    private final String rgb; Color(String rgb) { this.rgb = rgb; } 

    public String getRGB() { return rgb; } 

}

Como son constantes por las convenciones del lenguaje se escriben en mayúscula. Pero los enum son algo más que constantes, la clase del tipo del enum puede definir métodos y otras propiedades, como el método getRGB del ejemplo anterior o en el siguiente caso que se usa el método values() y que se añade automáticamente a todos los enums.

for (Dia d : Dia.values()) {
    System.out.printf("El día de la semana %s", d);
}

for (Color c : Color.values()) {
    System.out.printf("El color %s tiene como RGB %s", c, c.getRGB());
}

Ventajas de usar Enum sobre Constantes:
  • Algunas cosas que hacen de los enum muy interesantes es que al definir las constantes de este modo se obtiene «type safety» (Seguridad de tipos para disminuir o prevenir los errores de tipos). Si decimos que un método de una clase recibe un enum el compilador comprobará en tiempo de compilación que cuando lo usamos le pasemos realmente un valor de ese enum, cosa que con constantes definidas como int o String el compilador solo comprueba que pasemos un int o String y por tanto podremos pasar cualquier valor aunque no sea una de las constantes esperadas por el método.
  • Otra de las ventajas que ya se ve en ejemplo anterior es que los enums pueden tener comportamiento a través de los métodos que defina.
  • También, específicamente diseñadas para los enums existen las clases EnumSet y EnumMap que trabajan con enums de forma más eficiente que con Set y Map.
  • Además, los enums pueden ser usados en expresiones switch cosa que con constantes de tipo String solo podemos hacer a partir de la versión 7 de Java.
  • Para comparar valores de enums podemos hacerlo con el operador == o con el método equals. Usar el operador == tiene la ventaja de evitar un posible NullPointerException y de que el compilador comprueba que se estén comparando dos valores del mismo enum.
== nunca lanza NullPointerException
Dia dia = null; if (dia == Dia.LUNES); // se ejecuta
if (dia.equals(Dia.LUNES)); // lanza NullPointerException

== comprueba compatibilidad de tipos en tiempo de compilación
if (Dia.LUNES.equals(COLOR.ROJO)); // compila bien
if (DIA.LUNES == COLOR.ROJO); // no compila, incompatibilidad de tipos

Tomado literalmente de:
Hola,
Alguna vez han escuchado o usado el comando de Git: git cherry-pick


Pues acompañame y te lo explico.

git cherry-pick: Es un potente comando que permite que las confirmaciones arbitrarias de Git se elijan por referencia y se añadan al actual HEAD de trabajo. La ejecución de git cherry-pick es el acto de elegir una confirmación de una rama y aplicarla a otra. git cherry-pick puede ser útil para deshacer cambios. 
Por ejemplo, supongamos que una confirmación se aplica accidentalmente en la rama equivocada. Puedes cambiar a la rama correcta y ejecutar git cherry-pick en la confirmación para aplicarla a donde debería estar.

Ejemplo de uso:

git cherry-pick <commit-SHA>

En donde <commit_SHA> es el identificar corto del commit que se quiere seleccionar y que está conformado por 7 dígitos (mejor conocido como short SHA-1).

Como obtener el short SHA-1:
Ejecutando por consola el comando:

git log --oneline

Y se copia el código que aparecé al inicio de cada commit y listo, el comando completo de git cherry-pick quedaría así:

git cherry-pick 5677388

Que pasa si hay algún conflicto?
En caso de conflictos se soluciona igual que se hace durante un merge regular y luego se ejecuta lo siguiente:

git add .
git cherry-pick --continue

En caso de querer abortar la ejecución del comando git cherry-pick:

git cherry-pick --abort

Se debe tener en cuenta que aunque git cherry-pick es una herramienta útil, pero no siempre es una práctica recomendada. Ejecutar git cherry-pick puede generar confirmaciones duplicadas y, en muchos casos en los que su ejecución sí funcionaría, son preferibles las fusiones tradicionales. 
Por lo tanto, git cherry-pick es una herramienta útil solo en algunos casos

Algunos escenarios en los que es recomendable utilizar este comando:
  1. Se requiere probar en la rama principal algunas modificaciones especificas de alguna rama en particular.
  2. Se tiene una rama en donde se hicieron commits que nunca se subieron a la rama principal y se necesitan subir.
  3. Un bug encontrado en develop que se necesita subir a una rama hotfix que eventualmente se desplegará en Producción.

En resumen la ejecución del comando git cherry-pick es potente y cómoda, y resulta increíblemente útil en algunos casos. Pero, la ejecución de git cherry-pick no debería aplicarse equivocadamente en lugar de git merge o git rebase.

Nota:
Se recomienda que se lea con atención los mensajes del terminal, durante cada ejecución, puesto que si ocurre algún error, probablemente la terminal sugiera una solución.

Tomado de:
Bastet o Bast es una diosa del antiguo Egipto, adorada desde la Segunda Dinastía (2890 a. C.). 
Representa la protección, el amor y la armonía. 
Protectora de los hogares y templos. 
Fue la diosa de la guerra en el Bajo Egipto, región del Delta del Nilo, antes de la unificación de las culturas del antiguo Egipto.


Nombre egipcio: Bastet.​
Nombre griego: Bastis.
Deidad griega: Artemisa.

Mitología

Es la personificación de los cálidos rayos del Sol y ejercía sus poderes benéficos. Encarnaba los aspectos pacíficos de diosas peligrosas como Sejmet ​et, que expresaban las cualidades maléficas del Sol. Como ojo de Atum​, estaba asociada a la Luna y protegía los nacimientos y a las embarazadas de las enfermedades y los malos espíritus.

Es una diosa pacífica pero, cuando se enfada, se transforma en una leona, asimilándose a la diosa Sejmet y, algunas veces, es mucho más violenta que ésta. Al igual que el animal totémico que la representa, Bastet era una diosa impredecible que podía mostrarse tierna o feroz en cualquier momento.

Se la identificaba con la estrella Sirio, de quien se la consideraba Señora y con la deidad sumeria Inanna. Según algunos eruditos, como M. Oldfield Howey, su nombre significa la desgarradora, pese a su carácter principalmente benigno.

Culto

Su culto se remonta a los primeros tiempos de la civilización egipcia, habiendo ganado notoriedad más tarde, y se la menciona en los Textos de las Pirámides y el Libro de los muertos.

La antigua ciudad de Bubastis (hoy Zagazig, en el delta del Nilo) estaba consagrada a su culto, y de allí proceden centenares de gatos momificados que fueron enterrados en su memoria. Su culto fue tan importante que en sus templos se criaron gatos que eran su representación, y a la muerte de estos, eran cuidadosamente momificados, enterrándolos en tumbas específicas para ellos. Encontramos necrópolis de este tipo en Bubastis, Saqqara, Tanis, Beni Hassan y Tebas.


Los egipcios consideraban a los gatos como manifestaciones de la diosa Bastet y, cuenta la leyenda, que Egipto se rindió ante los persas cuando estos portaron gatos en sus escudos, ya que los persas sabían que los egipcios eran capaces de rendirse antes de lastimar a algún gato. Así fue como perdieron a la ciudad de Pelusio, la actual Puerto Saíd.

En la ciudad de Bubastis se celebraba en honor a esta diosa la "Fiesta de la embriaguez", donde se consumía vino en abundancia, se bailaba y se hacía sonar la música. Esta fiesta se realizaba para que la diosa Bastet se mostrara contenta y halagada, y de este modo no tomara el aspecto de una leona enfurecida.

Iconografía

Se representaba bajo la forma de un gato doméstico, o bien como una mujer con orejas, cola, dientes y ojos de gato, que siempre lleva un ankh (cruz de la vida egipcia) o en otros casos un sistro (instrumento musical) debido a que le agradaba especialmente que los humanos bailaran y tocaran música en su honor. Diosa de Bubastis, ciudad del Delta, en la que ya aparecen restos de su culto en torno a la IV dinastía.

Fuente:
Vasili Aleksándrovich Arjípov (en ruso: Василий Александрович Архипов; Zvorkovo, Óblast de Moscú, 30 de enero de 1926 - Zheleznodorozhny, Óblast de Moscú, 19 de agosto de 1998) fue un oficial naval soviético. Durante la crisis de los misiles en Cuba, impidió el lanzamiento de un misil nuclear y por tanto, una posible guerra nuclear. 


Thomas Blanton expresó en 2002, cuando era director del National Security Archive, que «un hombre llamado Vasili Arjípov salvó el mundo».

Crisis de los misiles de Cuba

El 27 de octubre de 1962, durante la crisis de los misiles de Cuba, un grupo de once destructores de la armada de los Estados Unidos y el portaviones USS Randolph ubicó al submarino B-59 soviético clase Foxtrot, con armas nucleares, cerca de Cuba y comenzaron a lanzar cargas de profundidad para forzar al submarino a emerger e identificarse. Las cargas produjeron un apagón del sistema eléctrico del submarino (a excepción de las luces de emergencia). La temperatura comenzó a subir así como la concentración de CO2. Algunos marineros se desmayaron por ello. El capitán del submarino, Valentín Grigórievich Savitsky, creyendo que la guerra ya habría empezado, quiso lanzar un misil nuclear. A pesar de que los soviéticos habían sido informados de que se estaban utilizando cargas de profundidad de prácticas, es probable que esa información no llegara al B-59.

Los tres oficiales a bordo en el submarino (Savitsky, el oficial político Iván Semiónovich Máslennikov, y el segundo al mando Arjípov) tenían autorización para lanzar el misil si acordaban hacerlo por unanimidad. En ese momento comenzaron una discusión en la que solo Arjípov estaba en contra del lanzamiento,​ quien finalmente persuadió a Savitsky para emerger el submarino y esperar órdenes de Moscú. Se evitó así una posible guerra nuclear.​ Las acciones tomadas por Arjípov sirvieron, en parte, como inspiración para la película estadounidense Marea roja.

Vida posterior

Después de la crisis de los misiles de Cuba, Arjípov continuó en la armada soviética. Fue ascendido a contralmirante en 1975 y se convirtió en jefe de la Academia naval Kírov. Fue ascendido a vicealmirante en 1981 y se retiró a mediados de los años 80. Posteriormente se asentó en Zheleznodorozhny, en el Óblast de Moscú, donde murió en 1998.

En la conferencia conmemorativa del 40.º aniversario de la crisis de los misiles de Cuba celebrado en La Habana el 13 de octubre de 2002, Robert McNamara, Secretario de Defensa de Estados Unidos durante la crisis, admitió que la guerra nuclear había estado más cerca de lo que la gente había pensado.

En el libro Kubínskaya Samba Kvarteta Fokstrótov de Aleksandr Mozgovoy, del 2002, retiró al comandante Vadim Pávlovich Orlov, un participante en los eventos, presentándolos menos dramáticos, diciendo que el capitán perdió los estribos pero que finalmente se calmó.

Tomado de:
Arnulfo de Metz (cerca del río Mosela, 31 de agosto de 582-Remiremont, 18 de julio de 640), conocido como san Arnulfo de Metz, fue un obispo franco y consejero e intendente del palacio de los merovingios de Austrasia, cargo al que renunció para abrazar la vida eremítica. Es venerado como santo por la Iglesia católica como la Ortodoxa.

Conocido como el 'patrono de la cerveza'. «No bebáis agua, bebed cerveza», dijo san Arnulfo a los fieles de su diócesis al constatar los estragos de una epidemia causada por la baja calidad del agua en los pozos de la región.


San Arnulfo dedicó gran parte de sus esfuerzos a prevenir a la gente de la época y a los miembros de su feligresía sobre los peligros, a menudo mortales, de beber agua contaminada, ya que frecuentemente sucedía que los pozos estaban contaminados, sugiriendo en su lugar la bebida de la cerveza fermentada. A la postre y por sus milagros se convirtió en el patrono de los cerveceros.

Del matrimonio de su hijo Ansegisel con Bega, hija de Pipino de Landen, nace Pipino de Heristal, bisabuelo de Carlomagno, es decir que en él se encuentra uno de los orígenes de la Dinastía Carolingia. Por esta vía, es antepasado de buena parte de los monarcas europeos, como Hugo Capeto, Enrique VIII de Inglaterra y Luis XIV de Francia; y en la actualidad, Carlos III del Reino Unido, Felipe VI de España, Federico X de Dinamarca, Carlos XVI Gustavo de Suecia y Harald V de Noruega son lejanos descendientes de Arnulfo de Metz. Esta genealogía es clave para las reconstrucciones prosopográficas que hace Christian Settipani buscando encontrar linajes ancestrales.

Cada 18 de Julio se conmemora su día en la Iglesia Católica Ortodoxa.

Los tres milagros de Arnulfo de Metz
  1. El primero de los milagros ocurre cuando Arnulfo lanzó su anillo de obispo al río Mosela, atormentado por las guerras y sus pecados, rogándole a Dios que se lo devolviera en caso de absolución. Años más tarde, un pescador llevó un pez a la cocina del obispado, dentro del cual se encontró el anillo. Este se conserva en la catedral de Metz.
  2. El segundo milagro ocurrió cuando decidió renunciar como Obispo. En ese momento, se produjo un incendio en los sótanos del Palacio Real que amenazaba con extenderse a la ciudad de Metz. El amor a su pueblo y su coraje hizo que se pusiese frente al fuego pronunciando la frase «Si Dios quiere que me consuma, estoy en sus manos». El incendio se detuvo de inmediato.
  3. Y el tercer milagro, que lo convertiría en santo patrono de los cerveceros: Tras su fallecimiento, los habitantes de Metz pidieron que su cuerpo fuese trasladado de nuevo a su ciudad para ser enterrado en su iglesia. El camino que llevaría de vuelta a san Arnulfo era demasiado largo, por lo que se decidió parar la procesión ceremonial en la ciudad de Champigneulles, Francia. Los fieles que pretendieron adquirir cervezas en una taberna se encontraron con que sólo quedaba un tarro, que tendrían que repartir entre todos. Pero, para su asombro, el tarro de cerveza nunca se terminaba, por lo que todos y cada uno de ellos pudieron saciar su sed.


“Del sudor del hombre y del amor de Dios, la cerveza vino al mundo”

Basado en:

Hola,
Los siguientes métodos, permiten recibir dos fechas en formato UnixTime y escriben en un System.out.println cual es la fecha mas antigua y retornan cual es la fecha mas reciente en formato UnixTime, en java.

Forma #1 con la clase Instant:

public static Long compareUnixTimesWithInstant(Long unixTime1, Long unixTime2) {

// Convertir los UnixTime a objetos de fecha y hora
Instant date1 = Instant.ofEpochSecond(unixTime1);
Instant date2 = Instant.ofEpochSecond(unixTime2);

// Formateador para mostrar las fechas de forma legible
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
.withZone(ZoneId.systemDefault());

// Comparar las fechas y mostrar cual es la más antigua
if (date1.isBefore(date2)) {
System.out.println("La fecha mas antigua es: " + formatter.format(date1));
// retorna la fecha mas reciente
return unixTime2;
} else {
System.out.println("La fecha mas antigua es: " + formatter.format(date2));
// retorna la fecha mas reciente
return unixTime1;
}

}


Forma #2 con la clase Date:

public static Long compareUnixTimesDate(Long unixTime1, Long unixTime2) {

// Convertir los UnixTime a objetos Date
Date date1 = new Date(unixTime1 * 1000);
Date date2 = new Date(unixTime2 * 1000);

// Comparar las fechas y mostrar cual es la más antigua
if (date1.before(date2)) {
System.out.println("La fecha mas antigua es: " + date1);
// retorna la fecha mas reciente
return unixTime2;
} else {
System.out.println("La fecha mas antigua es: " + date2);
// retorna la fecha mas reciente
return unixTime1;
}

}
Hola,

El siguiente método en Java permite convertir una fecha de tipo Long en formato UnixTime a Date:

public static Date convertUnixTimeToDate(Long calendarUnixTime) {
    // Multiplicar por 1000 para convertir de segundos a milisegundos
    long timestamp = calendarUnixTime * 1000;
    return new Date(timestamp);
}

El valor de entrada es: 1724940994L

Y retorna lo siguiente: Thu Aug 29 09:16:34 COT 2024
Hola,


Para evitar que el SonarCloud cuando este escaneando un repositorio marque advertencia por: Duplications



Se debe implementar el siguiente comando:
sonar.cpd.exclusions=**/NombreClaseJava.java,**/NombreModulo/**

En la clase:
sonar-project.properties

Y listo, así, el SonarCloud omitirá revisar la duplicidad en las clases y módulos configurados en ese comando.
La mítica canción Asia, del género de música tropical lanzada en el año de 1989, cantada por el legendario Willie Colón y Legal Alien para su álbum: Top Secrets; bajo el Sello discográfico: Fania Records; tiene una historia bastante peculiar. Acompañame yo te la cuento.


La Nostalgia de un Amor Perdido en 'Asia' de Willie Colón

La canción 'Asia' de Willie Colón, una figura prominente de la salsa y el jazz latino, sumerge a los oyentes en una atmósfera de nostalgia y anhelo. La letra refleja la experiencia de alguien que ha perdido a un ser querido, posiblemente una pareja o un familiar fallecido, y que ahora siente el vacío dejado por su ausencia. La repetición de 'Asia llamando' sugiere una conexión profunda y posiblemente una llamada interna hacia esa persona o lugar que evoca recuerdos y emociones intensas.

El narrador menciona cómo la casa, aunque llena de objetos, se siente vacía sin la presencia de 'Asia'. Esto puede interpretarse como una metáfora de cómo las posesiones materiales no pueden compensar la falta de amor y conexión emocional. La mención de 'ojos tristes y a la vez llenos de amor' y los 'secretos' que guardan, podría indicar una historia no contada, llena de complejidad y sentimientos no resueltos.

La canción también toca temas de separación y la distancia, tanto física como emocional, que puede existir entre las personas. El 'mar de agua y tiempo' que separa al narrador de 'Asia' simboliza las barreras que impiden que estén juntos. La letra transmite un deseo persistente de reencontrarse con el ser amado y la esperanza de que, a pesar de la distancia, el amor pueda perdurar.

Letra completa de la canción:

Veo tu cara en la plaza
No me atreví a llamar
Al doblar la esquina
Te oía cantar

Esta casa no es mía
Ella misma te extraña
Quedo rico de cosas
Pero pobre en el alma

Este misterio que no puedo comprender
¿Qué le ha pasado a mi Asia?
¿Para dónde se fue?
Ojos tristes y a la vez llenos de amor
¿Guardarán tus secretos?
¿Cuál será tu dolor?

Ah-ah-ah, siento Asia llamando
Ah-ah-ah, siento Asia llamando
Ah-ah-ah, siento Asia llamando
Ah-ah-ah, siento Asia llamando

En un campo remoto
En la plena ciudad
Y hasta más te sentía
A la orilla del mar

Esta casa no es mía
Ella misma te extraña
Quedo rico de cosas
Pero pobre del alma

Este misterio que no puedo comprender
¿Qué le ha pasado a mi Asia?
¿Para dónde se fue?
Ojos tristes y a la vez llenos de amor
¿Guardarán tus secretos?
¿Cuál será tu dolor?

Ah-ah-ah, siento Asia llamando
Ah-ah-ah, siento Asia llamando
Ah-ah-ah, siento Asia llamando
Ah-ah-ah, siento Asia llamando

Como un sueño te me fuiste
Y ahora solo pienso en verte
Como quisiera tenerte
Y amarte toda la vida

Asia, fuiste todo para mí
Óyeme, Asia

El mar que nos separa
Un mar de agua y tiempo
Canta el triste lamento que yo siento todavía

Solo queda tu recuerdo
Del tiempo que aquí vivías
Si tú fueras toda mía, todo cambiaría
Dalo por cierto

No me agarres la camisa que voy andando (Asia llamando)
Asia, Asia, siempre en ti pensando (Asia llamando)
Mira mis ojos que están llorando (Asia llamando)
Yo no me voy, yo no me voy
Yo me voy aunque sea caminando (Asia llamando)

Eh, quiero sentirte junto a mi pecho (Asia llamando)
Para entregarme todo en tu lecho (Asia llamando)
Como un sueño te me fuiste (Asia llamando)
Y solo quedan recuerdos tristes

Fuente:
Hola,

Si requieren validar en una sola línea, si un JSONObject contiene un campo y sino, colocarle un valor por defecto a dicho campo en Java, pueden realizar lo siguiente:



import org.json.JSONObject;

JSONObject jsonData = new JSONObject("{\"nombre\":\"Juan\"}");

jsonData.put("edad", jsonData.optInt("edad", 30));


Explicación:

En este ejemplo, si el campo "edad" no está presente en jsonData, se añadirá con el valor por defecto de 30. Si "edad" ya existe, no se modificará, ni se agregara nuevamente.

Hola,

Query que permite obtener los atributos de una tabla en PostgreSQL:


SELECT

    column_name, -- nombre de columnas

    data_type, -- tipo de dato

    character_maximum_length, -- tamaño maximo dato

    numeric_precision, -- precision numerica

    numeric_scale, -- escala numerica

    is_nullable -- es nulo?

FROM

    information_schema.columns

WHERE

    table_schema = 'app_td_seguro_agricola' -- ESQUEMA DE LA TABLA

    AND table_name = 'parametros_ubicacion'; -- NOMBRE DE LA TABLA

Hola,

Si estas dentro del Terminal de un IDE de un repositorio gradle y tratas de ejecutar algún comando de gradlew, ejemplo:

./gradlew --version

Y te sale el error:

zsh: permission denied: ./gradlew

Esto se debe a que el script gradlew no tiene permisos de ejecución.

Para solucionarlo, se deben cambiar los permisos del archivo gradlew para hacerlo ejecutable, de la siguiente forma:

1. Ejecutar el siguiente comando para cambiar los permisos del archivo gradlew:

chmod +x gradlew

2. Ahora, vuelve a ejecutar el comando:

./gradlew --version

El sistema, ahora si ejecuta correctamente y muestra la información solicitada:


Listo, eso es todo.
Hola,
Si al mockear una clase estática con Java, les sale el siguiente error:

org.mockito.exceptions.base.MockitoException: For com.bolivar.proteccion.creditos.common.util.UtilitiesExecuteRule, static mocking is already registered in the current thread To create a new mock, the existing static mock registration must be deregistered

La clase estática esta definida así:

public static class UtilitiesExecuteRule;

La mockean de la siguiente manera:

private MockedStatic<UtilitiesExecuteRule> utilitiesExecuteRule;

Y crean un metodo @BeforeEach:

@BeforeEach 
void setUp() { 
utilitiesExecuteRule = mockStatic(UtilitiesExecuteRule.class); 

Esto se debe a que ya se ha registrado un mock estático para la clase UtilitiesExecuteRule.java en el hilo de ejecución actual y estás intentando registrar otro. Esto puede suceder si estás utilizando @Mock o mockStatic() en diferentes partes de tu código y estas partes están siendo ejecutadas en el mismo hilo.

Para solucionar este problema, necesitan asegurarse de que solo se registre un mock estático para la clase UtilitiesExecuteRule.java

Esto se hace de la siguiente forma:

1. Dentro de la clase Test, se define la variable de la clase estática así:

private MockedStatic<UtilitiesExecuteRule> utilitiesExecuteRule;

2. Se crean dos métodos un @BeforeEach y un @AfterEach

@BeforeEach 
void setUp() { 
utilitiesExecuteRule = mockStatic(UtilitiesExecuteRule.class);
}

@AfterEach
void afterTest() {
utilitiesExecuteRule.close();
}

Esto con el fin de que cada instancia de la clase estática mockeada, viva y muera en la clase Test que la esta utilizando.

3. Finalmente, se mockea un método de dicha clase de la siguiente forma:

utilitiesExecuteRule.when(
() -> UtilitiesExecuteRule.metodoAMockear(anyString(), anyString(), anyString())
).thenReturn(responseMockeadoDelMetodo);

Listo, eso es todo.
Espero que les haya servido.
Hola,
Si tienen una variable con un valor configurado en un archivo application.yaml o en una infra y requieren mockear dicho valor en un test para una prueba unitaria hagan lo siguiente:


1. En el archivo: application.yaml:

titulo:
    valorFijo: MiValorFijo


2. En la clase: MiClaseDeNegocio.java que invoca este valor fijo: 

@Value("${titulo.valorFijo}")
private String VALOR_VARIABLE_FIJA;


3. En la clase: MiClaseDeNegocioTest.java que mockea este valor fijo:

@InjectMocks
private MiClaseDeNegocio miClaseDeNegocio;
  
private String VALOR_VARIABLE_FIJA = "MiVariableFija";


@BeforeEach
public void setUp() {

ReflectionTestUtils.setField(miClaseDeNegocio, "VALOR_VARIABLE_FIJA", VALOR_VARIABLE_FIJA);

}

Listo, al correr la prueba unitaria que estén realizando, esta variable ya se encontrara mockeado y no llegara como null.

Hola,
Hoy les quiero hablar sobre el hermoso, frío, calmado e imponente Lago del Embalse Calima.


El hombre creó el embalse del lago Calima para procurarse energía, inundando 14 kilómetros de largo por uno y medio de ancho en lo que antes fuera asiento de la cultura indígena Calima. Esto, se dice, ofendió a sus antiguos pobladores, cuya ira había causado hasta 1.992 la muerte de unos quinientos bañistas en sus 25 años de existencia. La tranquilidad de sus aguas en la mañana contrasta con el movimiento generado en las tardes por la intensidad de los vientos, lo que hace que el embalse ocupe el cuarto lugar como lago artificial ideal en el mundo para los deportes náuticos de vela.
Enclavado en la pintoresca región del Darién, el Lago Calima se erige como uno de los tesoros naturales más cautivadores de Colombia. Sus aguas serenas y los paisajes circundantes atraen a visitantes en busca de un escape tranquilo y rejuvenecedor.

Antecedentes de la región Calima
Se cree que las antiguas civilizaciones precolombinas como los indígenas calimas en el año 8.000 a.C. aproximadamente habitaron toda la zona del Darién. Un pueblo indígena que deslumbró por sus trabajos de cerámica y orfebrería. la mayoría de los cuales aún se conservan en el Museo Arqueológico de la región.
Con la llegada de los conquistadores españoles, el territorio experimentó transformaciones significativas. La influencia europea se refleja en la arquitectura colonial y las tradiciones que aún se conservan en el Darién.

La Historia del Embalse Calima
El Embalse Calima, conocido comúnmente como Lago Calima, es una maravilla hidroeléctrica y turística ubicada en el municipio del Darién, Valle del Cauca. Su historia se remonta a mediados del siglo XX cuando se iniciaron los trabajos de construcción, fue en el año 1966 que se completó esta monumental obra, convirtiéndose en uno de los embalses más grandes de Colombia.
En el fondo de dicho lago se encuentran arenas movedizas; árboles que nunca se derribaron; casas de bahareque y los pilotes de un viejo puente.
Está a una hora y 20 minutos de Cali y es el tercer lago en el mundo con la mayor velocidad de vientos.

Una Proeza de Ingeniería
La construcción del embalse implicó un desafío técnico y logístico de gran envergadura. Ingenieros y obreros trabajaron incansablemente para represar el río Calima, inundando 1.934 hectáreas de la región con aguas del río Calima y reforzándolo con aguas del río Bravo, a través de un túnel de ocho kilómetros; logrando crear así un cuerpo de agua de 13 kilómetros de longitud y 1,5 kilómetros de ancho; que no solo generaría energía eléctrica, sino que también se convertiría en un atractivo turístico de renombre.
Este embalse dio vida al Lago Calima, un espejo de agua de aproximadamente 70 kilómetros cuadrados de extensión, con casi quinientos millones de metros cúbicos de agua, una profundidad máxima de 110 metros, situados a 1.400 metros de altura sobre el nivel del mar y con un clima templado. Este cuerpo de agua no solo embellece la región, sino que también cumple funciones vitales para el abastecimiento de agua para las poblaciones aledañas, la generación de energía eléctrica en la región y el turismo para todas sus comunidades adyacentes.
La hidroeléctrica del lago Calima se ubica como la tercera en el Valle del Cauca, por su capacidad de generación de energía, con 120 megavatios, después de Alto Anchicayá, que genera 345, y Salvajina, cuya producción alcanza los 270.

Fecha de construcción
El Lago Calima se inauguró oficialmente el 30 de julio de 1966.

Calima, el lago del brujo
La niebla que en las tardes cae sobre el embalse, trayendo consigo un fuerte viento, perfecto para hacer windsurf y kitesurf, ha cautivado a los viajeros, está viene del cañón del río Bravo, baja por las montañas e invade la mayor parte del norte del lago Calima. 
A esta neblina espesa, que se cuela sobre el agua y esconde las cometas y las velas de windsurfistas y kitesurfistas, le dicen El Brujo.

Fuentes:
La caída del Imperio romano de Occidente (también conocida como la caída del Imperio romano o la caída de Roma) se refiere al hecho de la pérdida de autoridad sobre el vasto territorio del Imperio romano de Occidente que quedó dividido en numerosas entidades políticas sucesoras. 
Tradicionalmente, de acuerdo con el criterio del historiador del siglo XVIII Edward Gibbon, se sitúa su final en el año 476 d.C., coincidiendo con la deposición del último emperador romano de Occidente, Rómulo Augústulo, a manos de Odoacro, aunque fue el resultado de un largo proceso en el que hubo otros muchos hitos significativos.


Hay que empezar destacando las fuerzas que le habían permitido al Imperio romano ejercer un control efectivo sobre Occidente; historiadores modernos mencionan factores que incluyen la efectividad y el tamaño del ejército, la salud y el tamaño de la población romana, la fuerza de la economía, la capacidad y competencia de los emperadores, las luchas internas por el poder, los cambios religiosos del período y la eficiencia de la administración civil. El aumento de la «presión de los bárbaros», externos a la cultura romana, contribuyó en gran medida al colapso.

Años relevantes en este contexto lo constituyen el año 117, cuando el Imperio alcanzó su mayor extensión territorial, y el ascenso de Diocleciano en el 284. Las pérdidas territoriales irreversibles, no obstante, comenzaron en el 386 con una invasión en gran escala de los godos y otros pueblos. En 395, tras imponerse en dos guerras civiles destructivas, Teodosio I falleció, dejando al imperio, con varios territorios donde no ejercía el control, dividido entre sus dos hijos. Para el año 476, cuando Flavio Odoacro depuso al emperador Rómulo, el emperador romano de Occidente ejercía un insignificante poder militar, político y financiero, y carecía de control efectivo sobre los dispersos territorios en Occidente que aún podrían ser descritos como «romanos». Los invasores «bárbaros» establecieron su propia autoridad en la mayor parte del área del Imperio de Occidente, aunque algunos de ellos ya estaban asentados en el propio Imperio de manera pacífica en su origen (francos en las Galias, vándalos en Panonia, godos en Dacia, etc.), recibiendo sus jefes el título de cónsules o virreyes por parte de los emperadores residentes en Constantinopla, como el propio Flavio Odoacro, ciudadano romano nacido en Panonia. Aunque su legitimidad sobrevivió durante varios siglos más, y su influencia cultural persiste hasta el día de hoy, el Imperio Romano de Occidente nunca se reconstituyó. No sucedió lo mismo con el Imperio Romano de Oriente que perduró mil años más.

Periodo

La pérdida de control político centralizado sobre el occidente y el poder reducido de Oriente son universalmente reconocidos. Como una marca conveniente del final del imperio occidental, se ha utilizado el año 476 desde Gibbon, pero otros hitos incluyen la crisis del siglo III, la invasión del Rin en 406 (o 405), el saqueo de Roma en el año 410, la muerte de Julio Nepote en el 480 y la caída de Constantinopla en 1453.​ Pero el nombre de «decadencia» se ha empleado para cubrir un período de tiempo mucho más amplio que los cien años a partir de 376. Gibbon comenzó su historia en el 98 y Theodor Mommsen consideró toda la época imperial como indigna de incluirla en su obra Historia de Roma, por la que recibió el Premio Nobel de Literatura. Arnold J. Toynbee y James Burke sostienen que toda la era imperial fue un decaimiento constante de las instituciones fundadas en tiempos de la república.

Causas

Gibbon enunció una formulación clásica, ahora vetusta, de las razones por las que desapareció el imperio occidental. Comenzó una controversia, aún en curso, sobre el papel del cristianismo, pero dio gran importancia a otras causas de deterioro interno y a los ataques de fuera del Imperio.

La historia de su ruina es simple y obvia; y, en lugar de preguntar por qué el Imperio romano fue destruido, deberíamos más bien sorprendernos de que haya subsistido tanto tiempo. Las legiones de reconocimiento, que, en guerras lejanas, adquirieron los vicios de los extranjeros y mercenarios, primero oprimían la libertad de la república, y después violaron la majestuosidad de la púrpura. Los emperadores, deseosos de asegurar su seguridad personal y la paz pública, se limitaron a corromper la disciplina de las tropas que intimidaba tanto al soberano y como a los enemigos; la potencia del gobierno militar se relajó, y finalmente se disolvió, por las instituciones parciales de Constantino; y el mundo romano se vio abrumado por una avalancha de bárbaros.
Edward Gibbon. The Decline and Fall of the Roman Empire, "General Observations on the Fall of the Roman Empire in the West", capítulo 38.

Alexander Demandt enumeró doscientas diez teorías diferentes sobre el porqué de la caída de Roma, y nuevas ideas han surgido desde entonces.​ Los historiadores todavía tratan de analizar las razones de la pérdida de control político sobre su vasto territorio (y, como tema secundario, las razones para la supervivencia del Imperio romano de Oriente).


Apogeo

El Imperio romano alcanzó su mayor extensión geográfica durante el reinado del emperador Trajano (98-117), que gobernó un Estado próspero que se extendía desde Mesopotamia hasta las costas del Atlántico. El imperio contaba entonces con un Ejército numeroso y disciplinado, así como con una extensa Administración Pública basada en las prósperas ciudades que controlaban eficazmente las finanzas públicas. Entre la clase privilegiada culta, el Estado gozaba de legitimidad ideológica como la única civilización aceptable y mantenía la unidad cultural basada en el extendido conocimiento de la literatura y la retórica griegas y romanas. El poder del imperio le permitió mantener desigualdades extremas de riqueza y posición social (incluida la abundante esclavitud),​ y las redes comerciales de gran alcance permitieron incluso a los hogares modestos utilizar bienes fabricados en tierras lejanas.​

El sistema financiero le permitió recaudar copiosos impuestos que, a pesar de la corrupción endémica, sirvieron para sufragar el gran ejército, su logística e instrucción. El cursus honorum, una jerarquía de puestos militares y civiles adecuados para aristócratas, aseguró que los nobles poderosos se familiarizaran con las tareas militares y con la administración civil del Estado. En un nivel inferior dentro del Ejército, como nexo entre los aristócratas y los soldados, se encontraba un gran número de centuriones; bien pagados y alfabetizados, estos eran los responsables de la instrucción y disciplina de sus hombres, de la administración de sus unidades y de la dirección de estas en el campo de batalla.​ Los gobiernos municipales, con sus propios bienes e ingresos, funcionaban eficazmente a nivel local; la membresía de un ayuntamiento ofrecía lucrativas oportunidades, y, a pesar de sus obligaciones, era vista como un privilegio. Gracias a una serie de emperadores que adoptaron cada uno a un sucesor maduro y capaz (la dinastía Antonina), el imperio no necesitó de guerras civiles para regular la sucesión imperial. Durante los reinados de los mejores emperadores, se les podían presentar solicitudes directamente; las respuestas eran ley y ponían el poder imperial en contacto directo incluso con los súbditos más humildes. La tolerancia entre las distintas religiones paganas produjo concordia religiosa.​ Las tensiones religiosas fueron raras después del aplastamiento de la revuelta de Bar Kojba en 136 (después de lo cual la Judea devastada dejó de ser un centro de disturbios judíos). La mortandad causada por la peste antonina del 165 entorpeció seriamente los intentos de repeler a los invasores germánicos, pero no impidió que las legiones generalmente consiguieran mantener sus posiciones o recuperar rápidamente los territorios fronterizos perdidos temporalmente.


Tomado de: