Skip to content

Commit c2440ca

Browse files
authored
Merge pull request #8 from Shahnawaz-Sk/main
error checks
2 parents 9aca2cc + 4a23abe commit c2440ca

File tree

5 files changed

+65
-30
lines changed

5 files changed

+65
-30
lines changed

src/main/java/io/github/lambdatest/SmartUIFacade.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class SmartUIFacade {
1313

1414
public SmartUIFacade() {
1515
this.smartUIUtils = new SmartUIUtil();
16-
this.log = LoggerUtil.createLogger(SmartUIFacade.class.getName());
16+
this.log = LoggerUtil.createLogger("lambdatest-java-sdk");
1717
}
1818

1919
public boolean isSmartUIRunning() {

src/main/java/io/github/lambdatest/SmartUISnapshot.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static void smartuiSnapshot(WebDriver driver, String snapshotName, Map<St
2626
if (snapshotName == null || snapshotName.isEmpty()) {
2727
throw new IllegalArgumentException(Constants.Errors.SNAPSHOT_NAME_NULL);
2828
}
29-
Logger log = LoggerUtil.createLogger(SmartUISnapshot.class.getName());
29+
Logger log = LoggerUtil.createLogger("lambdatest-java-sdk");
3030

3131
Gson gson = new Gson();
3232

@@ -98,7 +98,6 @@ public static void smartuiSnapshot(WebDriver driver, String snapshotName, Map<St
9898

9999
} catch (Exception e) {
100100
log.severe(String.format(Constants.Errors.SMARTUI_SNAPSHOT_FAILED, snapshotName));
101-
log.severe(e.getMessage());
102101
}
103102
}
104103

src/main/java/io/github/lambdatest/utils/HttpClientUtil.java

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,21 @@
1313
import io.github.lambdatest.constants.Constants;
1414
import java.io.IOException;
1515
import java.nio.charset.StandardCharsets;
16+
import java.util.logging.Logger;
17+
import org.json.*;
18+
import com.google.gson.JsonObject;
19+
import com.google.gson.JsonParser;
20+
import com.google.gson.JsonSyntaxException;
21+
import com.google.gson.JsonElement;
22+
1623

1724
public class HttpClientUtil {
1825
private final CloseableHttpClient httpClient;
26+
private Logger log;
1927

2028
public HttpClientUtil() {
2129
this.httpClient = HttpClients.createDefault();
30+
this.log = LoggerUtil.createLogger("lambdatest-java-sdk");
2231
}
2332

2433
public String request(String url, String method, String data) throws IOException {
@@ -44,14 +53,37 @@ private String post(String url, String data) throws IOException {
4453
HttpPost request = new HttpPost(url);
4554
request.setEntity(new StringEntity(data, StandardCharsets.UTF_8));
4655
request.setHeader("Content-type", "application/json");
47-
56+
4857
try (CloseableHttpResponse response = httpClient.execute(request)) {
49-
checkResponseStatus(response);
5058
HttpEntity entity = response.getEntity();
51-
return entity != null ? EntityUtils.toString(entity) : null;
59+
String responseString = entity != null ? EntityUtils.toString(entity) : null;
60+
61+
int statusCode = response.getStatusLine().getStatusCode();
62+
if (statusCode == HttpStatus.SC_OK) {
63+
// Request was successful
64+
return responseString;
65+
} else {
66+
// Request failed, attempt to parse error message from response
67+
try {
68+
JsonElement element = new JsonParser().parse(responseString);
69+
if (element.isJsonObject()) {
70+
JsonObject jsonResponse = element.getAsJsonObject();
71+
if (jsonResponse.has("error") && jsonResponse.get("error").isJsonObject()) {
72+
JsonObject errorObject = jsonResponse.getAsJsonObject("error");
73+
if (errorObject.has("message")) {
74+
String errorMessage = errorObject.get("message").getAsString();
75+
log.severe(String.format(Constants.Errors.POST_SNAPSHOT_FAILED, errorMessage));
76+
}
77+
}
78+
}
79+
} catch (JsonSyntaxException e) {
80+
throw new IOException("Failed to parse error response: " + responseString, e);
81+
}
82+
throw new IOException("Unexpected status code: " + statusCode);
83+
}
5284
}
5385
}
54-
86+
5587
private void checkResponseStatus(HttpResponse response) throws IOException {
5688
int statusCode = response.getStatusLine().getStatusCode();
5789
if (statusCode != HttpStatus.SC_OK) {

src/main/java/io/github/lambdatest/utils/LoggerUtil.java

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,32 @@
1010
public class LoggerUtil {
1111
public static Logger createLogger(String logContext) {
1212
Logger logger = Logger.getLogger(logContext);
13-
logger.setLevel(getLogLevel());
14-
logger.setUseParentHandlers(false);
1513

16-
ConsoleHandler handler = new ConsoleHandler();
17-
handler.setFormatter(new Formatter() {
18-
@Override
19-
public String format(LogRecord record) {
20-
String message = formatMessage(record);
21-
if (record.getLevel().equals(Level.FINE)) {
22-
message = Constants.LoggerColors.ANSI_BLUE + message + Constants.LoggerColors.ANSI_RESET;
23-
} else if (record.getLevel().equals(Level.WARNING)) {
24-
message = Constants.LoggerColors.ANSI_YELLOW + message + Constants.LoggerColors.ANSI_RESET;
25-
} else if (record.getLevel().equals(Level.SEVERE)) {
26-
message = Constants.LoggerColors.ANSI_RED + message + Constants.LoggerColors.ANSI_RESET;
14+
// Check if the logger already has the custom handler configured
15+
if (logger.getHandlers().length == 0) {
16+
logger.setLevel(getLogLevel());
17+
logger.setUseParentHandlers(false);
18+
19+
ConsoleHandler handler = new ConsoleHandler();
20+
handler.setFormatter(new Formatter() {
21+
@Override
22+
public String format(LogRecord record) {
23+
String message = formatMessage(record);
24+
if (record.getLevel().equals(Level.FINE)) {
25+
message = Constants.LoggerColors.ANSI_BLUE + message + Constants.LoggerColors.ANSI_RESET;
26+
} else if (record.getLevel().equals(Level.WARNING)) {
27+
message = Constants.LoggerColors.ANSI_YELLOW + message + Constants.LoggerColors.ANSI_RESET;
28+
} else if (record.getLevel().equals(Level.SEVERE)) {
29+
message = Constants.LoggerColors.ANSI_RED + message + Constants.LoggerColors.ANSI_RESET;
30+
}
31+
return String.format("[%s] %s%n", logContext, message);
2732
}
28-
return String.format("[%s] %s%n", logContext, message);
29-
}
30-
});
31-
logger.addHandler(handler);
32-
33+
});
34+
logger.addHandler(handler);
35+
} else {
36+
// The logger already has handlers, assuming it's already configured
37+
}
38+
3339
return logger;
3440
}
3541

@@ -52,4 +58,4 @@ private static Level getLogLevel() {
5258
}
5359
return Level.INFO;
5460
}
55-
}
61+
}

src/main/java/io/github/lambdatest/utils/SmartUIUtil.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class SmartUIUtil {
1616

1717
public SmartUIUtil() {
1818
this.httpClient = new HttpClientUtil();
19-
this.log = LoggerUtil.createLogger(SmartUIUtil.class.getName());
19+
this.log = LoggerUtil.createLogger("lambdatest-java-sdk");
2020
}
2121

2222
public boolean isSmartUIRunning() {
@@ -57,9 +57,7 @@ public String postSnapshot(Object snapshotDOM, Map<String, Object> options, Stri
5757
try {
5858
return httpClient.postSnapshot(jsonData);
5959
} catch (Exception e) {
60-
log.severe(String.format(Constants.Errors.POST_SNAPSHOT_FAILED, testType));
61-
log.severe(e.getMessage());
62-
throw e;
60+
return null;
6361
}
6462
}
6563

0 commit comments

Comments
 (0)