From 0011476a3eb9104075f31081b7b98f172fd77a52 Mon Sep 17 00:00:00 2001 From: Ajit Chakra Date: Tue, 21 Mar 2023 18:02:45 -0700 Subject: [PATCH] Added lombok plugin to be able to create data object , and add some model objects templates to start with Summary: Added lombok plugin to be able to create data object , and add some model objects templates to start with. Overall execution plan: https://docs.google.com/document/d/1j-2mf1bPdR9vsahhSeB2LfHHC3pSAXY8aV99cNHUoPk/edit# This diff: 1. creates a lombok object to efficiently add model objects. 2. creates model objects with annotation pre processor , supported by lombok during compile time. 3. Added a generated file for lombok config. 4. Added a threadsafe cache which will be used as a primary cache. Upcoming: 1. create singleton to instantiate a deployment meta class with respective models. 2. use spring way to create config class to create singleton. 3. Hook up controller to use this Differential Revision: D44281679 fbshipit-source-id: 5bbb4e748c59fb79410bb0c418658f2488ea7991 --- fbpcs/infra/cloud_bridge/server/build.gradle | 3 ++ fbpcs/infra/cloud_bridge/server/lombok.config | 2 + .../deployment/cache/ThreadSafeCache.java | 42 +++++++++++++++++++ .../deployment/models/DeploymentMeta.java | 18 ++++++++ .../deployment/models/DeploymentStatus.java | 22 ++++++++++ 5 files changed, 87 insertions(+) create mode 100644 fbpcs/infra/cloud_bridge/server/lombok.config create mode 100644 fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/cache/ThreadSafeCache.java create mode 100644 fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/models/DeploymentMeta.java create mode 100644 fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/models/DeploymentStatus.java diff --git a/fbpcs/infra/cloud_bridge/server/build.gradle b/fbpcs/infra/cloud_bridge/server/build.gradle index 04573937a..c7a3a83b1 100644 --- a/fbpcs/infra/cloud_bridge/server/build.gradle +++ b/fbpcs/infra/cloud_bridge/server/build.gradle @@ -18,6 +18,7 @@ plugins { id 'org.springframework.boot' version '2.7.0' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' + id 'io.freefair.lombok' version '5.1.0' } group = 'com.facebook' @@ -39,6 +40,8 @@ dependencies { implementation 'org.apache.commons:commons-lang3' implementation platform('com.amazonaws:aws-java-sdk-bom:1.12.+') testImplementation group: 'junit', name: 'junit', version: '4.13.2' + compileOnly 'org.projectlombok:lombok:1.18.26' + annotationProcessor 'org.projectlombok:lombok:1.18.26' } test { diff --git a/fbpcs/infra/cloud_bridge/server/lombok.config b/fbpcs/infra/cloud_bridge/server/lombok.config new file mode 100644 index 000000000..6aa51d71e --- /dev/null +++ b/fbpcs/infra/cloud_bridge/server/lombok.config @@ -0,0 +1,2 @@ +# This file is generated by the 'io.freefair.lombok' Gradle plugin +config.stopBubbling = true diff --git a/fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/cache/ThreadSafeCache.java b/fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/cache/ThreadSafeCache.java new file mode 100644 index 000000000..1b86c1ba1 --- /dev/null +++ b/fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/cache/ThreadSafeCache.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.business.cloudbridge.pl.server.deployment.cache; + +import java.util.concurrent.ConcurrentHashMap; + +public class ThreadSafeCache { + private ConcurrentHashMap map; + + public ThreadSafeCache() { + map = new ConcurrentHashMap(); + } + + public void put(K key, V value) { + map.put(key, value); + } + + public V get(K key) { + return map.get(key); + } + + public void remove(K key) { + map.remove(key); + } + + public boolean containsKey(K key) { + return map.containsKey(key); + } + + public int size() { + return map.size(); + } + + public void clear() { + map.clear(); + } +} diff --git a/fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/models/DeploymentMeta.java b/fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/models/DeploymentMeta.java new file mode 100644 index 000000000..79d31e8fa --- /dev/null +++ b/fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/models/DeploymentMeta.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.business.cloudbridge.pl.server.deployment.models; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class DeploymentMeta { + private String deploymentId; + private DeploymentStatus deploymentStatus; +} diff --git a/fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/models/DeploymentStatus.java b/fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/models/DeploymentStatus.java new file mode 100644 index 000000000..df0c3b4bd --- /dev/null +++ b/fbpcs/infra/cloud_bridge/server/src/main/java/com/facebook/business/cloudbridge/pl/server/deployment/models/DeploymentStatus.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.business.cloudbridge.pl.server.deployment.models; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum DeploymentStatus { + NOT_STARTED("NOT_STARTED"), + STARTED("STARTED"), + ERROR("ERROR"), + COMPLETED("COMPLETED"); + + private final String status; +}