| LEFT | RIGHT | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2016 Eyeo GmbH | 3  * Copyright (C) 2006-2016 Eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 12  * GNU General Public License for more details. | 12  * GNU General Public License for more details. | 
| 13  * | 13  * | 
| 14  * You should have received a copy of the GNU General Public License | 14  * You should have received a copy of the GNU General Public License | 
| 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 16  */ | 16  */ | 
| 17 | 17 | 
| 18 package org.adblockplus.libadblockplus; | 18 package org.adblockplus.libadblockplus; | 
| 19 | 19 | 
| 20 public abstract class FileSystem implements Disposable | 20 public abstract class FileSystem implements Disposable | 
| 21 { | 21 { | 
| 22     private final Disposer disposer; | 22   private final Disposer disposer; | 
| 23     protected final long ptr; | 23   protected final long ptr; | 
| 24 | 24 | 
| 25     static | 25   static | 
|  | 26   { | 
|  | 27     System.loadLibrary("adblockplus-jni"); | 
|  | 28     registerNatives(); | 
|  | 29   } | 
|  | 30 | 
|  | 31   public FileSystem() | 
|  | 32   { | 
|  | 33     this.ptr = ctor(this); | 
|  | 34     this.disposer = new Disposer(this, new DisposeWrapper(this.ptr)); | 
|  | 35   } | 
|  | 36 | 
|  | 37   public static class StatResult | 
|  | 38   { | 
|  | 39     private boolean exists; | 
|  | 40 | 
|  | 41     public boolean exists() | 
| 26     { | 42     { | 
| 27         System.loadLibrary("adblockplus-jni"); | 43       return exists; | 
| 28         registerNatives(); |  | 
| 29     } | 44     } | 
| 30 | 45 | 
| 31     public FileSystem() | 46     private boolean isDirectory; | 
|  | 47 | 
|  | 48     public boolean isDirectory() | 
| 32     { | 49     { | 
| 33         this.ptr = ctor(this); | 50       return isDirectory; | 
| 34         this.disposer = new Disposer(this, new DisposeWrapper(this.ptr)); |  | 
| 35     } | 51     } | 
| 36 | 52 | 
| 37     public static class StatResult | 53     private boolean isFile; | 
|  | 54 | 
|  | 55     public boolean isFile() | 
| 38     { | 56     { | 
| 39         private boolean exists; | 57       return isFile; | 
| 40 |  | 
| 41         public boolean exists() |  | 
| 42         { |  | 
| 43             return exists; |  | 
| 44         } |  | 
| 45 |  | 
| 46         private boolean isDirectory; |  | 
| 47 |  | 
| 48         public boolean isDirectory() |  | 
| 49         { |  | 
| 50             return isDirectory; |  | 
| 51         } |  | 
| 52 |  | 
| 53         private boolean isFile; |  | 
| 54 |  | 
| 55         public boolean isFile() |  | 
| 56         { |  | 
| 57             return isFile; |  | 
| 58         } |  | 
| 59 |  | 
| 60         private long lastModified; |  | 
| 61 |  | 
| 62         public long getLastModified() |  | 
| 63         { |  | 
| 64             return lastModified; |  | 
| 65         } |  | 
| 66 |  | 
| 67         public StatResult(boolean exists, boolean isDirectory, boolean isFile, l
     ong lastModified) |  | 
| 68         { |  | 
| 69             this.exists = exists; |  | 
| 70             this.isDirectory = isDirectory; |  | 
| 71             this.isFile = isFile; |  | 
| 72             this.lastModified = lastModified; |  | 
| 73         } |  | 
| 74     } | 58     } | 
| 75 | 59 | 
| 76     public abstract String read(String path); | 60     private long lastModified; | 
| 77     public abstract void write(String path, String data); | 61 | 
| 78     public abstract void move(String fromPath, String toPath); | 62     public long getLastModified() | 
| 79     public abstract void remove(String path); | 63     { | 
| 80     public abstract StatResult stat(String path); | 64       return lastModified; | 
| 81     public abstract String resolve(String path); | 65     } | 
|  | 66 | 
|  | 67     public StatResult(boolean exists, boolean isDirectory, boolean isFile, long 
     lastModified) | 
|  | 68     { | 
|  | 69       this.exists = exists; | 
|  | 70       this.isDirectory = isDirectory; | 
|  | 71       this.isFile = isFile; | 
|  | 72       this.lastModified = lastModified; | 
|  | 73     } | 
|  | 74   } | 
|  | 75 | 
|  | 76   public abstract String read(String path); | 
|  | 77 | 
|  | 78   public abstract void write(String path, String data); | 
|  | 79 | 
|  | 80   public abstract void move(String fromPath, String toPath); | 
|  | 81 | 
|  | 82   public abstract void remove(String path); | 
|  | 83 | 
|  | 84   public abstract StatResult stat(String path); | 
|  | 85 | 
|  | 86   public abstract String resolve(String path); | 
|  | 87 | 
|  | 88   @Override | 
|  | 89   public void dispose() | 
|  | 90   { | 
|  | 91     this.disposer.dispose(); | 
|  | 92   } | 
|  | 93 | 
|  | 94   private final static class DisposeWrapper implements Disposable | 
|  | 95   { | 
|  | 96     private final long ptr; | 
|  | 97 | 
|  | 98     public DisposeWrapper(final long ptr) | 
|  | 99     { | 
|  | 100       this.ptr = ptr; | 
|  | 101     } | 
| 82 | 102 | 
| 83     @Override | 103     @Override | 
| 84     public void dispose() | 104     public void dispose() | 
| 85     { | 105     { | 
| 86         this.disposer.dispose(); | 106       dtor(this.ptr); | 
| 87     } | 107     } | 
|  | 108   } | 
| 88 | 109 | 
| 89     private final static class DisposeWrapper implements Disposable | 110   private final static native void registerNatives(); | 
| 90     { |  | 
| 91         private final long ptr; |  | 
| 92 | 111 | 
| 93         public DisposeWrapper(final long ptr) | 112   private final static native long ctor(Object callbackObject); | 
| 94         { |  | 
| 95             this.ptr = ptr; |  | 
| 96         } |  | 
| 97 | 113 | 
| 98         @Override | 114   private final static native void dtor(long ptr); | 
| 99         public void dispose() |  | 
| 100         { |  | 
| 101             dtor(this.ptr); |  | 
| 102         } |  | 
| 103     } |  | 
| 104 |  | 
| 105     private final static native void registerNatives(); |  | 
| 106 |  | 
| 107     private final static native long ctor(Object callbackObject); |  | 
| 108 |  | 
| 109     private final static native void dtor(long ptr); |  | 
| 110 } | 115 } | 
| LEFT | RIGHT | 
|---|