Skip to content

Commit 3bbed14

Browse files
committed
fix issue with LocalMediaStorageHandler not storing images in the correct folders
1 parent 6d62260 commit 3bbed14

File tree

4 files changed

+19
-15
lines changed

4 files changed

+19
-15
lines changed

src/main/java/com/aventstack/extentreports/ExtentTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ public synchronized ExtentTest log(Status status, String details, MediaEntityMod
308308
return addLog(evt);
309309
}
310310

311-
private void addMedia(Log evt, MediaEntityModelProvider provider) {
311+
private synchronized void addMedia(Log evt, MediaEntityModelProvider provider) {
312312
if (provider != null) {
313313
Class<? extends Media> clazz = provider.getMedia().getClass();
314314

src/main/java/com/aventstack/extentreports/MediaEntityBuilder.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*/
1313
public class MediaEntityBuilder {
1414

15-
private static ThreadLocal<Media> media;
15+
private static ThreadLocal<Media> media = new ThreadLocal<Media>();
1616

1717
private static class MediaBuilderInstance {
1818
static final MediaEntityBuilder INSTANCE = new MediaEntityBuilder();
@@ -22,33 +22,33 @@ private MediaBuilderInstance() { }
2222

2323
private MediaEntityBuilder() { }
2424

25-
private static MediaEntityBuilder getInstance() {
25+
private static synchronized MediaEntityBuilder getInstance() {
2626
return MediaBuilderInstance.INSTANCE;
2727
}
2828

2929
public MediaEntityModelProvider build() {
3030
return new MediaEntityModelProvider(media.get());
3131
}
3232

33-
public static MediaEntityBuilder createScreenCaptureFromPath(String path, String title) throws IOException {
33+
public static synchronized MediaEntityBuilder createScreenCaptureFromPath(String path, String title) throws IOException {
3434
if (path == null || path.isEmpty())
3535
throw new IOException("ScreenCapture path cannot be null or empty.");
3636

3737
return createScreenCapture(path, title, false);
3838
}
3939

40-
public static MediaEntityBuilder createScreenCaptureFromPath(String path) throws IOException {
40+
public static synchronized MediaEntityBuilder createScreenCaptureFromPath(String path) throws IOException {
4141
return createScreenCaptureFromPath(path, null);
4242
}
4343

44-
public static MediaEntityBuilder createScreenCaptureFromBase64String(String base64String) throws IOException {
44+
public static synchronized MediaEntityBuilder createScreenCaptureFromBase64String(String base64String) throws IOException {
4545
if (base64String == null || base64String.trim().equals(""))
4646
throw new IOException("Base64 string cannot be null or empty.");
4747

4848
return createScreenCapture(base64String, null, true);
4949
}
5050

51-
private static MediaEntityBuilder createScreenCapture(String pathOrBase64String, String title, boolean isBase64String) {
51+
private static synchronized MediaEntityBuilder createScreenCapture(String pathOrBase64String, String title, boolean isBase64String) {
5252
ScreenCapture sc = new ScreenCapture();
5353
sc.setMediaType(MediaType.IMG);
5454
if (isBase64String)
@@ -58,8 +58,7 @@ private static MediaEntityBuilder createScreenCapture(String pathOrBase64String,
5858

5959
if (title != null)
6060
sc.setName(title);
61-
62-
media = new ThreadLocal<Media>();
61+
6362
media.set(sc);
6463

6564
return getInstance();

src/main/java/com/aventstack/extentreports/mediastorage/LocalMediaStorageHandler.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,16 @@ public void storeMedia(Media screenCapture) throws IOException {
3030
}
3131

3232
private void mkDirs() {
33-
String fileName = reporterGeneratedFilePath + ".";
33+
String ext = FileUtil.getExtension(reporterGeneratedFilePath);
34+
String archiveName = "";
35+
if (ext.equalsIgnoreCase("htm") || ext.equalsIgnoreCase("html")) {
36+
archiveName = FileUtil.getFileNameWithoutExtension(reporterGeneratedFilePath) + ".";
37+
}
3438
String absolutePath = new File(reporterGeneratedFilePath).getAbsolutePath().replace("\\", "/");
35-
String basePath = new File(absolutePath).getParent().replace("\\", "/");
39+
String basePath = archiveName.isEmpty() ? absolutePath : new File(absolutePath).getParent().replace("\\", "/");
40+
archiveName = archiveName.isEmpty() ? archiveName = FileUtil.getFileNameWithoutExtension(reporterGeneratedFilePath) + "." : archiveName;
3641

37-
mkDirs(basePath, fileName, 0);
42+
mkDirs(basePath, archiveName, 0);
3843
}
3944

4045
private void mkDirs(String basePath, String fileName, int cnt) {

src/main/java/com/aventstack/extentreports/reporter/BasicFileReporter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ public abstract class BasicFileReporter
5555
private static final Logger logger = Logger.getLogger(BasicFileReporter.class.getName());
5656

5757
private static final String DEFAULT_MEDIA_SAVE_PROPERTY_NAME = "autoCreateRelativePathMedia";
58-
private static final String DEFAULT_MEDIA_SAVE_PATH_NAME = "extent-media";
5958
private static final String TEMPLATE_LOCATION = "view/";
6059

6160
private static String ENCODING = "UTF-8";
@@ -163,7 +162,7 @@ public void start() {
163162
}
164163

165164
public synchronized void flush(ReportAggregates reportAggregates) {
166-
super.flush(reportAggregates);
165+
super.flush(reportAggregates);
167166
this.authorContext = reportAggregates.getAuthorContext();
168167
this.categoryContext = reportAggregates.getCategoryContext();
169168
this.deviceContext = reportAggregates.getDeviceContext();
@@ -251,6 +250,7 @@ private void mediaExists(Media m) throws IOException {
251250
}
252251

253252
private void autoCreateRelativePathMedia(ScreenCapture screenCapture) throws IOException {
253+
// if user has not specific a configuration, exit
254254
if (userConfig == null)
255255
return;
256256

@@ -259,7 +259,7 @@ private void autoCreateRelativePathMedia(ScreenCapture screenCapture) throws IOE
259259
if (autoCreateRelativePathMedia != null && Boolean.valueOf(autoCreateRelativePathMedia)) {
260260
if (media == null) {
261261
media = new LocalMediaStorageHandler();
262-
media.init(destination + DEFAULT_MEDIA_SAVE_PATH_NAME);
262+
media.init(destination);
263263
}
264264
media.storeMedia(screenCapture);
265265
}

0 commit comments

Comments
 (0)