Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# All variables must be defined in your local system

# Used locally and in Docker environments
TS_JWT_SECRET="your-secret-key"
21 changes: 21 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Basic Docker file
#FROM eclipse-temurin:17-jdk-jammy
#WORKDIR /app
#COPY build/libs/task-scheduler-0.0.1-SNAPSHOT.jar /app/task-scheduler.jar
#EXPOSE 8081
#CMD ["java", "-jar", "/app/task-scheduler.jar"]

# Build
FROM gradle:jdk17 AS build
WORKDIR /app
COPY . .

# Run .jar
RUN gradle build --no-daemon
FROM eclipse-temurin:17-jdk-jammy
WORKDIR /app
COPY --from=build /app/build/libs/*.jar /app/task-scheduler.jar
EXPOSE 8081
CMD ["java", "-jar", "/app/task-scheduler.jar"]


2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ dependencies {
annotationProcessor 'org.mapstruct:mapstruct-processor:1.6.3'
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'

testImplementation 'org.springframework.boot:spring-boot-starter-data-mongodb-test'
testImplementation 'org.springframework.boot:spring-boot-starter-data-mongodb-test'
testImplementation 'org.springframework.boot:spring-boot-starter-security-test'
testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.mongodb.autoconfigure.MongoAutoConfiguration;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@SpringBootApplication(exclude = MongoAutoConfiguration.class)
@EnableFeignClients
public class TaskSchedulerApplication {
public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name = "user", url = "${user.url}")
@FeignClient(name = "user", url = "${ts.user.service.url}")
public interface UserClient {

@GetMapping("/user")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.javanauta.ts.taskscheduler.infrastructure.config;

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;

@Slf4j
@Configuration
public class MongoConfig {

@Bean
public MongoClient mongoClient(@Value("${spring.data.mongodb.uri}") String uri) {
log.info("Using MongoDB URI: {}", uri);
return MongoClients.create(uri);
}

@Bean
public MongoDatabaseFactory mongoDatabaseFactory(@Value("${spring.data.mongodb.uri}") String uri) {
return new SimpleMongoClientDatabaseFactory(uri);
}

@Bean
public MongoTemplate mongoTemplate(MongoDatabaseFactory factory) {
return new MongoTemplate(factory);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.nio.charset.StandardCharsets;
Expand All @@ -12,7 +13,8 @@
public class JwtUtil {

// Secret key used to sign and verify JWT tokens
private final String secretKey = "your-super-long-secret-key-that-needs-to-be-very-difficult";
@Value("${ts.jwt.secret}")
private String secretKey;

// Extracts claims from the JWT token
public Claims extractClaims(String token) {
Expand Down
12 changes: 8 additions & 4 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
spring.application.name=task-scheduler
spring.application.description=Task Scheduler - Task scheduler module

spring.data.mongodb.uri=mongodb://localhost:27017
spring.data.mongodb.database=ts_task_scheduler_db
server.port=8081

user.url=localhost:8080
spring.data.mongodb.database=ts_task_scheduler

server.port=8081
# Env variables set by bff's docker-compose and used in Docker environment only. Default (localhost) used otherwise
spring.data.mongodb.uri=${SPRING_DATA_MONGODB_URI:mongodb://localhost:27017/ts_task_scheduler}
ts.user.service.url=${TS_USER_SERVICE_URL:localhost:8080}

# Must be set locally - used locally and in docker environment (injected in bff's docker-compose)
ts.jwt.secret=${TS_JWT_SECRET}