Skip to content

Commit 8805f73

Browse files
committed
add few new functionalities/utilities
1 parent 08c67b3 commit 8805f73

File tree

13 files changed

+469
-26
lines changed

13 files changed

+469
-26
lines changed

net.lecousin.core/src/main/java/net/lecousin/framework/application/libraries/classloader/ZipClassLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ private synchronized ZipFile getZip() throws IOException {
8282

8383
@Override
8484
public String getDescription() {
85-
return "ZipClassLoader: " + zipProvider.getDescription();
85+
return "ZipClassLoader: " + zipProvider.getDescription() + " (" + (zip == null ? "unloaded" : "loaded") + ")";
8686
}
8787

8888
@Override

net.lecousin.core/src/main/java/net/lecousin/framework/collections/LinkedArrayList.java

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,13 @@ public T removeLast() {
367367
/** Remove all elements from the first array, and return an array containing them. */
368368
public T[] removeFirstArray(Class<T> cl) {
369369
if (size == 0) return ArrayUtil.createGenericArrayOf(0, cl);
370-
T[] a = ArrayUtil.createGenericArrayOf(head.size, cl);
371-
System.arraycopy(head.array, 0, a, 0, head.size);
370+
T[] a;
371+
if (head.size == head.array.length) {
372+
a = head.array;
373+
} else {
374+
a = ArrayUtil.createGenericArrayOf(head.size, cl);
375+
System.arraycopy(head.array, 0, a, 0, head.size);
376+
}
372377
if (head == tail) {
373378
head = tail = null;
374379
size = 0;
@@ -395,6 +400,31 @@ public void insertFirstArray(T[] array, int offset, int length) {
395400
size += length;
396401
}
397402

403+
/** Insert elements at the end of this collection. */
404+
public void appendArray(T[] array, int offset, int length) {
405+
if (length == 0) return;
406+
if (size + length > arraySize * 100) double_size();
407+
if (tail != null) {
408+
// first we fill the tail
409+
while (tail.size < arraySize && length > 0) {
410+
tail.add(array[offset++]);
411+
length--;
412+
size++;
413+
}
414+
if (length == 0) return;
415+
}
416+
do {
417+
Array<T> a = new Array<>(arraySize, tail, null);
418+
tail = a;
419+
int len = length > arraySize ? arraySize : length;
420+
System.arraycopy(a, offset, a.array, 0, len);
421+
a.size = len;
422+
size += len;
423+
offset += len;
424+
length -= len;
425+
} while (length > 0);
426+
}
427+
398428
@Override
399429
public int size() { return (int)size; }
400430

net.lecousin.core/src/main/java/net/lecousin/framework/concurrent/Task.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ public Task(TaskManager manager, String description, byte priority) {
225225

226226
/** Constructor. */
227227
public Task(TaskManager manager, String description, byte priority, RunnableWithParameter<Pair<T,TError>> ondone) {
228+
assert manager != null;
228229
this.app = LCCore.getApplication();
229230
this.manager = manager;
230231
this.description = description;

net.lecousin.core/src/main/java/net/lecousin/framework/concurrent/synch/AsyncWork.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,11 @@ public void error(TError error) {
203203
public void cancelled(CancelException event) {
204204
oncancel.fire(event);
205205
}
206+
207+
@Override
208+
public String toString() {
209+
return "AsyncWork.listenInline: " + onready;
210+
}
206211
});
207212
}
208213

@@ -223,6 +228,11 @@ public void error(TError error) {
223228
public void cancelled(CancelException event) {
224229
onErrorAndCancel.cancel(event);
225230
}
231+
232+
@Override
233+
public String toString() {
234+
return "AsyncWork.listenInline: " + onready;
235+
}
226236
});
227237
}
228238

@@ -243,6 +253,11 @@ public void error(TError error) {
243253
public void cancelled(CancelException event) {
244254
onErrorAndCancel.cancel(event);
245255
}
256+
257+
@Override
258+
public String toString() {
259+
return "AsyncWork.listenInline: " + onready;
260+
}
246261
});
247262
}
248263

@@ -266,7 +281,7 @@ public void cancelled(CancelException event) {
266281

267282
@Override
268283
public String toString() {
269-
return "Delegate to Runnable " + r;
284+
return "AsyncWork.listenInline: " + r;
270285
}
271286
});
272287
}
@@ -289,7 +304,7 @@ public void cancelled(CancelException event) {
289304

290305
@Override
291306
public String toString() {
292-
return "Delegate to listener " + onSuccess;
307+
return "AsyncWork.listenInline: " + onSuccess;
293308
}
294309
});
295310
}

net.lecousin.core/src/main/java/net/lecousin/framework/concurrent/synch/ISynchronizationPoint.java

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ public void run() {
8686
else if (isCancelled()) onCancel.fire(getCancelEvent());
8787
else onReady.run();
8888
}
89+
90+
@Override
91+
public String toString() {
92+
return "SynchronzationPoint.listenInline:" + onReady;
93+
}
8994
});
9095
}
9196

@@ -98,6 +103,11 @@ public void run() {
98103
else if (isCancelled()) onErrorOrCancel.cancel(getCancelEvent());
99104
else onReady.run();
100105
}
106+
107+
@Override
108+
public String toString() {
109+
return "SynchronzationPoint.listenInline:" + onReady;
110+
}
101111
});
102112
}
103113

@@ -115,6 +125,11 @@ else if (hasError())
115125
else
116126
sp.unblock();
117127
}
128+
129+
@Override
130+
public String toString() {
131+
return "SynchronzationPoint.listenInline: " + sp;
132+
}
118133
});
119134
}
120135

@@ -127,6 +142,11 @@ public void run() {
127142
else if (isCancelled()) onErrorOrCancel.cancel(getCancelEvent());
128143
else onReady.run();
129144
}
145+
146+
@Override
147+
public String toString() {
148+
return "SynchronzationPoint.listenInline: " + onReady;
149+
}
130150
});
131151
}
132152

@@ -142,6 +162,11 @@ else if (hasError())
142162
else
143163
sp.unblock();
144164
}
165+
166+
@Override
167+
public String toString() {
168+
return "SynchronzationPoint.listenInlineSP: " + sp;
169+
}
145170
});
146171
}
147172

@@ -152,12 +177,27 @@ default void synchWithNoError(SynchronizationPoint<?> sp) {
152177
public void run() {
153178
sp.unblock();
154179
}
180+
181+
@Override
182+
public String toString() {
183+
return "SynchronzationPoint.synchWithNoError: " + sp;
184+
}
155185
});
156186
}
157187

158188
/** Call the given listener, only when this synchronization point is unblocked without error or cancellation. */
159189
default void onSuccess(Runnable listener) {
160-
listenInline(() -> { if (isSuccessful()) listener.run(); });
190+
listenInline(new Runnable() {
191+
@Override
192+
public void run() {
193+
if (isSuccessful()) listener.run();
194+
}
195+
196+
@Override
197+
public String toString() {
198+
return "SynchronzationPoint.onSuccess: " + listener;
199+
}
200+
});
161201
}
162202

163203
/** Call the given listener, only when this synchronization point is unblocked with an error. */
@@ -167,6 +207,11 @@ default void onError(Listener<TError> listener) {
167207
public void run() {
168208
if (hasError()) listener.fire(getError());
169209
}
210+
211+
@Override
212+
public String toString() {
213+
return "SynchronzationPoint.onError: " + listener;
214+
}
170215
});
171216
}
172217

@@ -177,6 +222,11 @@ default void onException(Listener<Exception> listener) {
177222
public void run() {
178223
if (hasError()) listener.fire(getError());
179224
}
225+
226+
@Override
227+
public String toString() {
228+
return "SynchronzationPoint.onException: " + listener;
229+
}
180230
});
181231
}
182232

@@ -187,6 +237,11 @@ default void onCancel(Listener<CancelException> listener) {
187237
public void run() {
188238
if (isCancelled()) listener.fire(getCancelEvent());
189239
}
240+
241+
@Override
242+
public String toString() {
243+
return "SynchronzationPoint.onCancel: " + listener;
244+
}
190245
});
191246
}
192247

@@ -215,6 +270,11 @@ public void run() {
215270
task.start();
216271
task.getOutput().onCancel((cancel) -> { if (!onErrorOrCancel.isUnblocked()) onErrorOrCancel.cancel(cancel); });
217272
}
273+
274+
@Override
275+
public String toString() {
276+
return "SynchronzationPoint.listenAsync: " + task.getDescription();
277+
}
218278
}, onErrorOrCancel);
219279
}
220280

@@ -228,6 +288,11 @@ public void run() {
228288
task.start();
229289
task.getOutput().onCancel((cancel) -> { if (!onErrorOrCancel.isUnblocked()) onErrorOrCancel.cancel(cancel); });
230290
}
291+
292+
@Override
293+
public String toString() {
294+
return "SynchronzationPoint.listenAsyncSP: " + task.getDescription();
295+
}
231296
}, onErrorOrCancel);
232297
}
233298

0 commit comments

Comments
 (0)