diff --git a/pom.xml b/pom.xml index 75bcfd4..e119324 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,7 @@ - + 4.0.0 org.springframework.boot @@ -11,21 +12,25 @@ tp2 VeraxFeather 0.0.1-SNAPSHOT - demo + VeraxFeather Demo project for Spring Boot 17 - 18 - 18 - org.springframework.boot spring-boot-starter-web + + jakarta.servlet + jakarta.servlet-api + 4.0.4 + provided + + org.springframework.boot @@ -43,18 +48,30 @@ runtime - org.springframework.boot spring-boot-starter-hateoas + + org.springframework.boot + spring-boot-starter-security + + + + org.springframework.boot + spring-boot-starter-oauth2-resource-server + + + + io.jsonwebtoken + jjwt + 0.9.1 + - org.springframework.boot spring-boot-starter-test - 2.6.3 test @@ -64,20 +81,19 @@ - org.junit.jupiter junit-jupiter-api - 5.7.2 + 5.7.2 test + org.junit.jupiter junit-jupiter-engine - 5.7.2 + 5.7.2 test - @@ -88,5 +104,5 @@ - + diff --git a/src/main/java/VeraxFeather/authentification/AuthController.java b/src/main/java/VeraxFeather/authentification/AuthController.java new file mode 100644 index 0000000..2988679 --- /dev/null +++ b/src/main/java/VeraxFeather/authentification/AuthController.java @@ -0,0 +1,41 @@ +package VeraxFeather.authentification; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import org.springframework.security.core.userdetails.UserDetailsService; + + +@RestController +public class AuthController { + + @Autowired + private AuthenticationManager authenticationManager; + + @Autowired + private JwtUtil jwtTokenUtil; + + @Autowired + private UserDetailsService userDetailsService; + + @PostMapping("/authenticate") + public AuthenticationResponse createAuthenticationToken(@RequestBody AuthenticationRequest authenticationRequest) { + Authentication authenticate = authenticationManager.authenticate( + new UsernamePasswordAuthenticationToken(authenticationRequest.getUsername(), authenticationRequest.getPassword()) + ); + + SecurityContextHolder.getContext().setAuthentication(authenticate); + + final UserDetails userDetails = userDetailsService.loadUserByUsername(authenticationRequest.getUsername()); + final String jwt = jwtTokenUtil.generateToken(userDetails); + + return new AuthenticationResponse(jwt); + } +} diff --git a/src/main/java/VeraxFeather/authentification/AuthenticationRequest.java b/src/main/java/VeraxFeather/authentification/AuthenticationRequest.java new file mode 100644 index 0000000..404cab4 --- /dev/null +++ b/src/main/java/VeraxFeather/authentification/AuthenticationRequest.java @@ -0,0 +1,24 @@ +package VeraxFeather.authentification; + +public class AuthenticationRequest { + + private String username; + private String password; + + // Getters et setters + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/src/main/java/VeraxFeather/authentification/AuthenticationResponse.java b/src/main/java/VeraxFeather/authentification/AuthenticationResponse.java new file mode 100644 index 0000000..2b4eb35 --- /dev/null +++ b/src/main/java/VeraxFeather/authentification/AuthenticationResponse.java @@ -0,0 +1,14 @@ +package VeraxFeather.authentification; + +public class AuthenticationResponse { + + private final String jwt; + + public AuthenticationResponse(String jwt) { + this.jwt = jwt; + } + + public String getJwt() { + return jwt; + } +} diff --git a/src/main/java/VeraxFeather/authentification/JwtRequestFilter.java b/src/main/java/VeraxFeather/authentification/JwtRequestFilter.java new file mode 100644 index 0000000..378d09d --- /dev/null +++ b/src/main/java/VeraxFeather/authentification/JwtRequestFilter.java @@ -0,0 +1,53 @@ +package VeraxFeather.authentification; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.util.StringUtils; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import java.io.IOException; + +public class JwtRequestFilter extends OncePerRequestFilter { + + @Autowired + private UserDetailsService userDetailsService; + + @Autowired + private JwtUtil jwtUtil; + + @Override + protected void doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOException { + + final String authorizationHeader = request.getHeader("Authorization"); + + String username = null; + String jwt = null; + + if (authorizationHeader != null && authorizationHeader.startsWith("Bearer ")) { + jwt = authorizationHeader.substring(7); + username = jwtUtil.extractUsername(jwt); + } + + if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { + UserDetails userDetails = this.userDetailsService.loadUserByUsername(username); + + if (jwtUtil.validateToken(jwt, userDetails)) { + UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken( + userDetails, null, userDetails.getAuthorities()); + authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + SecurityContextHolder.getContext().setAuthentication(authentication); + } + } + + filterChain.doFilter(request, response); + } +} diff --git a/src/main/java/VeraxFeather/authentification/JwtUtil.java b/src/main/java/VeraxFeather/authentification/JwtUtil.java new file mode 100644 index 0000000..80c8117 --- /dev/null +++ b/src/main/java/VeraxFeather/authentification/JwtUtil.java @@ -0,0 +1,62 @@ +package VeraxFeather.authentification; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.stereotype.Component; +import java.util.Date; + +@Component +public class JwtUtil { + + @Value("${jwt.secret}") + private String secretKey; + + @Value("${jwt.expiration}") + private Long expirationTime; + + public String extractUsername(String token) { + return extractClaim(token, Claims::getSubject); + } + + public Date extractExpiration(String token) { + return extractClaim(token, Claims::getExpiration); + } + + public T extractClaim(String token, Function claimsResolver) { + final Claims claims = extractAllClaims(token); + return claimsResolver.apply(claims); + } + + private Claims extractAllClaims(String token) { + return Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody(); + } + + private Boolean isTokenExpired(String token) { + return extractExpiration(token).before(new Date()); + } + + public Boolean validateToken(String token, UserDetails userDetails) { + final String username = extractUsername(token); + return (username.equals(userDetails.getUsername()) && !isTokenExpired(token)); + } + + public String generateToken(UserDetails userDetails) { + Map claims = new HashMap<>(); + return createToken(claims, userDetails.getUsername()); + } + + private String createToken(Map claims, String subject) { + return Jwts.builder() + .setClaims(claims) + .setSubject(subject) + .setIssuedAt(new Date(System.currentTimeMillis())) + .setExpiration(new Date(System.currentTimeMillis() + expirationTime * 1000)) // Expiration time en secondes + .signWith(SignatureAlgorithm.HS256, secretKey).compact(); + } +} diff --git a/src/main/java/VeraxFeather/authentification/SpringSecurityConfig.java b/src/main/java/VeraxFeather/authentification/SpringSecurityConfig.java new file mode 100644 index 0000000..6b3db4f --- /dev/null +++ b/src/main/java/VeraxFeather/authentification/SpringSecurityConfig.java @@ -0,0 +1,59 @@ +package VeraxFeather.authentification; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.Customizer; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.oauth2.jose.jws.MacAlgorithm; +import org.springframework.security.oauth2.jwt.JwtDecoder; +import org.springframework.security.oauth2.jwt.NimbusJwtDecoder; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; +import org.springframework.security.web.SecurityFilterChain; + +import javax.crypto.spec.SecretKeySpec; + +@Configuration +@EnableWebSecurity +public class SpringSecurityConfig { + + private String jwtKey = "laclegeneree256…."; + + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + return http + .csrf(csrf -> csrf.disable()) + .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + .authorizeHttpRequests(auth -> auth.anyRequest().authenticated()) + .httpBasic(Customizer.withDefaults()) + .oauth2ResourceServer((oauth2) -> oauth2.jwt(Customizer.withDefaults())) + .build(); + } + + @Bean + public JwtDecoder jwtDecoder() { +// SecretKeySpec secretKey = new SecretKeySpec(this.jwtKey.getBytes(), "HmacSHA256"); +// return NimbusJwtDecoder.withSecretKey(secretKey).macAlgorithm(MacAlgorithm.HS256).build(); + + return NimbusJwtDecoder.withSecretKey(new SecretKeySpec(jwtKey.getBytes(), "HmacSHA256")) + .build(); + } + + @Bean + public UserDetailsService users() { + UserDetails user = User.builder().username("user").password(passwordEncoder().encode("password")).roles("USER") + .build(); + return new InMemoryUserDetailsManager(user); + } + + @Bean + public BCryptPasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } +} \ No newline at end of file diff --git a/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java b/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java index 4215bbb..bf20c4d 100644 --- a/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java +++ b/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java @@ -1,5 +1,7 @@ package VeraxFeather.controleurs; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @@ -15,11 +17,13 @@ public class ArticlesControleur { private final IArticlesDataManager articlesDataManager = new StubArticles(); @GetMapping(value="/articles", produces="application/json") + @PreAuthorize("hasRole('USER')") public List
getAllArticles() { return articlesDataManager.getAllArticles(); } @GetMapping(value="/articles/{id}", produces="application/json") + @PreAuthorize("hasRole('USER')") public Article getArticle(@PathVariable int id) { System.out.println("Id renseigné : " + id); @@ -31,3 +35,4 @@ public class ArticlesControleur { return "L'API fonctionne correctement!"; } } + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b13789..7c6a1a7 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,3 @@ +jwt.secret=superclesecrete +jwt.expiration=604800 # 604800 secondes équivalent à 7 jours diff --git a/target/demo-0.0.1-SNAPSHOT.jar.original b/target/demo-0.0.1-SNAPSHOT.jar.original deleted file mode 100644 index 97a72e1..0000000 Binary files a/target/demo-0.0.1-SNAPSHOT.jar.original and /dev/null differ diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties deleted file mode 100644 index b66207f..0000000 --- a/target/maven-archiver/pom.properties +++ /dev/null @@ -1,3 +0,0 @@ -artifactId=demo -groupId=tp2 -version=0.0.1-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index b1f17ff..89cec37 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,5 +1,4 @@ -tp2\demo\Exception\LivreException.class -tp2\demo\Model\Livre.class -tp2\demo\Exception\LivreExceptionForbidden.class -tp2\demo\Controller\LivreController.class -tp2\demo\DemoApplication.class +VeraxFeather\modele\articles\Article.class +VeraxFeather\modele\articles\contenus\Contenu.class +VeraxFeather\modele\articles\IArticlesDataManager.class +VeraxFeather\modele\articles\stub\StubArticles.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index bb81da5..ad8d5aa 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,5 +1,11 @@ -C:\Users\jeanm\OneDrive\Documents\BUT\cours_s4\servicesWeb\tp2\demo\src\main\java\tp2\demo\Model\Livre.java -C:\Users\jeanm\OneDrive\Documents\BUT\cours_s4\servicesWeb\tp2\demo\src\main\java\tp2\demo\Exception\LivreException.java -C:\Users\jeanm\OneDrive\Documents\BUT\cours_s4\servicesWeb\tp2\demo\src\main\java\tp2\demo\DemoApplication.java -C:\Users\jeanm\OneDrive\Documents\BUT\cours_s4\servicesWeb\tp2\demo\src\main\java\tp2\demo\Controller\LivreController.java -C:\Users\jeanm\OneDrive\Documents\BUT\cours_s4\servicesWeb\tp2\demo\src\main\java\tp2\demo\Exception\LivreExceptionForbidden.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\authentification\JwtRequestFilter.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\authentification\SpringSecurityConfig.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\VeraxFeatherApi.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\controleurs\ArticlesControleur.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\modele\articles\contenus\ContenuMedia.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\modele\articles\Article.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\modele\articles\contenus\ContenuParagraphe.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\authentification\JwtUtil.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\modele\articles\stub\StubArticles.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\modele\articles\contenus\Contenu.java +C:\Users\jeanm\OneDrive\Documents\BUT\VeraxFeather\src\main\java\VeraxFeather\modele\articles\IArticlesDataManager.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst deleted file mode 100644 index 6eb95e0..0000000 --- a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +++ /dev/null @@ -1 +0,0 @@ -tp2\demo\DemoApplicationTests.class diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst deleted file mode 100644 index 9ab25d9..0000000 --- a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ /dev/null @@ -1 +0,0 @@ -C:\Users\jeanm\OneDrive\Documents\BUT\cours_s4\servicesWeb\tp2\demo\src\test\java\tp2\demo\DemoApplicationTests.java diff --git a/target/site-webapp/WEB-INF/web.xml b/target/site-webapp/WEB-INF/web.xml deleted file mode 100644 index b1cc76e..0000000 --- a/target/site-webapp/WEB-INF/web.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - doxia - org.apache.maven.plugins.site.run.DoxiaFilter - - - - doxia - /* - - diff --git a/target/site-webapp/css/maven-base.css b/target/site-webapp/css/maven-base.css deleted file mode 100644 index 742a735..0000000 --- a/target/site-webapp/css/maven-base.css +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -body { - margin: 0px; - padding: 0px; -} -table { - padding:0px; - width: 100%; - margin-left: -2px; - margin-right: -2px; -} -acronym { - cursor: help; - border-bottom: 1px dotted #feb; -} -table.bodyTable th, table.bodyTable td { - padding: 2px 4px 2px 4px; - vertical-align: top; -} -div.clear { - clear:both; - visibility: hidden; -} -div.clear hr { - display: none; -} -#bannerLeft, #bannerRight { - font-size: xx-large; - font-weight: bold; -} -#bannerLeft img, #bannerRight img { - margin: 0px; -} -.xleft, #bannerLeft img { - float:left; -} -.xright, #bannerRight { - float:right; -} -#banner { - padding: 0px; -} -#breadcrumbs { - padding: 3px 10px 3px 10px; -} -#leftColumn { - width: 170px; - float:left; - overflow: auto; -} -#bodyColumn { - margin-right: 1.5em; - margin-left: 197px; -} -#legend { - padding: 8px 0 8px 0; -} -#navcolumn { - padding: 8px 4px 0 8px; -} -#navcolumn h5 { - margin: 0; - padding: 0; - font-size: small; -} -#navcolumn ul { - margin: 0; - padding: 0; - font-size: small; -} -#navcolumn li { - list-style-type: none; - background-image: none; - background-repeat: no-repeat; - background-position: 0 0.4em; - padding-left: 16px; - list-style-position: outside; - line-height: 1.2em; - font-size: smaller; -} -#navcolumn li.expanded { - background-image: url(../images/expanded.gif); -} -#navcolumn li.collapsed { - background-image: url(../images/collapsed.gif); -} -#navcolumn li.none { - text-indent: -1em; - margin-left: 1em; -} -#poweredBy { - text-align: center; -} -#navcolumn img { - margin-top: 10px; - margin-bottom: 3px; -} -#poweredBy img { - display:block; - margin: 20px 0 20px 17px; -} -#search img { - margin: 0px; - display: block; -} -#search #q, #search #btnG { - border: 1px solid #999; - margin-bottom:10px; -} -#search form { - margin: 0px; -} -#lastPublished { - font-size: x-small; -} -.navSection { - margin-bottom: 2px; - padding: 8px; -} -.navSectionHead { - font-weight: bold; - font-size: x-small; -} -.section { - padding: 4px; -} -#footer { - padding: 3px 10px 3px 10px; - font-size: x-small; -} -#breadcrumbs { - font-size: x-small; - margin: 0pt; -} -.source { - padding: 12px; - margin: 1em 7px 1em 7px; -} -.source pre { - margin: 0px; - padding: 0px; -} -#navcolumn img.imageLink, .imageLink { - padding-left: 0px; - padding-bottom: 0px; - padding-top: 0px; - padding-right: 2px; - border: 0px; - margin: 0px; -} diff --git a/target/site-webapp/css/maven-theme.css b/target/site-webapp/css/maven-theme.css deleted file mode 100644 index 4e2bdfb..0000000 --- a/target/site-webapp/css/maven-theme.css +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -body { - padding: 0px 0px 10px 0px; -} -body, td, select, input, li{ - font-family: Verdana, Helvetica, Arial, sans-serif; - font-size: 13px; -} -code{ - font-family: Courier, monospace; - font-size: 13px; -} -a { - text-decoration: none; -} -a:link { - color:#36a; -} -a:visited { - color:#47a; -} -a:active, a:hover { - color:#69c; -} -#legend li.externalLink { - background: url(../images/external.png) left top no-repeat; - padding-left: 18px; -} -a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover { - background: url(../images/external.png) right center no-repeat; - padding-right: 18px; -} -#legend li.newWindow { - background: url(../images/newwindow.png) left top no-repeat; - padding-left: 18px; -} -a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover { - background: url(../images/newwindow.png) right center no-repeat; - padding-right: 18px; -} -h2 { - padding: 4px 4px 4px 6px; - border: 1px solid #999; - color: #900; - background-color: #ddd; - font-weight:900; - font-size: x-large; -} -h3 { - padding: 4px 4px 4px 6px; - border: 1px solid #aaa; - color: #900; - background-color: #eee; - font-weight: normal; - font-size: large; -} -h4 { - padding: 4px 4px 4px 6px; - border: 1px solid #bbb; - color: #900; - background-color: #fff; - font-weight: normal; - font-size: large; -} -h5 { - padding: 4px 4px 4px 6px; - color: #900; - font-size: medium; -} -p { - line-height: 1.3em; - font-size: small; -} -#breadcrumbs { - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; - background-color: #ccc; -} -#leftColumn { - margin: 10px 0 0 5px; - border: 1px solid #999; - background-color: #eee; - padding-bottom: 3px; /* IE-9 scrollbar-fix */ -} -#navcolumn h5 { - font-size: smaller; - border-bottom: 1px solid #aaaaaa; - padding-top: 2px; - color: #000; -} - -table.bodyTable th { - color: white; - background-color: #bbb; - text-align: left; - font-weight: bold; -} - -table.bodyTable th, table.bodyTable td { - font-size: 1em; -} - -table.bodyTable tr.a { - background-color: #ddd; -} - -table.bodyTable tr.b { - background-color: #eee; -} - -.source { - border: 1px solid #999; -} -dl { - padding: 4px 4px 4px 6px; - border: 1px solid #aaa; - background-color: #ffc; -} -dt { - color: #900; -} -#organizationLogo img, #projectLogo img, #projectLogo span{ - margin: 8px; -} -#banner { - border-bottom: 1px solid #fff; -} -.errormark, .warningmark, .donemark, .infomark { - background: url(../images/icon_error_sml.gif) no-repeat; -} - -.warningmark { - background-image: url(../images/icon_warning_sml.gif); -} - -.donemark { - background-image: url(../images/icon_success_sml.gif); -} - -.infomark { - background-image: url(../images/icon_info_sml.gif); -} - diff --git a/target/site-webapp/css/print.css b/target/site-webapp/css/print.css deleted file mode 100644 index 97be85f..0000000 --- a/target/site-webapp/css/print.css +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { - display: none !important; -} -#bodyColumn, body.docs div.docs { - margin: 0 !important; - border: none !important -} diff --git a/target/site-webapp/css/site.css b/target/site-webapp/css/site.css deleted file mode 100644 index 055e7e2..0000000 --- a/target/site-webapp/css/site.css +++ /dev/null @@ -1 +0,0 @@ -/* You can override this file with your own styles */ \ No newline at end of file diff --git a/target/site-webapp/images/collapsed.gif b/target/site-webapp/images/collapsed.gif deleted file mode 100644 index 6e71084..0000000 Binary files a/target/site-webapp/images/collapsed.gif and /dev/null differ diff --git a/target/site-webapp/images/expanded.gif b/target/site-webapp/images/expanded.gif deleted file mode 100644 index 0fef3d8..0000000 Binary files a/target/site-webapp/images/expanded.gif and /dev/null differ diff --git a/target/site-webapp/images/external.png b/target/site-webapp/images/external.png deleted file mode 100644 index 3f999fc..0000000 Binary files a/target/site-webapp/images/external.png and /dev/null differ diff --git a/target/site-webapp/images/icon_error_sml.gif b/target/site-webapp/images/icon_error_sml.gif deleted file mode 100644 index 61132ef..0000000 Binary files a/target/site-webapp/images/icon_error_sml.gif and /dev/null differ diff --git a/target/site-webapp/images/icon_info_sml.gif b/target/site-webapp/images/icon_info_sml.gif deleted file mode 100644 index c6cb9ad..0000000 Binary files a/target/site-webapp/images/icon_info_sml.gif and /dev/null differ diff --git a/target/site-webapp/images/icon_success_sml.gif b/target/site-webapp/images/icon_success_sml.gif deleted file mode 100644 index 52e85a4..0000000 Binary files a/target/site-webapp/images/icon_success_sml.gif and /dev/null differ diff --git a/target/site-webapp/images/icon_warning_sml.gif b/target/site-webapp/images/icon_warning_sml.gif deleted file mode 100644 index 873bbb5..0000000 Binary files a/target/site-webapp/images/icon_warning_sml.gif and /dev/null differ diff --git a/target/site-webapp/images/logos/build-by-maven-black.png b/target/site-webapp/images/logos/build-by-maven-black.png deleted file mode 100644 index 919fd0f..0000000 Binary files a/target/site-webapp/images/logos/build-by-maven-black.png and /dev/null differ diff --git a/target/site-webapp/images/logos/build-by-maven-white.png b/target/site-webapp/images/logos/build-by-maven-white.png deleted file mode 100644 index 7d44c9c..0000000 Binary files a/target/site-webapp/images/logos/build-by-maven-white.png and /dev/null differ diff --git a/target/site-webapp/images/logos/maven-feather.png b/target/site-webapp/images/logos/maven-feather.png deleted file mode 100644 index b5ada83..0000000 Binary files a/target/site-webapp/images/logos/maven-feather.png and /dev/null differ diff --git a/target/site-webapp/images/newwindow.png b/target/site-webapp/images/newwindow.png deleted file mode 100644 index 6287f72..0000000 Binary files a/target/site-webapp/images/newwindow.png and /dev/null differ diff --git a/target/surefire-reports/TEST-tp2.demo.DemoApplicationTests.xml b/target/surefire-reports/TEST-tp2.demo.DemoApplicationTests.xml deleted file mode 100644 index dce8cbf..0000000 --- a/target/surefire-reports/TEST-tp2.demo.DemoApplicationTests.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/surefire-reports/tp2.demo.DemoApplicationTests.txt b/target/surefire-reports/tp2.demo.DemoApplicationTests.txt deleted file mode 100644 index f34f13e..0000000 --- a/target/surefire-reports/tp2.demo.DemoApplicationTests.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: tp2.demo.DemoApplicationTests -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.291 s -- in tp2.demo.DemoApplicationTests