cleanup: replace anonymous inner class with lambda

This commit is contained in:
P0nk
2021-04-07 23:45:16 +02:00
parent 2d143d0afd
commit 6253169e35
65 changed files with 1204 additions and 2234 deletions

View File

@@ -21,56 +21,45 @@
*/
package scripting.event;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
import java.util.HashSet;
import java.util.Set;
import java.util.Iterator;
import java.util.Properties;
import javax.script.ScriptException;
import client.MapleCharacter;
import client.Skill;
import client.SkillFactory;
import config.YamlConfig;
import constants.inventory.ItemConstants;
import constants.net.ServerConstants;
import net.server.audit.LockCollector;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReentrantLock;
import net.server.audit.locks.MonitoredReadLock;
import net.server.audit.locks.MonitoredReentrantReadWriteLock;
import net.server.audit.locks.MonitoredWriteLock;
import net.server.audit.locks.*;
import net.server.audit.locks.factory.MonitoredReadLockFactory;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import net.server.audit.locks.factory.MonitoredWriteLockFactory;
import net.server.coordinator.world.MapleEventRecallCoordinator;
import net.server.world.MapleParty;
import net.server.world.MaplePartyCharacter;
import server.maps.MaplePortal;
import server.TimerManager;
import server.MapleStatEffect;
import server.expeditions.MapleExpedition;
import server.life.MapleMonster;
import server.maps.MapleMap;
import server.maps.MapleMapManager;
import server.maps.MapleReactor;
import client.MapleCharacter;
import client.SkillFactory;
import client.Skill;
import constants.inventory.ItemConstants;
import constants.net.ServerConstants;
import java.awt.Point;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.server.coordinator.world.MapleEventRecallCoordinator;
import scripting.AbstractPlayerInteraction;
import scripting.event.scheduler.EventScriptScheduler;
import server.MapleItemInformationProvider;
import server.MapleStatEffect;
import server.ThreadManager;
import server.TimerManager;
import server.expeditions.MapleExpedition;
import server.life.MapleLifeFactory;
import server.life.MapleMonster;
import server.life.MapleNPC;
import server.maps.MapleMap;
import server.maps.MapleMapManager;
import server.maps.MaplePortal;
import server.maps.MapleReactor;
import tools.MaplePacketCreator;
import tools.Pair;
import javax.script.ScriptException;
import java.awt.*;
import java.util.List;
import java.util.*;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Matze
@@ -297,16 +286,13 @@ public class EventInstanceManager {
chr.announce(MaplePacketCreator.getClock((int) (time / 1000)));
}
event_schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
dismissEventTimer();
try {
invokeScriptFunction("scheduledTimeout", EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, "Event '" + em.getName() + "' does not implement scheduledTimeout function.", ex);
}
event_schedule = TimerManager.getInstance().schedule(() -> {
dismissEventTimer();
try {
invokeScriptFunction("scheduledTimeout", EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, "Event '" + em.getName() + "' does not implement scheduledTimeout function.", ex);
}
}, time);
}
@@ -317,16 +303,13 @@ public class EventInstanceManager {
long nextTime = getTimeLeft() + time;
eventTime += time;
event_schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
dismissEventTimer();
event_schedule = TimerManager.getInstance().schedule(() -> {
dismissEventTimer();
try {
invokeScriptFunction("scheduledTimeout", EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, "Event '" + em.getName() + "' does not implement scheduledTimeout function.", ex);
}
try {
invokeScriptFunction("scheduledTimeout", EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, "Event '" + em.getName() + "' does not implement scheduledTimeout function.", ex);
}
}, nextTime);
}
@@ -539,13 +522,10 @@ public class EventInstanceManager {
}
public void playerKilled(final MapleCharacter chr) {
ThreadManager.getInstance().newTask(new Runnable() {
@Override
public void run() {
try {
invokeScriptFunction("playerDead", EventInstanceManager.this, chr);
} catch (ScriptException | NoSuchMethodException ex) {} // optional
}
ThreadManager.getInstance().newTask(() -> {
try {
invokeScriptFunction("playerDead", EventInstanceManager.this, chr);
} catch (ScriptException | NoSuchMethodException ex) {} // optional
});
}
@@ -660,30 +640,22 @@ public class EventInstanceManager {
sL.unlock();
}
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
mapManager.dispose(); // issues from instantly disposing some event objects found thanks to MedicOP
wL.lock();
try {
mapManager = null;
em = null;
} finally {
wL.unlock();
}
disposeLocks();
TimerManager.getInstance().schedule(() -> {
mapManager.dispose(); // issues from instantly disposing some event objects found thanks to MedicOP
wL.lock();
try {
mapManager = null;
em = null;
} finally {
wL.unlock();
}
disposeLocks();
}, 60 * 1000);
}
private void disposeLocks() {
LockCollector.getInstance().registerDisposeAction(new Runnable() {
@Override
public void run() {
emptyLocks();
}
});
LockCollector.getInstance().registerDisposeAction(() -> emptyLocks());
}
private void emptyLocks() {
@@ -699,14 +671,11 @@ public class EventInstanceManager {
rL.lock();
try {
if (ess != null) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
invokeScriptFunction(methodName, EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
ex.printStackTrace();
}
Runnable r = () -> {
try {
invokeScriptFunction(methodName, EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
ex.printStackTrace();
}
};
@@ -1142,7 +1111,7 @@ public class EventInstanceManager {
if(!eventCleared && leavingEventMap && !isEventTeamLeaderOn()) return true;
if(getPlayerCount() < minPlayers) return true;
return false;
}
@@ -1153,7 +1122,7 @@ public class EventInstanceManager {
// thanks Conrad for noticing expeditions don't need to have neither the leader nor meet the minimum requirement inside the event
if(getPlayerCount() <= 1) return true;
}
return false;
}
@@ -1164,7 +1133,7 @@ public class EventInstanceManager {
if(leavingEventMap && getLeaderId() == quitter.getId()) return true;
if(getPlayerCount() <= minPlayers) return true;
}
return false;
}

View File

@@ -21,50 +21,39 @@
*/
package scripting.event;
import client.MapleCharacter;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.net.ServerConstants;
import jdk.nashorn.api.scripting.NashornScriptEngine;
import jdk.nashorn.api.scripting.ScriptObjectMirror;
import jdk.nashorn.api.scripting.ScriptUtils;
import tools.exceptions.EventInstanceInProgressException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.script.ScriptException;
import constants.net.ServerConstants;
import constants.game.GameConstants;
import client.MapleCharacter;
import net.server.Server;
import net.server.world.World;
import net.server.channel.Channel;
import net.server.guild.MapleGuild;
import net.server.world.MapleParty;
import net.server.world.MaplePartyCharacter;
import scripting.event.scheduler.EventScriptScheduler;
import server.MapleMarriage;
import server.expeditions.MapleExpedition;
import server.maps.MapleMap;
import server.life.MapleMonster;
import server.life.MapleLifeFactory;
import server.quest.MapleQuest;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import jdk.nashorn.api.scripting.NashornScriptEngine;
import net.server.audit.LockCollector;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReentrantLock;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import net.server.channel.Channel;
import net.server.guild.MapleGuild;
import net.server.world.MapleParty;
import net.server.world.MaplePartyCharacter;
import net.server.world.World;
import scripting.event.scheduler.EventScriptScheduler;
import server.MapleMarriage;
import server.ThreadManager;
import server.expeditions.MapleExpedition;
import server.life.MapleLifeFactory;
import server.life.MapleMonster;
import server.maps.MapleMap;
import server.quest.MapleQuest;
import tools.exceptions.EventInstanceInProgressException;
import javax.script.ScriptException;
import java.util.*;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
//import jdk.nashorn.api.scripting.ScriptUtils;
/**
@@ -154,12 +143,7 @@ public class EventManager {
}
private void disposeLocks() {
LockCollector.getInstance().registerDisposeAction(new Runnable() {
@Override
public void run() {
emptyLocks();
}
});
LockCollector.getInstance().registerDisposeAction(() -> emptyLocks());
}
private void emptyLocks() {
@@ -216,14 +200,11 @@ public class EventManager {
}
public EventScheduledFuture schedule(final String methodName, final EventInstanceManager eim, long delay) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
iv.invokeFunction(methodName, eim);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
Runnable r = () -> {
try {
iv.invokeFunction(methodName, eim);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
};
@@ -234,14 +215,11 @@ public class EventManager {
}
public EventScheduledFuture scheduleAtTimestamp(final String methodName, long timestamp) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
iv.invokeFunction(methodName, (Object) null);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
Runnable r = () -> {
try {
iv.invokeFunction(methodName, (Object) null);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
};
@@ -304,14 +282,11 @@ public class EventManager {
}
public void disposeInstance(final String name) {
ess.registerEntry(new Runnable() {
@Override
public void run() {
freeLobbyInstance(name);
synchronized (instances) {
instances.remove(name);
}
ess.registerEntry(() -> {
freeLobbyInstance(name);
synchronized (instances) {
instances.remove(name);
}
}, YamlConfig.config.server.EVENT_LOBBY_DELAY * 1000);
}

View File

@@ -20,19 +20,20 @@
package scripting.event.scheduler;
import config.YamlConfig;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
import server.TimerManager;
import net.server.Server;
import net.server.audit.LockCollector;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReentrantLock;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import server.ThreadManager;
import server.TimerManager;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
/**
*
@@ -46,12 +47,7 @@ public class EventScriptScheduler {
private ScheduledFuture<?> schedulerTask = null;
private MonitoredReentrantLock schedulerLock;
private Runnable monitorTask = new Runnable() {
@Override
public void run() {
runBaseSchedule();
}
};
private Runnable monitorTask = () -> runBaseSchedule();
public EventScriptScheduler() {
schedulerLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EM_SCHDL, true);
@@ -107,73 +103,59 @@ public class EventScriptScheduler {
public void registerEntry(final Runnable scheduledAction, final long duration) {
ThreadManager.getInstance().newTask(new Runnable() {
@Override
public void run() {
schedulerLock.lock();
try {
idleProcs = 0;
if (schedulerTask == null) {
if (disposed) {
return;
}
schedulerTask = TimerManager.getInstance().register(monitorTask, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC);
ThreadManager.getInstance().newTask(() -> {
schedulerLock.lock();
try {
idleProcs = 0;
if (schedulerTask == null) {
if (disposed) {
return;
}
registeredEntries.put(scheduledAction, Server.getInstance().getCurrentTime() + duration);
} finally {
schedulerLock.unlock();
schedulerTask = TimerManager.getInstance().register(monitorTask, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC);
}
registeredEntries.put(scheduledAction, Server.getInstance().getCurrentTime() + duration);
} finally {
schedulerLock.unlock();
}
});
}
public void cancelEntry(final Runnable scheduledAction) {
ThreadManager.getInstance().newTask(new Runnable() {
@Override
public void run() {
schedulerLock.lock();
try {
registeredEntries.remove(scheduledAction);
} finally {
schedulerLock.unlock();
}
ThreadManager.getInstance().newTask(() -> {
schedulerLock.lock();
try {
registeredEntries.remove(scheduledAction);
} finally {
schedulerLock.unlock();
}
});
}
public void dispose() {
ThreadManager.getInstance().newTask(new Runnable() {
@Override
public void run() {
schedulerLock.lock();
try {
if (schedulerTask != null) {
schedulerTask.cancel(false);
schedulerTask = null;
}
registeredEntries.clear();
disposed = true;
} finally {
schedulerLock.unlock();
ThreadManager.getInstance().newTask(() -> {
schedulerLock.lock();
try {
if (schedulerTask != null) {
schedulerTask.cancel(false);
schedulerTask = null;
}
disposeLocks();
registeredEntries.clear();
disposed = true;
} finally {
schedulerLock.unlock();
}
disposeLocks();
});
}
private void disposeLocks() {
LockCollector.getInstance().registerDisposeAction(new Runnable() {
@Override
public void run() {
emptyLocks();
}
});
LockCollector.getInstance().registerDisposeAction(() -> emptyLocks());
}
private void emptyLocks() {