diff --git a/pom.xml b/pom.xml
index 199b016..7535a60 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
17
2.3.0
3.14.7
- 0.6.5
+ v1.1.0-beta.2
1.5.2
true
diff --git a/src/main/java/com/fynd/example/java/ExampleJavaApplication.java b/src/main/java/com/fynd/example/java/ExampleJavaApplication.java
index 59816a0..ce730a8 100644
--- a/src/main/java/com/fynd/example/java/ExampleJavaApplication.java
+++ b/src/main/java/com/fynd/example/java/ExampleJavaApplication.java
@@ -1,69 +1,80 @@
package com.fynd.example.java;
-
import com.fynd.extension.model.Extension;
import com.fynd.extension.model.ExtensionCallback;
import com.fynd.extension.model.ExtensionProperties;
import com.fynd.extension.session.Session;
-import com.fynd.extension.storage.SQLiteStorage;
+import com.fynd.extension.storage.MultiLevelStorage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Import;
+import redis.clients.jedis.JedisPool;
+import com.mongodb.client.MongoDatabase;
+import com.fynd.example.java.config.RedisConfig;
+import com.fynd.example.java.config.MongoConfig;
+
+import java.util.HashMap;
+import java.util.Map;
@SpringBootApplication
@ComponentScan(basePackages = {"com.fynd.**","com.sdk.**"})
+@Import({RedisConfig.class, MongoConfig.class})
public class ExampleJavaApplication {
- private static final String REDIS_KEY = "ext_sample";
+ private static final String REDIS_KEY = "ext_sample";
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
- @Value("${sqlite.db.url}")
- private String dbUrl;
+ @Autowired
+ ExtensionProperties extensionProperties;
- @Autowired
- ExtensionProperties extensionProperties;
+ @Autowired
+ JedisPool jedisPool;
+ @Autowired
+ MongoDatabase mongoDatabase;
- ExtensionCallback callbacks = new ExtensionCallback((request) -> {
- Session fdkSession = (Session) request.getAttribute("session");
- logger.debug("In Auth callback");
- if(request.getParameter("application_id") != null){
- return extensionProperties.getBaseUrl() + "/company/" + fdkSession.getCompanyId() + "/application/" + request.getParameter("application_id");
- }
- else {
- return extensionProperties.getBaseUrl() + "/company/" + fdkSession.getCompanyId();
- }
- }, (context) -> {
- logger.info("In install callback");
- return extensionProperties.getBaseUrl();
+ ExtensionCallback callbacks = new ExtensionCallback((request) -> {
+ Session fdkSession = (Session) request.getAttribute("session");
+ logger.debug("In Auth callback");
+ if(request.getParameter("application_id") != null){
+ return extensionProperties.getBaseUrl() + "/company/" + fdkSession.getCompanyId() + "/application/" + request.getParameter("application_id");
+ }
+ else {
+ return extensionProperties.getBaseUrl() + "/company/" + fdkSession.getCompanyId();
+ }
+ }, (context) -> {
+ logger.info("In install callback");
+ return extensionProperties.getBaseUrl();
- }, (fdkSession) -> {
- logger.info("In uninstall callback");
- return extensionProperties.getBaseUrl();
+ }, (fdkSession) -> {
+ logger.info("In uninstall callback");
+ return extensionProperties.getBaseUrl();
- }, (fdkSession) -> {
- logger.info("In auto-install callback");
- return extensionProperties.getBaseUrl();
- });
+ }, (fdkSession) -> {
+ logger.info("In auto-install callback");
+ return extensionProperties.getBaseUrl();
+ });
- public static void main(String[] args) {
- SpringApplication.run(ExampleJavaApplication.class, args);
- }
+ public static void main(String[] args) {
+ SpringApplication.run(ExampleJavaApplication.class, args);
+ }
- @Bean
- public com.fynd.extension.model.Extension getExtension() throws ClassNotFoundException {
- Extension extension = new Extension();
- return extension.initialize(
- extensionProperties,
- new SQLiteStorage(dbUrl, REDIS_KEY),
- callbacks
- );
- }
+ @Bean
+ public com.fynd.extension.model.Extension getExtension() throws ClassNotFoundException {
+ Extension extension = new Extension();
+ Map options = new HashMap<>();
+ // Add any required options to the map
+ return extension.initialize(
+ extensionProperties,
+ new MultiLevelStorage(jedisPool, mongoDatabase, REDIS_KEY, options),
+ callbacks
+ );
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/fynd/example/java/config/MongoConfig.java b/src/main/java/com/fynd/example/java/config/MongoConfig.java
new file mode 100644
index 0000000..c87231f
--- /dev/null
+++ b/src/main/java/com/fynd/example/java/config/MongoConfig.java
@@ -0,0 +1,22 @@
+package com.fynd.example.java.config;
+
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
+import com.mongodb.client.MongoDatabase;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MongoConfig {
+
+ @Bean
+ public MongoClient mongoClient() {
+ return MongoClients.create("mongodb://localhost:27017");
+ }
+
+ @Bean
+ public MongoDatabase mongoDatabase(MongoClient mongoClient) {
+ // Replace "yourDatabaseName" with the name of your MongoDB database
+ return mongoClient.getDatabase("extension-storage");
+ }
+}
diff --git a/src/main/java/com/fynd/example/java/config/RedisConfig.java b/src/main/java/com/fynd/example/java/config/RedisConfig.java
new file mode 100644
index 0000000..bf72dc9
--- /dev/null
+++ b/src/main/java/com/fynd/example/java/config/RedisConfig.java
@@ -0,0 +1,17 @@
+package com.fynd.example.java.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.JedisPoolConfig;
+
+@Configuration
+public class RedisConfig {
+
+ @Bean
+ public JedisPool jedisPool() {
+ JedisPoolConfig poolConfig = new JedisPoolConfig();
+ // Configure the pool if necessary
+ return new JedisPool(poolConfig, "localhost", 6379);
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index f9fdcf0..f0a30d3 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -48,7 +48,7 @@ server:
ext:
api_key: ${EXTENSION_API_KEY}
api_secret: ${EXTENSION_API_SECRET}
- scopes: ""
+ access_mode : 'offline'
base_url: ${EXTENSION_BASE_URL}
cluster: ${FP_API_DOMAIN:https://api.fynd.com}
webhook: