Elemar Deckmann il y a 1 an
commit
07e8146c5d
30 fichiers modifiés avec 706 ajouts et 0 suppressions
  1. 24 0
      README.md
  2. 104 0
      pom.xml
  3. 8 0
      src/main/java/com/ademicon/config/ApplicationConfig.java
  4. 30 0
      src/main/java/com/ademicon/controller/MunicipioController.java
  5. 19 0
      src/main/java/com/ademicon/model/MunicipioModel.java
  6. 36 0
      src/main/java/com/ademicon/model/auth/AccessModel.java
  7. 23 0
      src/main/java/com/ademicon/model/auth/AuthenticationModel.java
  8. 32 0
      src/main/java/com/ademicon/model/auth/TokenModel.java
  9. 6 0
      src/main/java/com/ademicon/repository/MunicipioRepository.java
  10. 54 0
      src/main/java/com/ademicon/repository/auth/AccessRepository.java
  11. 5 0
      src/main/java/com/ademicon/repository/auth/AuthenticationRepository.java
  12. 93 0
      src/main/java/com/ademicon/repository/auth/TokenRepository.java
  13. 17 0
      src/main/java/com/ademicon/service/ConnectionService.java
  14. 40 0
      src/main/java/com/ademicon/service/MunicipioService.java
  15. 13 0
      src/main/java/com/ademicon/service/auth/AccessService.java
  16. 48 0
      src/main/java/com/ademicon/service/auth/AuthenticationService.java
  17. 59 0
      src/main/java/com/ademicon/service/auth/TokenService.java
  18. 19 0
      src/main/resources/application.info
  19. 4 0
      src/main/resources/edit.ftl
  20. 0 0
      src/main/resources/placeti.properties
  21. 0 0
      src/main/resources/placeti_en_US.properties
  22. 0 0
      src/main/resources/placeti_es.properties
  23. 0 0
      src/main/resources/placeti_pt_BR.properties
  24. 4 0
      src/main/resources/view.ftl
  25. 22 0
      src/main/webapp/WEB-INF/jboss-web.xml
  26. 26 0
      src/main/webapp/WEB-INF/web.xml
  27. 0 0
      src/main/webapp/resources/css/placeti.css
  28. BIN
      src/main/webapp/resources/images/icon.png
  29. 0 0
      src/main/webapp/resources/js/placeti.js
  30. 20 0
      src/test/java/com/ademicon/AppTest.java

+ 24 - 0
README.md

@@ -0,0 +1,24 @@
+
+# Fluig API: placeti
+
+## Descrição 
+
+> API de integração com Placeti para registro de contratos junto ao Detran
+
+## Compilar
+
+```shell
+nmv clean install
+```
+
+## Instalar
+
+Adicionar o arquivo placeti.war na central de componentes do Fluig
+
+## Acessar
+
+[scheme://host:port/placeti/api/endpoint](scheme://host:port/placeti/api/endpoint)  
+
+---
+
+> Criado em 08 de fevereiro de 2024 às 12:42:55 por [Elemar](https://elemar.dev.br)

+ 104 - 0
pom.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>com.ademicon</groupId>
+  <artifactId>placeti</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>war</packaging>
+
+  <name>Fluig API: placeti</name>
+  <description>API de integração com Placeti para registro de contratos junto ao Detran [O projeto foi gerado pelo arquétipo Maven 'fluig-archetype-1.0-SNAPSHOT']</description>
+  <licenses>
+    <license>
+      <name>UNLICENSED</name>
+    </license>
+  </licenses>
+
+  <properties>
+    <fluig.version>1.8.1</fluig.version>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <project.report.sourceEncoding>UTF-8</project.report.sourceEncoding>
+    <maven.compiler.release>11</maven.compiler.release>
+    <jakartaee-api.version>8.0.0</jakartaee-api.version>
+    <compiler-plugin.version>3.11.0</compiler-plugin.version>
+    <war-plugin.version>3.3.2</war-plugin.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.fluig</groupId>
+      <artifactId>fluig-sdk-api</artifactId>
+      <version>${fluig.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fluig</groupId>
+      <artifactId>fluig-sdk-common</artifactId>
+      <version>${fluig.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>jakarta.platform</groupId>
+      <artifactId>jakarta.jakartaee-api</artifactId>
+      <version>${jakartaee-api.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.11</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.projectlombok</groupId>
+      <artifactId>lombok</artifactId>
+      <version>1.18.30</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.swagger.core.v3</groupId>
+      <artifactId>swagger-annotations</artifactId>
+      <version>2.2.20</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-core</artifactId>
+      <version>2.16.1</version>
+  </dependency>
+  
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+      <version>2.16.1</version>
+  </dependency>
+  
+  </dependencies>
+
+  <build>
+    <finalName>placeti</finalName>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>${compiler-plugin.version}</version>
+      </plugin>
+      <plugin>
+        <artifactId>maven-war-plugin</artifactId>
+        <version>${war-plugin.version}</version>
+        <configuration>
+          <failOnMissingWebXml>false</failOnMissingWebXml>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <repositories>
+    <repository>
+      <id>fluig</id>
+      <name>Fluig Nexus Repository</name>
+      <url>https://nexus.fluig.com/repository/fluig/</url>
+    </repository>
+  </repositories>
+</project>

+ 8 - 0
src/main/java/com/ademicon/config/ApplicationConfig.java

@@ -0,0 +1,8 @@
+package com.ademicon.config;
+
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.core.Application;
+
+@ApplicationPath("/api")
+public class ApplicationConfig extends Application {    
+}

+ 30 - 0
src/main/java/com/ademicon/controller/MunicipioController.java

@@ -0,0 +1,30 @@
+package com.ademicon.controller;
+
+import java.util.List;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import com.ademicon.model.MunicipioModel;
+import com.ademicon.service.MunicipioService;
+
+@Path("/municipio")
+public class MunicipioController {
+
+    private static MunicipioService municipioService = new MunicipioService();
+
+    @GET
+    @Path("/{uf}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public List<MunicipioModel> doGet(@PathParam(value = "uf") String uf) throws Exception {
+
+        return municipioService.list(uf);
+
+    }
+
+}

+ 19 - 0
src/main/java/com/ademicon/model/MunicipioModel.java

@@ -0,0 +1,19 @@
+package com.ademicon.model;
+
+import java.io.Serializable;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class MunicipioModel implements Serializable{
+    private String codigo;
+    private String nome;
+    private String uf;
+
+}

+ 36 - 0
src/main/java/com/ademicon/model/auth/AccessModel.java

@@ -0,0 +1,36 @@
+package com.ademicon.model.auth;
+
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class AccessModel implements Serializable {
+    
+    private static final long serialVersionUID = 1L;
+
+    @JsonProperty("PLACETI_URL_BASE")
+    private String placeti_url_base;
+
+    @JsonProperty("PLACETI_URL_TOKEN")
+    private String placeti_url_token;
+
+    @JsonProperty("PLACETI_USER_TOKEN")
+    private String placeti_user_token;
+
+    @Override
+    public String toString() {
+
+        return "{\"placeti_url_base\":\"" + this.getPlaceti_url_base() +
+                ", \"placeti_url_token\":\"" + this.placeti_url_token +
+                ", \"placeti_user_token\":\"" + this.placeti_user_token + "\"}";
+    }
+}

+ 23 - 0
src/main/java/com/ademicon/model/auth/AuthenticationModel.java

@@ -0,0 +1,23 @@
+package com.ademicon.model.auth;
+
+import java.io.Serializable;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class AuthenticationModel implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String access_token;
+    private String token_type;
+    private Integer expires_in;
+    private String scope;
+
+}

+ 32 - 0
src/main/java/com/ademicon/model/auth/TokenModel.java

@@ -0,0 +1,32 @@
+package com.ademicon.model.auth;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class TokenModel implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @JsonProperty("ACCESS_TOKEN")
+    private String access_token;
+
+    @JsonProperty("EXPIRES_IN")
+    private LocalDateTime expires_in;
+
+    @Override
+    public String toString() {
+        return "{\"access_token\": " + this.getAccess_token() + ", \"expires_in\": " + this.getExpires_in() + "}";
+    }
+
+}

+ 6 - 0
src/main/java/com/ademicon/repository/MunicipioRepository.java

@@ -0,0 +1,6 @@
+package com.ademicon.repository;
+
+public class MunicipioRepository {
+
+
+}

+ 54 - 0
src/main/java/com/ademicon/repository/auth/AccessRepository.java

@@ -0,0 +1,54 @@
+package com.ademicon.repository.auth;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+
+import com.ademicon.model.auth.AccessModel;
+import com.ademicon.service.ConnectionService;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class AccessRepository {
+    private static Connection conn = null;
+    private static PreparedStatement statement = null;
+    private static ResultSet rs = null;
+
+    public AccessModel find() throws Exception {
+        try {
+            String queryString = "SELECT PARAMETRO, VALOR_STR FROM ADE_006_PARM_CRED_VEIC WHERE PARAMETRO IN ('PLACETI_URL_BASE', 'PLACETI_URL_TOKEN', 'PLACETI_USER_TOKEN')";
+            conn = ConnectionService.getConnection();
+            statement = conn.prepareStatement(queryString);
+            rs = statement.executeQuery();
+            String json = "{";
+            while (rs.next()) {
+                json += "\"" + rs.getString("PARAMETRO") + "\":\"" + rs.getString("VALOR_STR") + "\",";
+            }
+            json = json.substring(0, json.lastIndexOf(",")) + "}";
+            ObjectMapper mapper = new ObjectMapper();
+            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+            return mapper.readValue(json, AccessModel.class);
+
+        } catch (Exception e) {
+            throw new Exception(e.getMessage());
+        } finally {
+            try {
+                if (rs != null)
+                    rs.close();
+            } catch (Exception e) {
+            }
+            try {
+                if (statement != null)
+                    statement.close();
+            } catch (Exception e) {
+            }
+            try {
+                if (conn != null)
+                    conn.close();
+            } catch (Exception e) {
+            }
+        }
+    }
+
+}

+ 5 - 0
src/main/java/com/ademicon/repository/auth/AuthenticationRepository.java

@@ -0,0 +1,5 @@
+package com.ademicon.repository.auth;
+
+public class AuthenticationRepository {
+    
+}

+ 93 - 0
src/main/java/com/ademicon/repository/auth/TokenRepository.java

@@ -0,0 +1,93 @@
+package com.ademicon.repository.auth;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+import com.ademicon.model.auth.TokenModel;
+import com.ademicon.service.ConnectionService;
+
+public class TokenRepository {
+    private static Connection conn = null;
+    private static PreparedStatement statement = null;
+    private static ResultSet rs = null;
+
+    public Integer save(TokenModel token) throws Exception {
+        try {
+            String queryString = "UPDATE ADE_006_TOKEN_CONTROL SET ACCESS_TOKEN = ?, EXPIRES_IN = ? WHERE API = 'PLACETI'";
+            conn = ConnectionService.getConnection();
+            statement = conn.prepareStatement(queryString);
+            statement.setString(1, token.getAccess_token());
+            statement.setString(2, token.getExpires_in().toString().substring(0, 19));
+            return statement.executeUpdate();
+
+        } catch (Exception e) {
+            throw new Exception();
+
+        } finally {
+            try {
+                if (rs != null)
+                    rs.close();
+            } catch (Exception e) {
+            }
+            try {
+                if (statement != null)
+                    statement.close();
+            } catch (Exception e) {
+            }
+            try {
+                if (conn != null)
+                    conn.close();
+            } catch (Exception e) {
+            }
+        }
+    }
+
+    public TokenModel find() throws Exception {
+        try {
+            String queryString = "SELECT * FROM ADE_006_TOKEN_CONTROL WHERE API = 'PLACETI'";
+            conn = ConnectionService.getConnection();
+            statement = conn.prepareStatement(queryString);
+            rs = statement.executeQuery();
+
+            TokenModel newTokenModel = new TokenModel();
+            if (rs.next()) {
+                newTokenModel.setAccess_token(rs.getString("ACCESS_TOKEN"));
+                LocalDateTime localDateTime = getLocalDateTime(rs.getString("EXPIRES_IN"));
+                newTokenModel.setExpires_in(localDateTime);
+            }
+            return newTokenModel;
+
+        } catch (Exception e) {
+            throw new Exception(e.getMessage());
+
+        } finally {
+            try {
+                if (rs != null)
+                    rs.close();
+            } catch (Exception e) {
+            }
+            try {
+                if (statement != null)
+                    statement.close();
+            } catch (Exception e) {
+            }
+            try {
+                if (conn != null)
+                    conn.close();
+            } catch (Exception e) {
+            }
+        }
+    }
+
+    private LocalDateTime getLocalDateTime(String localDateTimeString) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
+        LocalDateTime localDateTime = LocalDateTime.of(1900, 12, 31, 12, 0, 0);
+        if (localDateTimeString.length() > 0) {
+            localDateTime = LocalDateTime.parse(localDateTimeString.substring(0, 19), formatter);
+        }
+        return localDateTime;
+    }
+}

+ 17 - 0
src/main/java/com/ademicon/service/ConnectionService.java

@@ -0,0 +1,17 @@
+package com.ademicon.service;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+public class ConnectionService {
+    public static Connection getConnection() throws NamingException, SQLException {
+        Context ic = new InitialContext();
+        DataSource ds = (DataSource) ic.lookup("/jdbc/FluigDS");
+        return ds.getConnection();
+    }
+}

+ 40 - 0
src/main/java/com/ademicon/service/MunicipioService.java

@@ -0,0 +1,40 @@
+package com.ademicon.service;
+
+import java.util.List;
+
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.MediaType;
+
+import com.ademicon.model.MunicipioModel;
+import com.ademicon.model.auth.AccessModel;
+import com.ademicon.service.auth.AccessService;
+import com.ademicon.service.auth.TokenService;
+
+public class MunicipioService {
+
+    private static AccessService accessService = new AccessService();
+    private static TokenService tokenService = new TokenService();
+
+    public List<MunicipioModel> list(String uf) throws Exception {
+
+        try {
+
+            AccessModel accessModel = accessService.find();
+            String token = tokenService.getToken();
+            return ClientBuilder.newBuilder().build()
+                    .target(accessModel.getPlaceti_url_base() + "/api/v1/enderecamento/municipios/" + uf)
+                    .request(MediaType.APPLICATION_JSON)
+                    .header("Authorization", "Bearer " + token)
+                    .get(new GenericType<List<MunicipioModel>>() {
+                    });
+
+        } catch (Exception e) {
+            System.out.println(e);
+            throw new Exception(e.getMessage());
+
+        }
+
+    }
+
+}

+ 13 - 0
src/main/java/com/ademicon/service/auth/AccessService.java

@@ -0,0 +1,13 @@
+package com.ademicon.service.auth;
+
+import com.ademicon.model.auth.AccessModel;
+import com.ademicon.repository.auth.AccessRepository;
+
+public class AccessService {
+
+    private static AccessRepository accessRepository = new AccessRepository();
+
+    public AccessModel find() throws Exception {
+        return accessRepository.find();
+    }
+}

+ 48 - 0
src/main/java/com/ademicon/service/auth/AuthenticationService.java

@@ -0,0 +1,48 @@
+package com.ademicon.service.auth;
+
+import java.net.ConnectException;
+
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import com.ademicon.model.auth.AccessModel;
+import com.ademicon.model.auth.AuthenticationModel;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class AuthenticationService {
+
+    private static AccessService accessService = new AccessService();
+
+    public AuthenticationModel getToken() throws Exception {
+        try {
+
+            AccessModel accessModel = accessService.find();
+
+            WebTarget webTarget = ClientBuilder.newBuilder().build()
+                    .target(accessModel.getPlaceti_url_base() + accessModel.getPlaceti_url_token());
+
+            Response response = webTarget
+                    .queryParam("grant_type", "client_credentials")
+                    .request(MediaType.APPLICATION_JSON)
+                    .header("authorization", "Basic " + accessModel.getPlaceti_user_token())
+                    .build("POST").invoke();
+            int status = response.getStatus();
+            if (status == 200) {
+                String json = response.readEntity(String.class);
+                ObjectMapper mapper = new ObjectMapper();
+                return mapper.readValue(json, AuthenticationModel.class);
+                
+            } else {
+                throw new ConnectException();
+
+            }
+
+        } catch (Exception e) {
+            System.out.println(e);
+            throw new Exception(e.getMessage());
+
+        }
+    }
+}

+ 59 - 0
src/main/java/com/ademicon/service/auth/TokenService.java

@@ -0,0 +1,59 @@
+package com.ademicon.service.auth;
+
+import java.time.LocalDateTime;
+
+import com.ademicon.model.auth.AuthenticationModel;
+import com.ademicon.model.auth.TokenModel;
+import com.ademicon.repository.auth.TokenRepository;
+
+public class TokenService {
+
+    private static TokenRepository tokenRepository = new TokenRepository();
+
+    private static AuthenticationService authenticationService = new AuthenticationService();
+
+    private static String refreshToken() throws Exception {
+        try {
+            AuthenticationModel authenticationModel = authenticationService.getToken();
+            TokenModel tokenModel = new TokenModel();
+            tokenModel.setAccess_token(authenticationModel.getAccess_token());
+            tokenModel.setExpires_in(calculateDeadline(authenticationModel.getExpires_in()));
+            tokenRepository.save(tokenModel);
+            var rs = tokenModel.getAccess_token();
+            return rs;
+
+        } catch (Exception e) {
+            System.out.println(e);
+            e.printStackTrace();
+            throw new Exception(e.getMessage());
+        }
+    }
+
+    public String getToken() throws Exception {
+        try {
+            TokenModel tokenModel = tokenRepository.find();
+            boolean isValid = tokenIsValid(tokenModel.getExpires_in());
+            if (!isValid) {
+                return refreshToken();
+            }
+            var rs = tokenModel.getAccess_token();
+            return rs;
+            
+        } catch (Exception e) {
+            System.err.println(e);
+            throw e;
+        }
+    }
+
+    private static LocalDateTime calculateDeadline(Integer deadline) {
+        LocalDateTime newDate = LocalDateTime.now();
+        return newDate.plusSeconds(deadline);
+    }
+
+    private static boolean tokenIsValid(LocalDateTime localDateTime) {
+        LocalDateTime newLocalDateTime = LocalDateTime.now();
+        boolean isValid = newLocalDateTime.isBefore(localDateTime);
+        return isValid;
+    }
+
+}

+ 19 - 0
src/main/resources/application.info

@@ -0,0 +1,19 @@
+application.type=widget
+application.code=placeti
+application.title=placeti
+application.description=API de integração com Placeti para registro de contratos junto ao Detran
+application.icon=/resources/images/icon.png
+application.fluig.version=null
+application.category=API
+application.renderer=freemarker
+developer.code=elemar
+developer.name=Elemar
+developer.url=https://elemar.dev.br
+application.uiwidget=false
+application.mobileapp=false
+application.version=1.0-SNAPSHOT
+view.file=view.ftl
+edit.file=edit.ftl
+locale.file.base.name=placeti
+application.resource.js.1=/resources/js/placeti.js
+application.resource.css.2=/resources/css/placeti.css

+ 4 - 0
src/main/resources/edit.ftl

@@ -0,0 +1,4 @@
+<div id="MyWidget_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide" data-params="MyWidget.instance()">
+
+</div>
+

+ 0 - 0
src/main/resources/placeti.properties


+ 0 - 0
src/main/resources/placeti_en_US.properties


+ 0 - 0
src/main/resources/placeti_es.properties


+ 0 - 0
src/main/resources/placeti_pt_BR.properties


+ 4 - 0
src/main/resources/view.ftl

@@ -0,0 +1,4 @@
+<div id="MyWidget_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide"
+        data-params="MyWidget.instance()">
+        
+    </div>

+ 22 - 0
src/main/webapp/WEB-INF/jboss-web.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jboss-web>
+    <context-root>/placeti</context-root>
+    <!-- <disable-cross-context>false</disable-cross-context>
+    <security-domain>TOTVSTech</security-domain>
+    <security-role>
+        <role-name>user</role-name>
+        <principal-name>totvstech</principal-name>
+    </security-role>
+    <security-role>
+        <role-name>totvstech</role-name>
+        <principal-name>totvstech</principal-name>
+    </security-role>
+    <security-role>
+        <role-name>sysadmin</role-name>
+        <principal-name>wcmadmin</principal-name>
+    </security-role>
+    <security-role>
+        <role-name>admin</role-name>
+        <principal-name>wcmadmin</principal-name>
+    </security-role>  -->
+</jboss-web>

+ 26 - 0
src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,26 @@
+<web-app version="4.0"
+	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
+	<!-- <security-constraint>
+		<display-name>REST</display-name>
+		<web-resource-collection>
+			<web-resource-name>REST</web-resource-name>
+			<description>REST</description>
+			<url-pattern>/api/*</url-pattern>
+		</web-resource-collection>
+		<auth-constraint>
+			<description>REST</description>
+			<role-name>user</role-name>
+		</auth-constraint>
+	</security-constraint>
+	<security-role>
+		<role-name>totvstech</role-name>
+	</security-role>
+	<security-role>
+		<role-name>user</role-name>
+	</security-role>
+	<security-role>
+		<role-name>sysadmin</role-name>
+	</security-role> -->
+</web-app>

+ 0 - 0
src/main/webapp/resources/css/placeti.css


BIN
src/main/webapp/resources/images/icon.png


+ 0 - 0
src/main/webapp/resources/js/placeti.js


+ 20 - 0
src/test/java/com/ademicon/AppTest.java

@@ -0,0 +1,20 @@
+package com.ademicon;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+{
+    /**
+     * Rigorous Test :-)
+     */
+    @Test
+    public void shouldAnswerWithTrue()
+    {
+        assertTrue( true );
+    }
+}