@@ -2,6 +2,7 @@ package replete
2
2
3
3
import android.os.*
4
4
import com.eclipsesource.v8.*
5
+ import com.eclipsesource.v8.utils.V8Runnable
5
6
import java.io.*
6
7
import java.lang.StringBuilder
7
8
import java.net.HttpURLConnection
@@ -41,7 +42,7 @@ class VMHandler(
41
42
val mainLooper : Looper ,
42
43
val sendUIMessage : (Messages , Any? ) -> Unit ,
43
44
val bundleGetContents : (String ) -> String? ,
44
- val toAbsolutePath : (String ) -> File
45
+ val toAbsolutePath : (String ) -> File ?
45
46
) : Handler(mainLooper) {
46
47
var vm: V8 ? = null
47
48
@@ -501,19 +502,25 @@ class VMHandler(
501
502
502
503
private val repleteIsDirectory = JavaCallback { receiver, params ->
503
504
if (params.length() == 1 ) {
504
- val path = params.getString(0 )
505
- return @JavaCallback toAbsolutePath(path).isDirectory
505
+ val path = toAbsolutePath(params.getString(0 ))
506
+
507
+ if (path != null ) {
508
+ return @JavaCallback path.isDirectory
509
+ } else {
510
+ return @JavaCallback V8 .getUndefined()
511
+ }
512
+
506
513
} else {
507
514
return @JavaCallback V8 .getUndefined()
508
515
}
509
516
}
510
517
511
518
private val repleteListFiles = JavaCallback { receiver, params ->
512
519
if (params.length() == 1 ) {
513
- val path = params.getString(0 )
520
+ val path = toAbsolutePath( params.getString(0 ) )
514
521
val ret = V8Array (vm)
515
522
516
- toAbsolutePath( path) .list().forEach { p -> ret.push(p.toString()) }
523
+ path? .list()? .forEach { p -> ret.push(p.toString()) }
517
524
518
525
return @JavaCallback ret
519
526
} else {
@@ -526,7 +533,7 @@ class VMHandler(
526
533
val path = params.getString(0 )
527
534
528
535
try {
529
- toAbsolutePath(path).delete()
536
+ toAbsolutePath(path)? .delete()
530
537
} catch (e: IOException ) {
531
538
sendUIMessage(Messages .ADD_ERROR_ITEM , e.toString())
532
539
}
@@ -539,19 +546,20 @@ class VMHandler(
539
546
if (params.length() == 2 ) {
540
547
val fromPath = params.getString(0 )
541
548
val toPath = params.getString(1 )
542
- val fromStream = toAbsolutePath(fromPath).inputStream()
543
- val toStream = toAbsolutePath(toPath).outputStream()
549
+ val fromStream = toAbsolutePath(fromPath)? .inputStream()
550
+ val toStream = toAbsolutePath(toPath)? .outputStream()
544
551
545
- try {
546
- fromStream.copyTo(toStream)
547
- fromStream.close()
548
- toStream.close()
549
- } catch (e: IOException ) {
550
- fromStream.close()
551
- toStream.close()
552
- sendUIMessage(Messages .ADD_ERROR_ITEM , e.toString())
552
+ if (fromStream != null && toStream != null ) {
553
+ try {
554
+ fromStream.copyTo(toStream)
555
+ fromStream.close()
556
+ toStream.close()
557
+ } catch (e: IOException ) {
558
+ fromStream.close()
559
+ toStream.close()
560
+ sendUIMessage(Messages .ADD_ERROR_ITEM , e.toString())
561
+ }
553
562
}
554
-
555
563
}
556
564
return @JavaCallback V8 .getUndefined()
557
565
}
@@ -562,7 +570,7 @@ class VMHandler(
562
570
val absPath = toAbsolutePath(path)
563
571
564
572
try {
565
- if (! absPath.exists()) {
573
+ if (absPath != null && ! absPath.exists()) {
566
574
absPath.mkdirs()
567
575
}
568
576
} catch (e: Exception ) {
@@ -644,14 +652,13 @@ class VMHandler(
644
652
if (params.length() == 1 ) {
645
653
val path = params.getString(0 )
646
654
val item = toAbsolutePath(path)
647
-
648
- val itemType = if (item.isFile) " file" else if (item.isDirectory) " directory" else " unknown"
649
-
650
655
val ret = V8Object (vm)
651
656
652
- ret.add(" type" , itemType)
653
- ret.add(" modified" , item.lastModified().toDouble())
654
-
657
+ if (item != null ) {
658
+ val itemType = if (item.isFile) " file" else if (item.isDirectory) " directory" else " unknown"
659
+ ret.add(" type" , itemType)
660
+ ret.add(" modified" , item.lastModified().toDouble())
661
+ }
655
662
656
663
return @JavaCallback ret
657
664
} else {
@@ -678,7 +685,6 @@ class VMHandler(
678
685
679
686
openWriteFiles[path] =
680
687
FileOutputStream (toAbsolutePath(path), append).writer(Charsets .UTF_8 )
681
-
682
688
return @JavaCallback path
683
689
} else {
684
690
return @JavaCallback " 0"
@@ -738,9 +744,15 @@ class VMHandler(
738
744
private val repleteFileInputStreamOpen = JavaCallback { receiver, params ->
739
745
if (params.length() == 1 ) {
740
746
val path = params.getString(0 )
741
- openInputStreams[path] = toAbsolutePath(path).inputStream()
747
+ val apath = toAbsolutePath(path)
748
+
749
+ if (apath != null ) {
750
+ openInputStreams[path] = apath.inputStream()
751
+ return @JavaCallback path
752
+ } else {
753
+ return @JavaCallback " 0"
754
+ }
742
755
743
- return @JavaCallback path
744
756
} else {
745
757
return @JavaCallback " 0"
746
758
}
@@ -782,11 +794,15 @@ class VMHandler(
782
794
private val repleteFileReaderOpen = JavaCallback { receiver, params ->
783
795
if (params.length() == 2 ) {
784
796
val path = params.getString(0 )
797
+ val apath = toAbsolutePath(path)
785
798
val encoding = params.getString(1 )
786
799
787
- openReadFiles[path] = toAbsolutePath(path).inputStream().reader(Charsets .UTF_8 )
788
-
789
- return @JavaCallback path
800
+ if (apath != null ) {
801
+ openReadFiles[path] = apath.inputStream().reader(Charsets .UTF_8 )
802
+ return @JavaCallback path
803
+ } else {
804
+ return @JavaCallback " 0"
805
+ }
790
806
} else {
791
807
return @JavaCallback " 0"
792
808
}
0 commit comments