Bienvenido a Java Mexico

Java México es una comunidad de desarrolladores mexicanos en el lenguaje Java.

Este sitio es colaborativo, automáticamente al registrarte obtienes un Blog para compartir tus conocimientos o información acerca del lenguaje. Antes de publicar en tu blog o los foros por favor lee los lineamientos de publicación.

Para dudas y problemas con respecto al lenguaje Java puedes visitar los Foros de Discusión.

Instalando Concurnas, un nuevo lenguaje JVM

Concurnas es un "nuevo" lenguaje de programación dependiente de la JVM.

El sitio oficial dice que el lenguaje es:

Un lenguaje de programación JVM de código abierto diseñado para construir sistemas concurrentes, distribuidos y paralelos confiables, escalables y de alto rendimiento.

Concurnas es interoperable con Java (y otros lenguajes JVM): las organizaciones pueden aprovechar el software Java existente en un entorno concurrente.

En comparación con otros lenguajes, los desarrolladores de Concurnas necesitan escribir menos líneas de código. Ese código es más seguro y más fácil de probar, lo que aumenta la calidad y aumenta la productividad de los desarrolladores.

ejemplo.conc

class X{
   def hola(){
      System.out.println("Hola desde clase X")
   }
}
class Y{
   def hola(){
      System.out.println("Hola desde clase Y")
   }
}

def main(args String[]){
   new X().hola()
   new Y().hola()
}

A primera vista es muy parecido a Groovy, pero solo en apariencia.

Para instalar el lenguaje podemos usar SDKMAN!

 

¿Mock a EntiityManager es posible con Spring?

Hola buenas tardes a todos.

Hay una duda que tengo y es referente a la forma en que debo inyectar EntityManager dentro de una clase Test, para ello estoy utilizando JUnit y Mockito.

por ejemplo:
ClaseRepositoryImpl => Es la clase que quiero testear
EntityManager => Es lo que necesito falsear

public class ClaseRepositoryImplTest{
    @InjectMocks
    public ClaseRepositoryImpl cr;
   
    @Mock
    public EntityManager em;

    @Before
    public void setUp(){
        MockitoAnnotations.initMocks(this);
    }

        @Test
    public void getCatalogoEjemploTest() {
        List<Ejemplo> listado = this.getCatalogoEjemplo();  //Tengo un método private que me devuelve una Lista de Objetos de tipo Ejemplo
        String nameStoreProcedure = "SP_GET_CAT_EJEMPLO";
       
        Query query = entityManager.createStoredProcedureQuery(nameStoreProcedure, Ejemplo.class);
        Mockito.when(query.getResultList()).thenReturn(listado);
    }

}

Queries Dinámicos en Spring Data JPA

Tuve la necesidad de crear un Query de forma dinámica con JPA, pues tenía varios métodos definidos y podrían crecer mas, algo así:

QuestionRepository.groovy

interface QuestionRepository extends PagingAndSortingRepository<Question,Long> {
  List<Question> findAllByAuthorAndEnabledAndStatusInAndParentIsNull(UserGE author,Boolean enabled,List<String> statuses, Pageable pageable)
  List<Question> findAllByCampus_CodeLikeAndSubject_subjectNumberLikeAndTypeLikeAndCareer_codeLikeAndUnityLikeAndComplexityLikeAndAuthorAndEnabledAndStatusInAndParentIsNull(String campusCode, String subjectNumber, String type, String careerCode, String unity, String complexity, UserGE author, Boolean enabled,List<String> statuses, Pageable pageable)
  long countByAuthorAndEnabledAndStatusInAndParentIsNull(UserGE author,Boolean enabled,List<String> statuses)
  long countByCampus_CodeLikeAndSubject_subjectNumberLikeAndTypeLikeAndCareer_codeLikeAndUnityLikeAndComplexityLikeAndAuthorAndEnabledAndStatusInAndParentIsNull(String campusCode, String subjectNumber, String type, String careerCode, String unity, String complexity,UserGE author, Boolean enabled,List<String> statuses)

Aplicar AOP con JavaConfig (AspectJExpressionPointcut)

Hace poco me toco tocar un componente en dónde tuve que aplicar un aspecto, la última vez que lo hice lo configuré con el namespace de AOP de Spring, pero estz vez quise hacerlo todo con JavaConfig; he aquí lo que hice:

El XML era este:

<bean id="monitoringAdvice" class="net.bull.javamelody.MonitoringSpringInterceptor" />
<aop:config>
  <aop:pointcut expression="execution(* com.makingdevs.service..**.*(..))"
    id="monitoringPointcut" />
  <aop:advisor advice-ref="monitoringAdvice" pointcut-ref="monitoringPointcut" />
</aop:config>

TableView en JavaFX

Buenas tardes, tengo un problema al usar las Table View, soy nuevo en Javafx, y apenas estoy aprendiendo, casi todo es más sencillo que con Swing, bueno, el problema es el siguiente
El problema es que estoy usando Scene Builder, esto ya es un proyecto grande, y necesito tener visualizaciones de las ventanas

Proyecto p = new Proyecto("1", "Proyecto A", "Proyecto chido"); //Esto es solo una prueba, se supone que lo jalará de la BD
        ObservableList<Proyecto> ListaProyectos = FXCollections.observableArrayList(p, p, p);        
        TCIDProy.setCellValueFactory(new PropertyValueFactory<Proyecto, String>("IDProyecto"));
        TCProy.setCellValueFactory(new PropertyValueFactory<Proyecto, String>("Nombre"));      
        TPrincipal.getItems().addAll(ListaProyectos);

El resultado de ese código es una tabla que arroja esto StringProperty[Value:1] en vez de arrojar simplemente un "1". No se en que me estoy equivocando, he investigado y casi todos lo hacen a mano, y en el caso de este proyecto no es viable cambiarlo a mano.

WEBSERVICE Y ACCESO A BASE DE DATOS

Cuando hablamos o estudiamos WebServices nos aparece una infinidad de métodos y tecnologías desde los benditos WSDL, pasando por JSON, AXIS, SOAP, RPC y un largo etcétera. Si le sumamos a ello el acceso a base de datos y sus respectivas transacciones, la cosa se complica mas. Para ello, benévolamente, las grandes empresas tecnológicas nos ofrecen una y otra y otra más abstracción para que el desarrollo sea mas intuitivo y fácil de actualizar. Pero la pregunta del millón es: de verdad es más intuitivo y fácil de actualizar, además de rápido? Si ya todo esto tiene su problemática y su discusión aparece en la escena de esta tragicomedia tecnológica las aplicaciones móviles. Vemos todo tipo de aplicaciones móviles, miles, millones. Sin embargo, muy pocas apps son herramientas transaccionales/administrativas. Tenemos apps sociales, de multimedia, juegos, herramientas de productividad, editores, información, etc..

Instalando Jenkins

Jenkins, al igual que Docker, se han vuelto una moda. Una moda que, tarde o temprano, todo desarrollador tendrá que usar.

Jenkins promete cosas como:

  • Control de versiones de tu código.
  • Construcción automática.
  • Controlar y monitorear procesos
  • y muchas otras cosas más.
  • Lo primero que hay que hacer es bajarlo.

    Instalarlo es relativamente fácil. Debemos ubicarnos en la carpeta donde este el archivo jenkins.war y desde una terminal teclear:
    java -jar jenkins.war

    Al instalarse se genera una clave que tendrás que usar. Copiamos esa clave.

    Abrimos un navegador en la URL: http://localhost:8080

    Pegamos la clave que vemos en la terminal y damos clic en Continuar (o Continue).

recomendaciones para establecer relaciones en gorm

buenas noches a esta gran comunidad de programadores, para no entrar en detalles necesito de su ayuda ya que tengo una duda sobre que enfoque elegir para un proyecto en grails - gorm basicamente la duda es esta:

una empresa debe pertenecer a una sola categoria.

y tengo dos opciones:
Opcion A

class Empresa {
/* atributos */
 Categoria categoria

}
class Categoria {
 String nombre
}

Opcion B

class Categoria {
    String nombre
    static hasMany = [empresas: Empresa]
}
class Empresa {
   /*atributos*/

}

cual seria la mejor alternativa?de antemano les estare agradecido

Video de aguacate

Hice un video donde se puede ver el funcionamiento de aguacate, mostrando como se modifica un servicio REST, donde no se requiere compilar y/o reiniciar el proceso.

https://www.youtube.com/watch?v=HnibfIoj3bU

https://www.youtube.com/watch?v=WBrEmeT2J-8

Aguacate

Espero que no viole reglas y/o normas

Estoy trabajando en un proyecto opensource propio. Aun esta en beta, pero ya es bastante funcional

La intencion es crear una aplicación, para desplegar servicios REST-CRUD (por el momento) sin necesidad de reinstalar-recompilar-redeployar la aplicación, mediante la externalización de la lógica de negocio. Dejo la liga a la pagina y me gustaria ver que piensan de dicha aplicación

    https://github.com/mcnew/aguacate-swagger-demo

P.D.: Notese que aun tiene algunos bugs, pero de menos ya no se cae y el rendimiento es bastante decente.

Saludos y gracias

Distribuir contenido