martes, 30 de mayo de 2017

ejemplo multimodulo con jacoco

Ejemplo de proyecto maven multimodulo con cobertura de clases entre modulos. En el ejemplo están separados los tests de integración y el código en módulos diferentes.
https://github.com/raulvillalbamedina/sonar-scanning-examples

viernes, 5 de mayo de 2017

PrettyJson en java sin librerias externas

 private static String prettyJson(String responseBody) throws ScriptException {  
     ScriptEngineManager manager = new ScriptEngineManager();  
     ScriptEngine scriptEngine = manager.getEngineByName("JavaScript");  
     scriptEngine.put("jsonString", responseBody);  
     scriptEngine.eval("result = JSON.stringify(JSON.parse(jsonString), null, 2)");  
     return (String) scriptEngine.get("result");  
   }  

miércoles, 3 de mayo de 2017

Instalar ubuntu con Wubi

https://github.com/hakuna-m/wubiuefi

SchemaSpy en ubuntu

Hay que tener java8 instalado para poder ejecutar el jar.
Probar el comando java -version en linea de comandos.
Debería salir un mensaje de este estilo:

java version "1.8.xx"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

Si no sale este mensaje seguir un tutorial de este tipo:
https://www.digitalocean.com/community/tutorials/instalar-java-en-ubuntu-con-apt-get-es

Descargas:

Hay que descargar/instalar 3 cosas:

- Schemaspy, el programa:
https://github.com/schemaspy/schemaspy/releases

- Conector a la base de datos (en mi caso mysql):
http://www.java2s.com/Code/JarDownload/mysql/mysql-connector-java-5.1.6-bin.jar.zip
Por defecto busca el jar en /mysql/, así que deberás ponerlo en la raiz.

- Graphviz, sin esto funciona pero no se generan gráficos
http://www.graphviz.org/pub/graphviz/stable/ubuntu/ub13.10/x86_64/graphviz_2.38.0-1~saucy_amd64.deb
Tiene que estar incluido en el path, y poder ejecutarse el comando "dot" desde cualquier lugar


Comandos:

Dependiendo de tu base de datos hay que poner unos parámetros u otros, para saber cuales hay que poner, ejecutar:

java -jar schemaSpy_TU.VERSION.jar -dbhelp

En mi caso me fijo en esto

 mysql:
  MySQL
   -host       hostname[:port] host where database resides with optional port
   -db       database name


Una vez que tienes esto el comando completo sería éste, para mysql:

java -jar schemaSpy_TU.VERSION.jar -t mysql -host localhost -port 3306 -db database_dev -s schema_dev -u user1 -p mypass -o directory




viernes, 31 de marzo de 2017

Tutorial gitlab

https://gist.github.com/m-kyle/fb0f3e9edc369adfcac7

miércoles, 29 de marzo de 2017

arrancar aplicación springboot en segundo plano desde unix

nohup java -jar -Dspring.profiles.active=production example-springboot.jar > /dev/null 2>&1 &

miércoles, 15 de marzo de 2017

Spring data rest, HATEOAS exposeIds

Para que las rests HATEOAS muestren los campos id de cada elemento:

 @Component  
 @Slf4j  
 public class SpringDataRestCustomization extends RepositoryRestConfigurerAdapter {  
   @Override  
   public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {  
     listMatchingClasses(Entity.class).forEach(entity -> config.exposeIdsFor(entity));  
   }  
   public List<Class> listMatchingClasses(Class annotationClass) {  
     List<Class> classes = new LinkedList<Class>();  
     ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(true);  
     scanner.addIncludeFilter(new AnnotationTypeFilter(annotationClass));  
     for (BeanDefinition bd : scanner.findCandidateComponents(Project.class.getPackage().getName())) {  
       try {  
         classes.add(Class.forName(bd.getBeanClassName()));  
       } catch (ClassNotFoundException e) {  
         log.error("listMatchingClasses problem", e);  
       }  
     }  
     return classes;  
   }  
 }  

jueves, 2 de marzo de 2017

Spring4, cors, problema con seguridad

 
Paso 1. Añadir una clase de configuración para corsConfigurer: 
 
 
 @Configuration
public class MyConfiguration {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**");
            }
        };
    }
} 
 
Paso 2. Añadir Clase para seguridad
 
 @EnableWebSecurity
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.antMatcher("/**").authorizeRequests().requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
                .anyRequest().fullyAuthenticated().and().httpBasic().and().csrf().disable();
    }
}
 
 
 

martes, 24 de enero de 2017

postgresql dump y restore

 Borrar todo:
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;

GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;


Creación de dump:
pg_dump.exe -Uuser database > dump.dump
Restore de dump:
psql -Uuser -e "database" < "dump.dump"