[JAVA / MAVEN] – Projeto de exemplo de um Archetype em Java (How to create archetype – project sample)

add_archetype

Helpdev Archetype

Esse projeto pode ser utilizado como exemplo para criar seu próprio archetype, ele contém configurações de como criar uma classe com nome dinâmico, como criar variáveis para ser substituídas no código, importar README, .gitignore etc.

Especificamente nesse projeto o archetype foi definido para criar uma estrutura de pastas padronizados, criar uma Main class com o nome do projeto tudo dentro do package adequado ( group id + artifact id ), de acordo com necessidades de projetos em produção ele também cria uma pasta externa de properties com um arquivo contendo o artifact id como nome.

https://github.com/gbzarelli/archetype-java

https://github.com/gbzarelli/archetype-spring

Java – Retirando a implementação do SLF4J de dependências

java Se você estiver utilizando alguma biblioteca em seu sistema que contenha alguma implementação do SLF4J , você pode retirar a mesma utilizando a dependência do SLF4J ‘slf4j-nop’ (non-operation). Um dos motivos para retira-lo é estar logando na System.out do sistema informações de log. Para retirar basta incluir a seguinte dependência:

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.7.25</version>
        </dependency>

Java – Projeto Spring Security com JWT: Autenticação e Autorização por JDBC no MySQL (Spring Security Project with JWT: Authentication and Authorization by JDBC in MySQL)

spring_securityA ideia desse post não é realizar um passo a passo de como implementar o Spring Security, mas sim compartilhar um projeto bem simples e auto explicativo que desenvolvi. Esse projeto utiliza o Spring Security com autenticação JWT buscando seus usuários em um banco de dados em MySQL / MariaDB com senhas criptografadas em BCrypt.

https://github.com/gbzarelli/spring-jwt-auth-jdbc

Java EE – Problemas com deploy de aplicações no Glassfish 5 (Web Service deployment into Glassfish error)

glassfish

Servlet [ParticipantPortTypePortImpl] and Servlet [CoordinatorPortTypePortImpl] have the same url pattern: [/WSAT10Service]. Related annotation information: annotation [@javax.jws.WebService(wsdlLocation=/wsdls/wsat10/wsat.wsdl, name=, portName=CoordinatorPortTypePort, endpointInterface=com.sun.xml.ws.tx.at.v10.types.CoordinatorPortType, serviceName=WSAT10Service, targetNamespace=http://schemas.xmlsoap.org/ws/2004/10/wsat)] on annotated element [class com.sun.xml.ws.tx.at.v10.endpoint.CoordinatorPortTypePortImpl] of type [TYPE]

Esse erro ocorre pois em suas dependências no projeto há algo em conflito com o Glassfish, normalmente bibliotecas do próprio glassfish, basta remove-las e utilizar somente bibliotecas referente ao WebService. Exemplo:

<dependencies>
<!--      
       Não utilizar essa dependência! 
        <dependency>
            <groupId>org.glassfish.metro</groupId>
            <artifactId>webservices-rt</artifactId>
            <version>2.3</version>
            <scope>compile</scope>
        </dependency>
-->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
   
</dependencies>

Java – Ler um arquivo e codifica-lo para Base64 – Converter File para Base64 (Encode file to Base64)

java

 private String encodeFileToBase64Binary(File file)
            throws IOException {

        byte[] bytes = loadFile(file);
        byte[] encoded = Base64.getEncoder().encode(bytes);
        String encodedString = new String(encoded);

        return encodedString;
    }

    private byte[] loadFile(File file) throws IOException {
        byte[] bytes;
        try (InputStream is = new FileInputStream(file)) {
            long length = file.length();
            if (length > Integer.MAX_VALUE) {
                throw new IOException("File to large " + file.getName());
            }
            bytes = new byte[(int) length];
            int offset = 0;
            int numRead = 0;
            while (offset < bytes.length
                    && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
                offset += numRead;
            }
            if (offset < bytes.length) {
                throw new IOException("Could not completely read file " + file.getName());
            }
        }
        return bytes;
    }

Java/Kotlin -Utilizando um unico array para os argumentos do String.format() (String.format() takes an array as a single argument)

java_kotlin

Como passar os argumentos de um String format em uma unica lista de parametros.

Em Java:

        
        String a = "V1: %s - V2: %s - V3: %s";
        List strings = new ArrayList();
        strings.add("var1");
        strings.add("var2");
        strings.add("var3");

        System.out.println(String.format(a, (Object[]) strings.toArray()));

Em Android utilizando Kotlin:

       
        val a = "V1: %s - V2: %s - V3: %s"
        val strings = ArrayList()
        strings.add("var1")
        strings.add("var2")
        strings.add("var3")

        println(String.format(a, *strings.toTypedArray() as Array<*>))