Data Collector example using Strategy and Pipeline Pattern
Let's design a flexible and extensible solution to extract various data points from different sources or formats.
Strategy Pattern: Encapsulate data collection algorithms in separate classes (Data Collectors).
Pipeline Pattern: Break down the data extraction process into smaller, independent steps (each Data Collector). Process data sequentially for clarity and maintainability.
Create DataCollector interface along with a method collect which takes input as well as output object, which is to be updated.
TokenDataCollector.java- Collects token metadata and set in the output
@ComponentpublicclassTokenDataCollectorimplementsDataCollector { @Overridepublicvoidcollect(InputData inputData,OutputData outputData) {// Add logic to extract claims from JWT token and Set the values accordingly.// Sample values are provided below.outputData.setUserId("claim.userid");outputData.setUserIp("claim.ip");outputData.setUserName("claim.subject");outputData.setUserEmailId("claim.emailid");outputData.setUserPreferredLanguage("claim.language"); }}
HttpRequestDataCollector.java- Collects http request related parameters