1
0
mirror of https://github.com/Rogiel/l2jserver2 synced 2025-12-06 07:32:46 +00:00

Implemented several debug messages in many services

This commit is contained in:
2011-08-08 00:02:34 -03:00
parent 5ca0dae601
commit d9f2c4b8c1
26 changed files with 421 additions and 56 deletions

View File

@@ -152,4 +152,9 @@ public class ChatMessage extends AbstractModel<ChatMessageID> implements
public void setMessage(String message) { public void setMessage(String message) {
this.message = message; this.message = message;
} }
@Override
public String toString() {
return "ChatMessage [" + sender + "@" + date + ": " + message + "]";
}
} }

View File

@@ -29,6 +29,9 @@ import net.sf.ehcache.config.Configuration;
import net.sf.ehcache.config.DiskStoreConfiguration; import net.sf.ehcache.config.DiskStoreConfiguration;
import net.sf.ehcache.store.MemoryStoreEvictionPolicy; import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.l2jserver.service.AbstractService; import com.l2jserver.service.AbstractService;
import com.l2jserver.service.ServiceStartException; import com.l2jserver.service.ServiceStartException;
@@ -41,6 +44,11 @@ import com.l2jserver.service.ServiceStopException;
* @author <a href="http://www.rogiel.com">Rogiel</a> * @author <a href="http://www.rogiel.com">Rogiel</a>
*/ */
public class EhCacheService extends AbstractService implements CacheService { public class EhCacheService extends AbstractService implements CacheService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The cache manager * The cache manager
*/ */
@@ -65,6 +73,8 @@ public class EhCacheService extends AbstractService implements CacheService {
Preconditions.checkArgument(interfaceType.isInterface(), Preconditions.checkArgument(interfaceType.isInterface(),
"interfaceType is not an interface"); "interfaceType is not an interface");
log.debug("Decorating {} with cache", interfaceType);
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final T proxy = (T) Proxy.newProxyInstance(this.getClass() final T proxy = (T) Proxy.newProxyInstance(this.getClass()
.getClassLoader(), new Class[] { interfaceType }, .getClassLoader(), new Class[] { interfaceType },
@@ -94,43 +104,13 @@ public class EhCacheService extends AbstractService implements CacheService {
return proxy; return proxy;
} }
// @Override
// public Cache createCache(String name, int size) {
// Preconditions.checkNotNull(name, "name");
// Preconditions.checkArgument(size > 0, "size <= 0");
//
// Cache cache = new Cache(new CacheConfiguration(name, size)
// .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LRU)
// .overflowToDisk(true).eternal(false).timeToLiveSeconds(60)
// .timeToIdleSeconds(30).diskPersistent(false)
// .diskExpiryThreadIntervalSeconds(0));
// register(cache);
// return cache;
// }
//
// @Override
// public Cache createCache(String name) {
// Preconditions.checkNotNull(name, "name");
// return createCache(name, 200);
// }
//
// @Override
// public void register(Cache cache) {
// Preconditions.checkNotNull(cache, "cache");
// manager.addCache(cache);
// }
//
// @Override
// public void unregister(Cache cache) {
// Preconditions.checkNotNull(cache, "cache");
// manager.removeCache(cache.getName());
// }
@Override @Override
public <K, V> Cache<K, V> createCache(String name, int size) { public <K, V> Cache<K, V> createCache(String name, int size) {
Preconditions.checkNotNull(name, "name"); Preconditions.checkNotNull(name, "name");
Preconditions.checkArgument(size > 0, "size <= 0"); Preconditions.checkArgument(size > 0, "size <= 0");
log.debug("Creating cache {} with minimum size of {}", name, size);
net.sf.ehcache.Cache cache = new net.sf.ehcache.Cache( net.sf.ehcache.Cache cache = new net.sf.ehcache.Cache(
new CacheConfiguration(name, size) new CacheConfiguration(name, size)
.memoryStoreEvictionPolicy( .memoryStoreEvictionPolicy(
@@ -148,6 +128,9 @@ public class EhCacheService extends AbstractService implements CacheService {
Preconditions.checkNotNull(name, "name"); Preconditions.checkNotNull(name, "name");
Preconditions.checkArgument(size > 0, "size <= 0"); Preconditions.checkArgument(size > 0, "size <= 0");
log.debug("Creating eternal cache {} with minimum size of {}", name,
size);
net.sf.ehcache.Cache cache = new net.sf.ehcache.Cache( net.sf.ehcache.Cache cache = new net.sf.ehcache.Cache(
new CacheConfiguration(name, size) new CacheConfiguration(name, size)
.memoryStoreEvictionPolicy( .memoryStoreEvictionPolicy(
@@ -160,20 +143,16 @@ public class EhCacheService extends AbstractService implements CacheService {
@Override @Override
public <K, V> Cache<K, V> createCache(String name) { public <K, V> Cache<K, V> createCache(String name) {
net.sf.ehcache.Cache cache = new net.sf.ehcache.Cache( return createCache(name, 200);
new CacheConfiguration(name, 200)
.memoryStoreEvictionPolicy(
MemoryStoreEvictionPolicy.LRU)
.overflowToDisk(true).eternal(true)
.diskExpiryThreadIntervalSeconds(0));
manager.addCache(cache);
return new EhCacheFacade<K, V>(cache);
} }
@Override @Override
public <K, V> void dispose(Cache<K, V> cache) { public <K, V> void dispose(Cache<K, V> cache) {
if (cache instanceof EhCacheFacade) { if (cache instanceof EhCacheFacade) {
log.debug("Disposing cache {}", cache);
manager.removeCache(((EhCacheFacade<K, V>) cache).cache.getName()); manager.removeCache(((EhCacheFacade<K, V>) cache).cache.getName());
} else {
log.warn("Trying to dispose {} cache when it is not EhCacheFacade type");
} }
} }

View File

@@ -24,6 +24,9 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Proxy; import java.lang.reflect.Proxy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.l2jserver.service.AbstractService; import com.l2jserver.service.AbstractService;
import com.l2jserver.service.ServiceStartException; import com.l2jserver.service.ServiceStartException;
@@ -36,6 +39,11 @@ import com.l2jserver.service.ServiceStopException;
* @author <a href="http://www.rogiel.com">Rogiel</a> * @author <a href="http://www.rogiel.com">Rogiel</a>
*/ */
public class SoftCacheService extends AbstractService implements CacheService { public class SoftCacheService extends AbstractService implements CacheService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The interface cache * The interface cache
*/ */
@@ -53,6 +61,8 @@ public class SoftCacheService extends AbstractService implements CacheService {
Preconditions.checkNotNull(instance, "instance"); Preconditions.checkNotNull(instance, "instance");
Preconditions.checkArgument(interfaceType.isInterface(), Preconditions.checkArgument(interfaceType.isInterface(),
"interfaceType is not an interface"); "interfaceType is not an interface");
log.debug("Decorating {} with cache", interfaceType);
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final T proxy = (T) Proxy.newProxyInstance(this.getClass() final T proxy = (T) Proxy.newProxyInstance(this.getClass()
@@ -85,21 +95,24 @@ public class SoftCacheService extends AbstractService implements CacheService {
@Override @Override
public <K, V> Cache<K, V> createCache(String name, int size) { public <K, V> Cache<K, V> createCache(String name, int size) {
log.debug("Creating cache {} with minimum size of {}", name, size);
return new SoftCache<K, V>(name); return new SoftCache<K, V>(name);
} }
@Override @Override
public <K, V> Cache<K, V> createEternalCache(String name, int size) { public <K, V> Cache<K, V> createEternalCache(String name, int size) {
log.debug("Creating eternal cache {} with minimum size of {}", name, size);
return new EternalCache<K, V>(name); return new EternalCache<K, V>(name);
} }
@Override @Override
public <K, V> Cache<K, V> createCache(String name) { public <K, V> Cache<K, V> createCache(String name) {
return new SoftCache<K, V>(name); return createCache(name, 200);
} }
@Override @Override
public <K, V> void dispose(Cache<K, V> cache) { public <K, V> void dispose(Cache<K, V> cache) {
log.debug("Disposing {}", cache);
cache.clear(); cache.clear();
} }

View File

@@ -24,6 +24,9 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Proxy; import java.lang.reflect.Proxy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.l2jserver.service.AbstractService; import com.l2jserver.service.AbstractService;
import com.l2jserver.service.ServiceStartException; import com.l2jserver.service.ServiceStartException;
@@ -36,6 +39,11 @@ import com.l2jserver.service.ServiceStopException;
* @author <a href="http://www.rogiel.com">Rogiel</a> * @author <a href="http://www.rogiel.com">Rogiel</a>
*/ */
public class WeakCacheService extends AbstractService implements CacheService { public class WeakCacheService extends AbstractService implements CacheService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The interface cache * The interface cache
*/ */
@@ -54,6 +62,8 @@ public class WeakCacheService extends AbstractService implements CacheService {
Preconditions.checkArgument(interfaceType.isInterface(), Preconditions.checkArgument(interfaceType.isInterface(),
"interfaceType is not an interface"); "interfaceType is not an interface");
log.debug("Decorating {} with cache", interfaceType);
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final T proxy = (T) Proxy.newProxyInstance(this.getClass() final T proxy = (T) Proxy.newProxyInstance(this.getClass()
.getClassLoader(), new Class[] { interfaceType }, .getClassLoader(), new Class[] { interfaceType },
@@ -85,21 +95,25 @@ public class WeakCacheService extends AbstractService implements CacheService {
@Override @Override
public <K, V> Cache<K, V> createCache(String name, int size) { public <K, V> Cache<K, V> createCache(String name, int size) {
log.debug("Creating cache {} with minimum size of {}", name, size);
return new WeakCache<K, V>(name); return new WeakCache<K, V>(name);
} }
@Override @Override
public <K, V> Cache<K, V> createEternalCache(String name, int size) { public <K, V> Cache<K, V> createEternalCache(String name, int size) {
log.debug("Creating eternal cache {} with minimum size of {}", name,
size);
return new EternalCache<K, V>(name); return new EternalCache<K, V>(name);
} }
@Override @Override
public <K, V> Cache<K, V> createCache(String name) { public <K, V> Cache<K, V> createCache(String name) {
return new WeakCache<K, V>(name); return createCache(name, 200);
} }
@Override @Override
public <K, V> void dispose(Cache<K, V> cache) { public <K, V> void dispose(Cache<K, V> cache) {
log.debug("Disposing {}", cache);
cache.clear(); cache.clear();
} }

View File

@@ -59,8 +59,7 @@ public class ProxyConfigurationService extends AbstractService implements
/** /**
* The logger * The logger
*/ */
private final Logger logger = LoggerFactory private final Logger log = LoggerFactory.getLogger(this.getClass());
.getLogger(ProxyConfigurationService.class);
/** /**
* The cache of configuration objects * The cache of configuration objects
@@ -81,13 +80,13 @@ public class ProxyConfigurationService extends AbstractService implements
if (cache.containsKey(config)) if (cache.containsKey(config))
return (C) cache.get(config); return (C) cache.get(config);
logger.debug("Trying to create {} proxy", config); log.debug("Trying to create {} proxy", config);
Properties properties; Properties properties;
try { try {
properties = findProperties(config); properties = findProperties(config);
} catch (IOException e) { } catch (IOException e) {
properties = new Properties(); properties = new Properties();
logger.warn( log.warn(
"Configuration file for {} not found, falling back to default values", "Configuration file for {} not found, falling back to default values",
config); config);
} }
@@ -114,7 +113,7 @@ public class ProxyConfigurationService extends AbstractService implements
@Override @Override
public Object invoke(Object proxy, Method method, Object[] args) public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable { throws Throwable {
logger.debug("Configuration service, method invoked: {}", log.debug("Configuration service, method invoked: {}",
method.getName()); method.getName());
if (args == null || args.length == 0) { if (args == null || args.length == 0) {
final ConfigurationPropertyGetter getter = method final ConfigurationPropertyGetter getter = method

View File

@@ -60,6 +60,8 @@ public class ThreadServiceImpl extends AbstractService implements ThreadService
@Override @Override
public <T> AsyncFuture<T> async(Callable<T> callable) { public <T> AsyncFuture<T> async(Callable<T> callable) {
Preconditions.checkNotNull(callable, "callable"); Preconditions.checkNotNull(callable, "callable");
log.debug("Scheduling async task: {}", callable);
return pool.async(callable); return pool.async(callable);
} }
@@ -69,6 +71,9 @@ public class ThreadServiceImpl extends AbstractService implements ThreadService
Preconditions.checkArgument(delay >= 0, "delay < 0"); Preconditions.checkArgument(delay >= 0, "delay < 0");
Preconditions.checkNotNull(unit, "unit"); Preconditions.checkNotNull(unit, "unit");
Preconditions.checkNotNull(callable, "callable"); Preconditions.checkNotNull(callable, "callable");
log.debug("Scheduling async task in {}ms: {}", unit.toMillis(delay),
callable);
return pool.async(delay, unit, callable); return pool.async(delay, unit, callable);
} }
@@ -79,17 +84,22 @@ public class ThreadServiceImpl extends AbstractService implements ThreadService
Preconditions.checkArgument(repeat >= 0, "repeat < 0"); Preconditions.checkArgument(repeat >= 0, "repeat < 0");
Preconditions.checkNotNull(unit, "unit"); Preconditions.checkNotNull(unit, "unit");
Preconditions.checkNotNull(task, "task"); Preconditions.checkNotNull(task, "task");
log.debug("Scheduling repeating async task in {}ms each {}ms: {}", new Object[] {
unit.toMillis(delay), unit.toMillis(repeat), task });
return pool.async(delay, unit, repeat, task); return pool.async(delay, unit, repeat, task);
} }
@Override @Override
public ThreadPool createThreadPool(String name, int maxThreads) { public ThreadPool createThreadPool(String name, int maxThreads) {
log.debug("Creating new ThreadPool {} with maximum of {} threads", name, maxThreads);
return new ThreadPoolImpl(name, return new ThreadPoolImpl(name,
Executors.newScheduledThreadPool(maxThreads)); Executors.newScheduledThreadPool(maxThreads));
} }
@Override @Override
public void dispose(ThreadPool pool) { public void dispose(ThreadPool pool) {
log.debug("Disposing ThreadPool {}", pool);
if (pool instanceof ThreadPoolImpl) if (pool instanceof ThreadPoolImpl)
((ThreadPoolImpl) pool).executor.shutdown(); ((ThreadPoolImpl) pool).executor.shutdown();
throw new UnsupportedOperationException( throw new UnsupportedOperationException(

View File

@@ -66,6 +66,7 @@ public class VFSServiceImpl extends AbstractService implements VFSService {
@Override @Override
public FileObject resolve(String uri) { public FileObject resolve(String uri) {
log.debug("Resolving file {}", uri);
try { try {
return manager.resolveFile(uri); return manager.resolveFile(uri);
} catch (FileSystemException e) { } catch (FileSystemException e) {

View File

@@ -230,6 +230,7 @@ public class JDBCDatabaseService extends AbstractService implements
Preconditions.checkNotNull(query, "query"); Preconditions.checkNotNull(query, "query");
try { try {
final Connection conn = dataSource.getConnection(); final Connection conn = dataSource.getConnection();
log.debug("Executing query {} with {}", query, conn);
try { try {
return query.query(conn); return query.query(conn);
} catch (SQLException e) { } catch (SQLException e) {
@@ -246,22 +247,26 @@ public class JDBCDatabaseService extends AbstractService implements
public Object getCachedObject(Object id) { public Object getCachedObject(Object id) {
Preconditions.checkNotNull(id, "id"); Preconditions.checkNotNull(id, "id");
log.debug("Fetching cached object {}", id);
return objectCache.get(id); return objectCache.get(id);
} }
public boolean hasCachedObject(Object id) { public boolean hasCachedObject(Object id) {
Preconditions.checkNotNull(id, "id"); Preconditions.checkNotNull(id, "id");
log.debug("Locating cached object {}", id);
return objectCache.contains(id); return objectCache.contains(id);
} }
public void updateCache(ID<?> key, Model<?> value) { public void updateCache(ID<?> key, Model<?> value) {
Preconditions.checkNotNull(key, "key"); Preconditions.checkNotNull(key, "key");
Preconditions.checkNotNull(value, "value"); Preconditions.checkNotNull(value, "value");
log.debug("Updating cached object {} with {}", key, value);
objectCache.put(key, value); objectCache.put(key, value);
} }
public void removeCache(Object key) { public void removeCache(Object key) {
Preconditions.checkNotNull(key, "key"); Preconditions.checkNotNull(key, "key");
log.debug("Removing cached object {}", key);
objectCache.remove(key); objectCache.remove(key);
} }
@@ -321,6 +326,12 @@ public class JDBCDatabaseService extends AbstractService implements
* the query return type * the query return type
*/ */
public static abstract class InsertUpdateQuery<T> implements Query<Integer> { public static abstract class InsertUpdateQuery<T> implements Query<Integer> {
/**
* The logger
*/
private final Logger log = LoggerFactory
.getLogger(InsertUpdateQuery.class);
private final Iterator<T> iterator; private final Iterator<T> iterator;
/** /**
@@ -347,24 +358,39 @@ public class JDBCDatabaseService extends AbstractService implements
@Override @Override
public Integer query(Connection conn) throws SQLException { public Integer query(Connection conn) throws SQLException {
Preconditions.checkNotNull(conn, "conn"); Preconditions.checkNotNull(conn, "conn");
log.debug("Starting INSERT/UPDATE query execution");
int rows = 0; int rows = 0;
while (iterator.hasNext()) { while (iterator.hasNext()) {
final T object = iterator.next(); final T object = iterator.next();
final PreparedStatement st = conn.prepareStatement(query(), final String queryString = query();
log.debug("Preparing statement for {}: {}", object, queryString);
final PreparedStatement st = conn.prepareStatement(queryString,
Statement.RETURN_GENERATED_KEYS); Statement.RETURN_GENERATED_KEYS);
log.debug("Parametizing statement {} with {}", st, object);
this.parametize(st, object); this.parametize(st, object);
log.debug("Sending query to database for {}", object);
rows += st.executeUpdate(); rows += st.executeUpdate();
log.debug("Query inserted or updated {} rows for {}", rows, object);
// update object desire --it has been realized // update object desire --it has been realized
if (object instanceof Model && rows > 0) { if (object instanceof Model && rows > 0) {
log.debug("Updating Model ObjectDesire to NONE");
((Model<?>) object).setObjectDesire(ObjectDesire.NONE); ((Model<?>) object).setObjectDesire(ObjectDesire.NONE);
final Mapper<? extends ID<?>> mapper = keyMapper(); final Mapper<? extends ID<?>> mapper = keyMapper();
if (mapper == null) if (mapper == null)
continue; continue;
final ResultSet rs = st.getGeneratedKeys(); final ResultSet rs = st.getGeneratedKeys();
log.debug("Mapping generated keys with {} using {}", mapper, rs);
while (rs.next()) { while (rs.next()) {
((Model<ID<?>>) object).setID(mapper.map(rs)); final ID<?> generatedID = mapper.map(rs);
log.debug("Generated ID for {} is {}", object, generatedID);
((Model<ID<?>>) object).setID(generatedID);
mapper.map(rs); mapper.map(rs);
} }
} }
@@ -413,20 +439,42 @@ public class JDBCDatabaseService extends AbstractService implements
* the query return type * the query return type
*/ */
public static abstract class SelectListQuery<T> implements Query<List<T>> { public static abstract class SelectListQuery<T> implements Query<List<T>> {
/**
* The logger
*/
private final Logger log = LoggerFactory
.getLogger(SelectListQuery.class);
@Override @Override
public List<T> query(Connection conn) throws SQLException { public List<T> query(Connection conn) throws SQLException {
Preconditions.checkNotNull(conn, "conn"); Preconditions.checkNotNull(conn, "conn");
log.debug("Starting SELECT List<?> query execution");
final String queryString = query();
log.debug("Preparing statement with {}", queryString);
final PreparedStatement st = conn.prepareStatement(query()); final PreparedStatement st = conn.prepareStatement(query());
log.debug("Parametizing statement {}", st);
parametize(st); parametize(st);
log.debug("Sending query to database for {}", st);
st.execute(); st.execute();
final List<T> list = CollectionFactory.newList(); final List<T> list = CollectionFactory.newList();
final ResultSet rs = st.getResultSet(); final ResultSet rs = st.getResultSet();
final Mapper<T> mapper = mapper();
log.debug("Database returned {}", rs);
while (rs.next()) { while (rs.next()) {
final T obj = mapper().map(rs); log.debug("Mapping row with {}", mapper);
if (obj == null) final T obj = mapper.map(rs);
if (obj == null) {
log.debug("Mapper {} returned a null row", mapper);
continue; continue;
}
if (obj instanceof Model) if (obj instanceof Model)
((Model<?>) obj).setObjectDesire(ObjectDesire.NONE); ((Model<?>) obj).setObjectDesire(ObjectDesire.NONE);
log.debug("Mapper {} returned {}", mapper, obj);
list.add(obj); list.add(obj);
} }
return list; return list;
@@ -473,17 +521,37 @@ public class JDBCDatabaseService extends AbstractService implements
* the query return type * the query return type
*/ */
public static abstract class SelectSingleQuery<T> implements Query<T> { public static abstract class SelectSingleQuery<T> implements Query<T> {
/**
* The logger
*/
private final Logger log = LoggerFactory
.getLogger(SelectSingleQuery.class);
@Override @Override
public T query(Connection conn) throws SQLException { public T query(Connection conn) throws SQLException {
Preconditions.checkNotNull(conn, "conn"); Preconditions.checkNotNull(conn, "conn");
log.debug("Starting SELECT single query execution");
final String queryString = query();
log.debug("Preparing statement with {}", queryString);
final PreparedStatement st = conn.prepareStatement(query()); final PreparedStatement st = conn.prepareStatement(query());
log.debug("Parametizing statement {}", st);
parametize(st); parametize(st);
log.debug("Sending query to database for {}", st);
st.execute(); st.execute();
final ResultSet rs = st.getResultSet(); final ResultSet rs = st.getResultSet();
final Mapper<T> mapper = mapper();
log.debug("Database returned {}", rs);
while (rs.next()) { while (rs.next()) {
final T object = mapper().map(rs); log.debug("Mapping row {} with {}", rs, mapper);
final T object = mapper.map(rs);
if (object instanceof Model) if (object instanceof Model)
((Model<?>) object).setObjectDesire(ObjectDesire.NONE); ((Model<?>) object).setObjectDesire(ObjectDesire.NONE);
log.debug("Mapper {} returned {}", mapper, object);
return object; return object;
} }
return null; return null;
@@ -557,6 +625,12 @@ public class JDBCDatabaseService extends AbstractService implements
*/ */
public abstract static class CachedMapper<T extends Model<?>, I extends ID<?>> public abstract static class CachedMapper<T extends Model<?>, I extends ID<?>>
implements Mapper<T> { implements Mapper<T> {
/**
* The logger
*/
private final Logger log = LoggerFactory
.getLogger(SelectSingleQuery.class);
/** /**
* The database service instance * The database service instance
*/ */
@@ -578,15 +652,21 @@ public class JDBCDatabaseService extends AbstractService implements
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public final T map(ResultSet rs) throws SQLException { public final T map(ResultSet rs) throws SQLException {
log.debug("Mapping row {} ID with {}", rs, idMapper);
final I id = idMapper.map(rs); final I id = idMapper.map(rs);
Preconditions.checkNotNull(id, "id"); Preconditions.checkNotNull(id, "id");
log.debug("ID={}, locating cached object", id);
if (database.hasCachedObject(id)) if (database.hasCachedObject(id))
return (T) database.getCachedObject(id); return (T) database.getCachedObject(id);
log.debug("Cached object not found, creating...");
final T object = map(id, rs); final T object = map(id, rs);
if (object != null) if (object != null)
database.updateCache(id, object); database.updateCache(id, object);
log.debug("Object {} created", object);
return object; return object;
} }

View File

@@ -18,6 +18,9 @@ package com.l2jserver.service.game;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.l2jserver.model.server.AttackHit; import com.l2jserver.model.server.AttackHit;
@@ -45,6 +48,11 @@ public class AttackServiceImpl extends AbstractService implements AttackService
*/ */
private static final AttackCalculator PHYSICAL_ATTACK_CALCULATOR = new PhysicalAttackCalculator(); private static final AttackCalculator PHYSICAL_ATTACK_CALCULATOR = new PhysicalAttackCalculator();
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The {@link ThreadService} is used to schedule asynchronous attacks * The {@link ThreadService} is used to schedule asynchronous attacks
*/ */
@@ -74,6 +82,7 @@ public class AttackServiceImpl extends AbstractService implements AttackService
Preconditions.checkNotNull(target, "target"); Preconditions.checkNotNull(target, "target");
Preconditions.checkArgument(!attacker.equals(target), Preconditions.checkArgument(!attacker.equals(target),
"attacker must not be equal to target"); "attacker must not be equal to target");
log.debug("{} starting attack to {}", attacker, target);
return threadService.async(new AttackCallable(attacker, target)); return threadService.async(new AttackCallable(attacker, target));
} }
@@ -107,6 +116,8 @@ public class AttackServiceImpl extends AbstractService implements AttackService
// TODO calculate miss // TODO calculate miss
// TODO calculate critical // TODO calculate critical
// TODO calculate soulshot // TODO calculate soulshot
log.debug("Attack dealt {} damage, but only {} is effective", damage, dealDamage);
// reduce target life // reduce target life
target.setHP(target.getHP() - dealDamage); target.setHP(target.getHP() - dealDamage);
@@ -115,6 +126,7 @@ public class AttackServiceImpl extends AbstractService implements AttackService
eventDispatcher.dispatch(new ActorAttackHitEvent(hit)); eventDispatcher.dispatch(new ActorAttackHitEvent(hit));
if (target.getHP() <= 0) { if (target.getHP() <= 0) {
log.debug("{} hitpoins reached zero, killing object", target);
if (target instanceof NPC) if (target instanceof NPC)
npcService.die((NPC) target, attacker); npcService.die((NPC) target, attacker);
} }

View File

@@ -16,6 +16,9 @@
*/ */
package com.l2jserver.service.game; package com.l2jserver.service.game;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.l2jserver.model.world.L2Character; import com.l2jserver.model.world.L2Character;
import com.l2jserver.service.AbstractService; import com.l2jserver.service.AbstractService;
@@ -25,6 +28,12 @@ import com.l2jserver.service.AbstractService;
* @author <a href="http://www.rogiel.com">Rogiel</a> * @author <a href="http://www.rogiel.com">Rogiel</a>
*/ */
public class DuelServiceImpl extends AbstractService implements DuelService { public class DuelServiceImpl extends AbstractService implements DuelService {
/**
* The logger
*/
@SuppressWarnings("unused")
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Override @Override
public void start(L2Character character1, L2Character character2) { public void start(L2Character character1, L2Character character2) {
// TODO Auto-generated method stub // TODO Auto-generated method stub

View File

@@ -16,6 +16,9 @@
*/ */
package com.l2jserver.service.game; package com.l2jserver.service.game;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.l2jserver.service.AbstractService; import com.l2jserver.service.AbstractService;
/** /**
@@ -25,6 +28,12 @@ import com.l2jserver.service.AbstractService;
*/ */
public class GameTimeServiceImpl extends AbstractService implements public class GameTimeServiceImpl extends AbstractService implements
GameTimeService { GameTimeService {
/**
* The logger
*/
@SuppressWarnings("unused")
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Override @Override
public int getGameTime() { public int getGameTime() {
return (int) (System.currentTimeMillis() % GAME_DAY) / 1000; return (int) (System.currentTimeMillis() % GAME_DAY) / 1000;

View File

@@ -18,6 +18,9 @@ package com.l2jserver.service.game.admin;
import java.util.List; import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.l2jserver.game.net.Lineage2Client; import com.l2jserver.game.net.Lineage2Client;
import com.l2jserver.game.net.packet.server.SM_HTML; import com.l2jserver.game.net.packet.server.SM_HTML;
import com.l2jserver.model.id.object.CharacterID; import com.l2jserver.model.id.object.CharacterID;
@@ -31,12 +34,18 @@ import com.l2jserver.service.game.admin.panel.AdminHomeTemplate;
*/ */
public class AdministratorServiceImpl extends AbstractService implements public class AdministratorServiceImpl extends AbstractService implements
AdministratorService { AdministratorService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
@SuppressWarnings("unused") @SuppressWarnings("unused")
private List<CharacterID> online; private List<CharacterID> online;
@Override @Override
public void command(Lineage2Client conn, L2Character character, public void command(Lineage2Client conn, L2Character character,
String command, String... args) { String command, String... args) {
log.debug("{} is opening admin control panel", character);
conn.write(new SM_HTML(null, new AdminHomeTemplate())); conn.write(new SM_HTML(null, new AdminHomeTemplate()));
} }
} }

View File

@@ -16,6 +16,9 @@
*/ */
package com.l2jserver.service.game.ai; package com.l2jserver.service.game.ai;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.l2jserver.model.world.Actor; import com.l2jserver.model.world.Actor;
import com.l2jserver.service.AbstractService; import com.l2jserver.service.AbstractService;
@@ -37,6 +40,12 @@ import com.l2jserver.util.geometry.Coordinate;
@Depends({ WorldService.class, TemplateService.class, ThreadService.class, @Depends({ WorldService.class, TemplateService.class, ThreadService.class,
NetworkService.class }) NetworkService.class })
public class AIServiceImpl extends AbstractService implements AIService { public class AIServiceImpl extends AbstractService implements AIService {
/**
* The logger
*/
@SuppressWarnings("unused")
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The {@link WorldService} * The {@link WorldService}
*/ */

View File

@@ -169,6 +169,11 @@ public class CharacterServiceImpl extends AbstractService implements
throws CharacterInvalidNameException, throws CharacterInvalidNameException,
CharacterInvalidAppearanceException, CharacterInvalidAppearanceException,
CharacterNameAlreadyExistsException { CharacterNameAlreadyExistsException {
log.debug(
"Requested creation of new character (name={}, sex={}, class={}, hairStyle={}, hairColor={}, face={})",
new Object[] { name, sex, characterClass, hairStyle, hairColor,
face });
if ((name.length() < 1) || (name.length() > 16)) { if ((name.length() < 1) || (name.length() > 16)) {
throw new CharacterInvalidNameException(); throw new CharacterInvalidNameException();
} }
@@ -180,6 +185,7 @@ public class CharacterServiceImpl extends AbstractService implements
throw new CharacterInvalidAppearanceException(); throw new CharacterInvalidAppearanceException();
// existence check // existence check
log.debug("Checking name existence {}", name);
final L2Character existenceCheck = characterDao.selectByName(name); final L2Character existenceCheck = characterDao.selectByName(name);
if (existenceCheck != null) if (existenceCheck != null)
throw new CharacterNameAlreadyExistsException(); throw new CharacterNameAlreadyExistsException();
@@ -217,10 +223,17 @@ public class CharacterServiceImpl extends AbstractService implements
throws SpawnPointNotFoundServiceException, throws SpawnPointNotFoundServiceException,
AlreadySpawnedServiceException { AlreadySpawnedServiceException {
Preconditions.checkNotNull(character, "character"); Preconditions.checkNotNull(character, "character");
log.debug("Character {} is entering world", character);
final CharacterID id = character.getID(); final CharacterID id = character.getID();
final Lineage2Client conn = networkService.discover(id); final Lineage2Client conn = networkService.discover(id);
if (conn == null) if (conn == null) {
log.debug(
"Character {} cannot enter world, no Lineage2Client object found",
character);
return; return;
}
itemDao.loadInventory(character); itemDao.loadInventory(character);
@@ -252,6 +265,10 @@ public class CharacterServiceImpl extends AbstractService implements
if (!(e instanceof CharacterLeaveWorldEvent)) if (!(e instanceof CharacterLeaveWorldEvent))
return true; return true;
log.debug(
"Character {} is leaving world, removing chat listeners",
character);
// remove chat listeners // remove chat listeners
chatService.getGlobalChannel().removeMessageListener( chatService.getGlobalChannel().removeMessageListener(
globalChatListener); globalChatListener);
@@ -276,10 +293,12 @@ public class CharacterServiceImpl extends AbstractService implements
ggService.query(conn); ggService.query(conn);
// send this user information // send this user information
log.debug("Sending character information packets");
conn.write(new SM_CHAR_INFO(character)); conn.write(new SM_CHAR_INFO(character));
conn.write(new SM_CHAR_INFO_EXTRA(character)); conn.write(new SM_CHAR_INFO_EXTRA(character));
conn.write(new SM_CHAR_INVENTORY(character.getInventory())); conn.write(new SM_CHAR_INVENTORY(character.getInventory()));
log.debug("Sending greeting message to client");
conn.sendSystemMessage(SystemMessage.WELCOME_TO_LINEAGE); conn.sendSystemMessage(SystemMessage.WELCOME_TO_LINEAGE);
conn.sendMessage("This an an development version for l2jserver 2.0"); conn.sendMessage("This an an development version for l2jserver 2.0");
conn.sendMessage("Please note that many of the features are not yet implemented."); conn.sendMessage("Please note that many of the features are not yet implemented.");
@@ -310,6 +329,9 @@ public class CharacterServiceImpl extends AbstractService implements
public void leaveWorld(L2Character character) public void leaveWorld(L2Character character)
throws NotSpawnedServiceException { throws NotSpawnedServiceException {
Preconditions.checkNotNull(character, "character"); Preconditions.checkNotNull(character, "character");
log.debug("Character {} is leaving world", character);
spawnService.unspawn(character); spawnService.unspawn(character);
eventDispatcher.dispatch(new CharacterLeaveWorldEvent(character)); eventDispatcher.dispatch(new CharacterLeaveWorldEvent(character));
character.setOnline(false); character.setOnline(false);
@@ -320,6 +342,9 @@ public class CharacterServiceImpl extends AbstractService implements
throws CannotSetTargetServiceException { throws CannotSetTargetServiceException {
Preconditions.checkNotNull(character, "character"); Preconditions.checkNotNull(character, "character");
Preconditions.checkNotNull(target, "target"); Preconditions.checkNotNull(target, "target");
log.debug("Setting {} target to {}", character, target);
final CharacterID id = character.getID(); final CharacterID id = character.getID();
final Lineage2Client conn = networkService.discover(id); final Lineage2Client conn = networkService.discover(id);
@@ -361,17 +386,24 @@ public class CharacterServiceImpl extends AbstractService implements
NotAttackableNPCServiceException { NotAttackableNPCServiceException {
Preconditions.checkNotNull(character, "character"); Preconditions.checkNotNull(character, "character");
Preconditions.checkNotNull(target, "target"); Preconditions.checkNotNull(target, "target");
log.debug("Character {} is trying to attack {}", character, target);
final CharacterID id = character.getID(); final CharacterID id = character.getID();
final Lineage2Client conn = networkService.discover(id); final Lineage2Client conn = networkService.discover(id);
// check if this Actor can be attacked // check if this Actor can be attacked
if (target instanceof NPC) { if (target instanceof NPC) {
final NPC npc = (NPC) target; final NPC npc = (NPC) target;
log.debug("{} is an NPC instance", npc);
// first try to target this, if it is not already // first try to target this, if it is not already
if (!npc.getID().equals(character.getTargetID())) if (!npc.getID().equals(character.getTargetID())) {
log.debug("{} is not targetted by {}", npc, character);
target(character, target); target(character, target);
}
// now attack the npc // now attack the npc
log.debug("Sending {} attack request to NPCService", character);
npcService.attack(npc, conn, character); npcService.attack(npc, conn, character);
} else { } else {
// TODO throw an exception // TODO throw an exception
@@ -401,6 +433,9 @@ public class CharacterServiceImpl extends AbstractService implements
public void move(L2Character character, Coordinate coordinate) { public void move(L2Character character, Coordinate coordinate) {
Preconditions.checkNotNull(character, "character"); Preconditions.checkNotNull(character, "character");
Preconditions.checkNotNull(coordinate, "coordinate"); Preconditions.checkNotNull(coordinate, "coordinate");
log.debug("{} is moving to {}", character, coordinate);
final CharacterID id = character.getID(); final CharacterID id = character.getID();
final Lineage2Client conn = networkService.discover(id); final Lineage2Client conn = networkService.discover(id);
// we don't set the character coordinate here, this will be done by // we don't set the character coordinate here, this will be done by
@@ -432,6 +467,9 @@ public class CharacterServiceImpl extends AbstractService implements
// ignore while teleporting, for some reason the client sends a // ignore while teleporting, for some reason the client sends a
// validation just before teleport packet // validation just before teleport packet
return; return;
log.debug("{} client is validating its position to {}", character, point);
final Point3D old = character.getPoint(); final Point3D old = character.getPoint();
character.setPoint(point); character.setPoint(point);
// BroadcastService will catch this event and update the knownlist // BroadcastService will catch this event and update the knownlist
@@ -454,6 +492,9 @@ public class CharacterServiceImpl extends AbstractService implements
// test if character is running // test if character is running
if (character.getMoveType() == CharacterMoveType.WALK) if (character.getMoveType() == CharacterMoveType.WALK)
throw new CharacterAlreadyWalkingServiceException(); throw new CharacterAlreadyWalkingServiceException();
log.debug("{} move type is being set to WALK", character);
// if running set mode to walk and broadcast packet // if running set mode to walk and broadcast packet
character.setMoveType(CharacterMoveType.WALK); character.setMoveType(CharacterMoveType.WALK);
@@ -470,6 +511,9 @@ public class CharacterServiceImpl extends AbstractService implements
// test if character is walking // test if character is walking
if (character.getMoveType() == CharacterMoveType.RUN) if (character.getMoveType() == CharacterMoveType.RUN)
throw new CharacterAlreadyRunningServiceException(); throw new CharacterAlreadyRunningServiceException();
log.debug("{} move type is being set to RUN", character);
// if running walking mode to run and broadcast packet // if running walking mode to run and broadcast packet
character.setMoveType(CharacterMoveType.RUN); character.setMoveType(CharacterMoveType.RUN);

View File

@@ -16,6 +16,8 @@
*/ */
package com.l2jserver.service.game.chat; package com.l2jserver.service.game.chat;
import org.slf4j.Logger;
import com.l2jserver.model.id.object.CharacterID; import com.l2jserver.model.id.object.CharacterID;
import com.l2jserver.model.server.ChatMessage; import com.l2jserver.model.server.ChatMessage;
import com.l2jserver.service.Service; import com.l2jserver.service.Service;
@@ -33,6 +35,9 @@ import com.l2jserver.service.Service;
* <p> * <p>
* <b>{@link ChatChannelFilter} will be called before logging can occur. If any * <b>{@link ChatChannelFilter} will be called before logging can occur. If any
* filter refuses the message, it will NOT be logged.</b> * filter refuses the message, it will NOT be logged.</b>
* <p>
* This service, however, does not need to log the message using {@link Logger}
* object, because this is already done by {@link ChatService}.
* *
* @author <a href="http://www.rogiel.com">Rogiel</a> * @author <a href="http://www.rogiel.com">Rogiel</a>
*/ */

View File

@@ -19,6 +19,9 @@ package com.l2jserver.service.game.chat;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.l2jserver.model.dao.CharacterDAO; import com.l2jserver.model.dao.CharacterDAO;
@@ -42,8 +45,15 @@ import com.l2jserver.util.factory.CollectionFactory;
*/ */
@Depends(ChatLoggingService.class) @Depends(ChatLoggingService.class)
public class SimpleChatService extends AbstractService implements ChatService { public class SimpleChatService extends AbstractService implements ChatService {
private final ChatLoggingService chatLoggingService; /**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/**
* The {@link ChatLoggingService} implementation
*/
private final ChatLoggingService chatLoggingService;
/** /**
* The {@link RegionService} * The {@link RegionService}
*/ */
@@ -115,6 +125,9 @@ public class SimpleChatService extends AbstractService implements ChatService {
Preconditions.checkNotNull(sender, "sender"); Preconditions.checkNotNull(sender, "sender");
Preconditions.checkNotNull(message, "message"); Preconditions.checkNotNull(message, "message");
log.debug("Sending message {} from {} to {}", new Object[] { message,
sender, chat });
final ChatChannel channel; final ChatChannel channel;
switch (chat) { switch (chat) {
case ALL: case ALL:
@@ -232,13 +245,16 @@ public class SimpleChatService extends AbstractService implements ChatService {
for (final ChatChannelFilter filter : filters) { for (final ChatChannelFilter filter : filters) {
if (!filter.filter(sender, this, textMessage)) if (!filter.filter(sender, this, textMessage))
// discard message // discard message
return null; log.debug("Message {} discarded by {}", textMessage, filter);
return null;
} }
// log this chat message // log this chat message
ChatMessage message = chatLoggingService.log(sender, this, ChatMessage message = chatLoggingService.log(sender, this,
textMessage); textMessage);
log.debug("[{}]: {}", this, message);
for (final ChatChannelListener listener : listeners) { for (final ChatChannelListener listener : listeners) {
listener.onMessage(this, message); listener.onMessage(this, message);
} }
@@ -249,24 +265,28 @@ public class SimpleChatService extends AbstractService implements ChatService {
@Override @Override
public void addMessageListener(ChatChannelListener listener) { public void addMessageListener(ChatChannelListener listener) {
Preconditions.checkNotNull(listener, "listener"); Preconditions.checkNotNull(listener, "listener");
log.debug("Added {} to {}", listener, this);
listeners.add(listener); listeners.add(listener);
} }
@Override @Override
public void removeMessageListener(ChatChannelListener listener) { public void removeMessageListener(ChatChannelListener listener) {
Preconditions.checkNotNull(listener, "listener"); Preconditions.checkNotNull(listener, "listener");
log.debug("Removed {} to {}", listener, this);
listeners.remove(listener); listeners.remove(listener);
} }
@Override @Override
public void addMessageFilter(ChatChannelFilter filter) { public void addMessageFilter(ChatChannelFilter filter) {
Preconditions.checkNotNull(filter, "filter"); Preconditions.checkNotNull(filter, "filter");
log.debug("Added {} to {}", filter, this);
filters.add(filter); filters.add(filter);
} }
@Override @Override
public void removeMessageFilter(ChatChannelFilter filter) { public void removeMessageFilter(ChatChannelFilter filter) {
Preconditions.checkNotNull(filter, "filter"); Preconditions.checkNotNull(filter, "filter");
log.debug("Removed {} to {}", filter, this);
filters.remove(filter); filters.remove(filter);
} }
@@ -279,6 +299,17 @@ public class SimpleChatService extends AbstractService implements ChatService {
public int getChannelID() { public int getChannelID() {
return getMessageType().id; return getMessageType().id;
} }
/*
* (non-Javadoc)
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "ChatChannelImpl [" + getChannelName() + "("
+ getChannelID() + ")]";
}
} }
/** /**

View File

@@ -16,6 +16,9 @@
*/ */
package com.l2jserver.service.game.map.pathing; package com.l2jserver.service.game.map.pathing;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.l2jserver.model.world.PositionableObject; import com.l2jserver.model.world.PositionableObject;
import com.l2jserver.service.AbstractService; import com.l2jserver.service.AbstractService;
import com.l2jserver.service.AbstractService.Depends; import com.l2jserver.service.AbstractService.Depends;
@@ -32,6 +35,12 @@ import com.l2jserver.util.geometry.Point3D;
@Depends({ CharacterService.class, WorldService.class }) @Depends({ CharacterService.class, WorldService.class })
public class AStarPathingService extends AbstractService implements public class AStarPathingService extends AbstractService implements
PathingService { PathingService {
/**
* The logger
*/
@SuppressWarnings("unused")
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Override @Override
public Path findPath(PositionableObject object, Point3D point) { public Path findPath(PositionableObject object, Point3D point) {
return null; return null;

View File

@@ -16,11 +16,15 @@
*/ */
package com.l2jserver.service.game.npc; package com.l2jserver.service.game.npc;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
@@ -61,6 +65,11 @@ import com.l2jserver.util.geometry.Point3D;
@Depends({ SpawnService.class, NetworkService.class, CharacterService.class, @Depends({ SpawnService.class, NetworkService.class, CharacterService.class,
ThreadService.class, AttackService.class, DatabaseService.class }) ThreadService.class, AttackService.class, DatabaseService.class })
public class NPCServiceImpl extends AbstractService implements NPCService { public class NPCServiceImpl extends AbstractService implements NPCService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The {@link SpawnService} used to spawn the {@link NPC} instances * The {@link SpawnService} used to spawn the {@link NPC} instances
*/ */
@@ -142,6 +151,9 @@ public class NPCServiceImpl extends AbstractService implements NPCService {
Preconditions.checkNotNull(character, "character"); Preconditions.checkNotNull(character, "character");
Preconditions.checkNotNull(action, "action"); Preconditions.checkNotNull(action, "action");
log.debug("{} interacting with {} (action={})", new Object[] {
character, npc, action });
final Lineage2Client conn = networkService.discover(character.getID()); final Lineage2Client conn = networkService.discover(character.getID());
try { try {
final NPCController controller = getController(npc); final NPCController controller = getController(npc);
@@ -159,6 +171,9 @@ public class NPCServiceImpl extends AbstractService implements NPCService {
if (args == null) if (args == null)
args = new String[0]; args = new String[0];
log.debug("{} interacting with {} (action={})", new Object[] {
character, npc, Arrays.toString(args) });
final Lineage2Client conn = networkService.discover(character.getID()); final Lineage2Client conn = networkService.discover(character.getID());
try { try {
final NPCController controller = getController(npc); final NPCController controller = getController(npc);
@@ -173,6 +188,8 @@ public class NPCServiceImpl extends AbstractService implements NPCService {
Preconditions.checkNotNull(npc, "npc"); Preconditions.checkNotNull(npc, "npc");
Preconditions.checkNotNull(killer, "killer"); Preconditions.checkNotNull(killer, "killer");
log.debug("{} was killed by {}", npc, killer);
// set npc as dead // set npc as dead
npc.setState(ActorState.DEAD); npc.setState(ActorState.DEAD);
@@ -196,6 +213,9 @@ public class NPCServiceImpl extends AbstractService implements NPCService {
// TODO throw an exception // TODO throw an exception
return null; return null;
npc.setState(ActorState.MOVING); npc.setState(ActorState.MOVING);
log.debug("{} is moving to {}", npc, point);
// calculate walking time // calculate walking time
final Point3D start = npc.getPoint(); final Point3D start = npc.getPoint();
final double distance = start.getDistance(point); final double distance = start.getDistance(point);
@@ -218,6 +238,8 @@ public class NPCServiceImpl extends AbstractService implements NPCService {
Preconditions.checkNotNull(npc, "npc"); Preconditions.checkNotNull(npc, "npc");
Preconditions.checkNotNull(conn, "conn"); Preconditions.checkNotNull(conn, "conn");
Preconditions.checkNotNull(attacker, "attacker"); Preconditions.checkNotNull(attacker, "attacker");
log.debug("{} is being attacked by {}", npc, attacker);
final NPCTemplate template = npc.getTemplate(); final NPCTemplate template = npc.getTemplate();
if (!template.isAttackable()) { if (!template.isAttackable()) {

View File

@@ -19,6 +19,9 @@ package com.l2jserver.service.game.spawn;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.l2jserver.game.net.Lineage2Client; import com.l2jserver.game.net.Lineage2Client;
@@ -55,6 +58,11 @@ import com.l2jserver.util.geometry.Point3D;
*/ */
@Depends({ WorldService.class, NetworkService.class, ThreadService.class }) @Depends({ WorldService.class, NetworkService.class, ThreadService.class })
public class SpawnServiceImpl extends AbstractService implements SpawnService { public class SpawnServiceImpl extends AbstractService implements SpawnService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The {@link WorldService} * The {@link WorldService}
*/ */
@@ -101,6 +109,8 @@ public class SpawnServiceImpl extends AbstractService implements SpawnService {
throw new SpawnPointNotFoundServiceException(); throw new SpawnPointNotFoundServiceException();
} }
log.debug("Spawning {} at {}", object, point);
// set the spawning point // set the spawning point
if (updatePoint) if (updatePoint)
object.setPoint(point); object.setPoint(point);
@@ -135,6 +145,10 @@ public class SpawnServiceImpl extends AbstractService implements SpawnService {
Preconditions.checkNotNull(object, "object"); Preconditions.checkNotNull(object, "object");
Preconditions.checkArgument(time > 0, "time < 0"); Preconditions.checkArgument(time > 0, "time < 0");
Preconditions.checkNotNull(unit, "unit"); Preconditions.checkNotNull(unit, "unit");
log.debug("Scheduling spawn of {} at {} in {}ms", new Object[] {
object, point, unit.toMillis(time) });
return threadService.async(time, unit, new Callable<T>() { return threadService.async(time, unit, new Callable<T>() {
@Override @Override
public T call() throws Exception { public T call() throws Exception {
@@ -156,6 +170,7 @@ public class SpawnServiceImpl extends AbstractService implements SpawnService {
if (!worldService.remove(object)) if (!worldService.remove(object))
throw new NotSpawnedServiceException(); throw new NotSpawnedServiceException();
log.debug("Unspawning {}", object);
final Point3D point = object.getPoint(); final Point3D point = object.getPoint();
// create the SpawnEvent // create the SpawnEvent
@@ -180,6 +195,10 @@ public class SpawnServiceImpl extends AbstractService implements SpawnService {
Preconditions.checkNotNull(object, "object"); Preconditions.checkNotNull(object, "object");
Preconditions.checkArgument(time > 0, "time <= 0"); Preconditions.checkArgument(time > 0, "time <= 0");
Preconditions.checkNotNull(unit, "unit"); Preconditions.checkNotNull(unit, "unit");
log.debug("Scheduling unspawn of {} in {}ms", object,
unit.toMillis(time));
return threadService.async(time, unit, new Callable<T>() { return threadService.async(time, unit, new Callable<T>() {
@Override @Override
public T call() throws Exception { public T call() throws Exception {
@@ -194,6 +213,10 @@ public class SpawnServiceImpl extends AbstractService implements SpawnService {
throws CharacterAlreadyTeleportingServiceException { throws CharacterAlreadyTeleportingServiceException {
Preconditions.checkNotNull(player, "player"); Preconditions.checkNotNull(player, "player");
Preconditions.checkNotNull(coordinate, "coordinate"); Preconditions.checkNotNull(coordinate, "coordinate");
log.debug("Teleporting {} to {}", player,
coordinate);
if (player instanceof L2Character) { if (player instanceof L2Character) {
if (((L2Character) player).isTeleporting()) if (((L2Character) player).isTeleporting())
throw new CharacterAlreadyTeleportingServiceException(); throw new CharacterAlreadyTeleportingServiceException();
@@ -225,6 +248,8 @@ public class SpawnServiceImpl extends AbstractService implements SpawnService {
if (!character.isTeleporting()) if (!character.isTeleporting())
throw new CharacterNotTeleportingServiceException(); throw new CharacterNotTeleportingServiceException();
log.debug("Finishing teleport of {}", character);
character.setState(null); character.setState(null);
character.setPoint(character.getTargetLocation()); character.setPoint(character.getTargetLocation());

View File

@@ -166,6 +166,7 @@ public class XMLTemplateService extends AbstractService implements
try { try {
final Template<?> template = (Template<?>) unmarshaller final Template<?> template = (Template<?>) unmarshaller
.unmarshal(in); .unmarshal(in);
log.debug("Template loaded: {}", template);
if (template.getID() != null) if (template.getID() != null)
templates.put(template.getID(), template); templates.put(template.getID(), template);
} finally { } finally {
@@ -175,6 +176,7 @@ public class XMLTemplateService extends AbstractService implements
public void removeTemplate(Template<?> template) { public void removeTemplate(Template<?> template) {
Preconditions.checkNotNull(template, "template"); Preconditions.checkNotNull(template, "template");
log.debug("Removing template {}", template);
templates.remove(template.getID()); templates.remove(template.getID());
} }

View File

@@ -18,6 +18,9 @@ package com.l2jserver.service.game.world;
import java.util.Collection; import java.util.Collection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.l2jserver.model.dao.CharacterDAO; import com.l2jserver.model.dao.CharacterDAO;
@@ -43,6 +46,11 @@ import com.l2jserver.service.database.DatabaseService;
@Depends({ DatabaseService.class, CacheService.class }) @Depends({ DatabaseService.class, CacheService.class })
public class CachedWorldIDService extends AbstractService implements public class CachedWorldIDService extends AbstractService implements
WorldIDService { WorldIDService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The cache service * The cache service
*/ */
@@ -96,14 +104,19 @@ public class CachedWorldIDService extends AbstractService implements
@Override @Override
public void load() { public void load() {
log.debug("Loading IDs from database");
load(characterDao.selectIDs()); load(characterDao.selectIDs());
load(itemDao.selectIDs()); load(itemDao.selectIDs());
load(npcDao.selectIDs()); load(npcDao.selectIDs());
log.debug("IDs loaded from database");
loaded = true; loaded = true;
} }
@Override @Override
public void unload() { public void unload() {
log.debug("Clearing load IDs");
cache.clear(); cache.clear();
} }
@@ -115,7 +128,9 @@ public class CachedWorldIDService extends AbstractService implements
*/ */
private void load(Collection<? extends ObjectID<?>> ids) { private void load(Collection<? extends ObjectID<?>> ids) {
Preconditions.checkNotNull(ids, "ids"); Preconditions.checkNotNull(ids, "ids");
log.debug("Loading {} IDs", ids.size());
for (final ObjectID<?> id : ids) { for (final ObjectID<?> id : ids) {
log.debug("Loading {}", id);
allocator.allocate(id.getID()); allocator.allocate(id.getID());
add(id); add(id);
} }
@@ -129,6 +144,7 @@ public class CachedWorldIDService extends AbstractService implements
// ignore resolving before all IDs are loaded // ignore resolving before all IDs are loaded
return null; return null;
} }
log.debug("Resolving {}", id);
return (I) cache.get(id); return (I) cache.get(id);
} }

View File

@@ -26,6 +26,8 @@ import org.jboss.netty.channel.ServerChannel;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
import org.jboss.netty.logging.InternalLoggerFactory; import org.jboss.netty.logging.InternalLoggerFactory;
import org.jboss.netty.logging.Slf4JLoggerFactory; import org.jboss.netty.logging.Slf4JLoggerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.inject.Inject; import com.google.inject.Inject;
@@ -51,6 +53,11 @@ import com.l2jserver.util.factory.CollectionFactory;
WorldService.class }) WorldService.class })
public class NettyNetworkService extends AbstractService implements public class NettyNetworkService extends AbstractService implements
NetworkService { NetworkService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The {@link WorldService} instance * The {@link WorldService} instance
*/ */
@@ -100,6 +107,9 @@ public class NettyNetworkService extends AbstractService implements
@Override @Override
public void register(final Lineage2Client client) { public void register(final Lineage2Client client) {
Preconditions.checkNotNull(client, "client"); Preconditions.checkNotNull(client, "client");
log.debug("Registering client: {}", client);
clients.add(client); clients.add(client);
client.getChannel().getCloseFuture() client.getChannel().getCloseFuture()
.addListener(new ChannelFutureListener() { .addListener(new ChannelFutureListener() {
@@ -114,12 +124,17 @@ public class NettyNetworkService extends AbstractService implements
@Override @Override
public void unregister(Lineage2Client client) { public void unregister(Lineage2Client client) {
Preconditions.checkNotNull(client, "client"); Preconditions.checkNotNull(client, "client");
log.debug("Unregistering client: {}", client);
clients.remove(client); clients.remove(client);
} }
@Override @Override
public Lineage2Client discover(CharacterID character) { public Lineage2Client discover(CharacterID character) {
Preconditions.checkNotNull(character, "character"); Preconditions.checkNotNull(character, "character");
log.debug("Discovering client object for {}", character);
for (final Lineage2Client client : clients) { for (final Lineage2Client client : clients) {
if (character.equals(client.getCharacterID())) if (character.equals(client.getCharacterID()))
return client; return client;
@@ -130,6 +145,9 @@ public class NettyNetworkService extends AbstractService implements
@Override @Override
public void broadcast(ServerPacket packet) { public void broadcast(ServerPacket packet) {
Preconditions.checkNotNull(packet, "packet"); Preconditions.checkNotNull(packet, "packet");
log.debug("Broadcasting {} packet to all connected clients", packet);
channel.write(packet); channel.write(packet);
} }

View File

@@ -16,6 +16,9 @@
*/ */
package com.l2jserver.service.network.broadcast; package com.l2jserver.service.network.broadcast;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.l2jserver.game.net.Lineage2Client; import com.l2jserver.game.net.Lineage2Client;
@@ -61,6 +64,11 @@ import com.l2jserver.util.geometry.Point3D;
@Depends({ NetworkService.class, WorldService.class }) @Depends({ NetworkService.class, WorldService.class })
public class BroadcastServiceImpl extends AbstractService implements public class BroadcastServiceImpl extends AbstractService implements
BroadcastService { BroadcastService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
private final WorldService worldService; private final WorldService worldService;
private final WorldEventDispatcher eventDispatcher; private final WorldEventDispatcher eventDispatcher;
@@ -77,6 +85,8 @@ public class BroadcastServiceImpl extends AbstractService implements
final L2Character character = conn.getCharacter(); final L2Character character = conn.getCharacter();
Preconditions.checkNotNull(character, "character"); Preconditions.checkNotNull(character, "character");
final CharacterID id = character.getID(); final CharacterID id = character.getID();
log.debug("Starting character broadcast");
// broadcast everything nearby // broadcast everything nearby
// broadcast(conn); // broadcast(conn);
@@ -89,6 +99,7 @@ public class BroadcastServiceImpl extends AbstractService implements
new KnownListFilter(character)) { new KnownListFilter(character)) {
@Override @Override
protected boolean dispatch(WorldEvent e, PositionableObject object) { protected boolean dispatch(WorldEvent e, PositionableObject object) {
log.debug("Broadcast event received: {}", e);
if (e instanceof NPCSpawnEvent) { if (e instanceof NPCSpawnEvent) {
broadcast(conn, e.getObject()); broadcast(conn, e.getObject());
} else if (e instanceof CharacterMoveEvent) { } else if (e instanceof CharacterMoveEvent) {
@@ -123,6 +134,7 @@ public class BroadcastServiceImpl extends AbstractService implements
final WorldListener sendPacketListener = new WorldListener() { final WorldListener sendPacketListener = new WorldListener() {
@Override @Override
public boolean dispatch(WorldEvent e) { public boolean dispatch(WorldEvent e) {
log.debug("Broadcast event received: {}", e);
if (e instanceof CharacterMoveEvent) { if (e instanceof CharacterMoveEvent) {
final CharacterMoveEvent evt = (CharacterMoveEvent) e; final CharacterMoveEvent evt = (CharacterMoveEvent) e;
// process update known list // process update known list
@@ -153,6 +165,7 @@ public class BroadcastServiceImpl extends AbstractService implements
* the character * the character
*/ */
private void broadcastAll(Lineage2Client conn, L2Character character) { private void broadcastAll(Lineage2Client conn, L2Character character) {
log.debug("Broadcasting all near objects to {}", character);
for (final WorldObject o : worldService.iterable(new KnownListFilter( for (final WorldObject o : worldService.iterable(new KnownListFilter(
character))) { character))) {
broadcast(conn, o); broadcast(conn, o);
@@ -172,6 +185,7 @@ public class BroadcastServiceImpl extends AbstractService implements
*/ */
private void broadcastUpdate(Lineage2Client conn, L2Character character, private void broadcastUpdate(Lineage2Client conn, L2Character character,
Point3D point) { Point3D point) {
log.debug("Broadcasting only new near objects to {}", character);
for (final WorldObject o : worldService for (final WorldObject o : worldService
.iterable(new KnownListUpdateFilter(character, point))) { .iterable(new KnownListUpdateFilter(character, point))) {
broadcast(conn, o); broadcast(conn, o);
@@ -187,6 +201,7 @@ public class BroadcastServiceImpl extends AbstractService implements
* the character * the character
*/ */
private void broadcast(Lineage2Client conn, WorldObject o) { private void broadcast(Lineage2Client conn, WorldObject o) {
log.debug("Broadcasting {} to {}", o, conn);
if (o instanceof NPC) { if (o instanceof NPC) {
conn.write(new SM_NPC_INFO((NPC) o)); conn.write(new SM_NPC_INFO((NPC) o));
} else if (o instanceof L2Character) { } else if (o instanceof L2Character) {

View File

@@ -23,6 +23,8 @@ import java.util.concurrent.Future;
import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelFutureListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.util.concurrent.AbstractFuture; import com.google.common.util.concurrent.AbstractFuture;
import com.l2jserver.game.net.Lineage2Client; import com.l2jserver.game.net.Lineage2Client;
@@ -42,6 +44,11 @@ import com.l2jserver.util.factory.CollectionFactory;
@Depends({ NetworkService.class }) @Depends({ NetworkService.class })
public class GameGuardServiceImpl extends AbstractService implements public class GameGuardServiceImpl extends AbstractService implements
GameGuardService { GameGuardService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The static key used to validate game guards * The static key used to validate game guards
*/ */
@@ -81,6 +88,7 @@ public class GameGuardServiceImpl extends AbstractService implements
@Override @Override
public Future<GameGuardResponse> query(final Lineage2Client conn) { public Future<GameGuardResponse> query(final Lineage2Client conn) {
log.debug("Quering client for GameGuard authentication key");
conn.write(new SM_GG_QUERY(STATIC_KEY)).addListener( conn.write(new SM_GG_QUERY(STATIC_KEY)).addListener(
new ChannelFutureListener() { new ChannelFutureListener() {
@Override @Override
@@ -98,6 +106,8 @@ public class GameGuardServiceImpl extends AbstractService implements
@Override @Override
public GameGuardResponse key(Lineage2Client conn, byte[] key) { public GameGuardResponse key(Lineage2Client conn, byte[] key) {
log.debug("GameGuard authentication key received for {}", conn);
final GGFuture future = futures.remove(conn); final GGFuture future = futures.remove(conn);
final boolean validated = validate(conn, key); final boolean validated = validate(conn, key);
final GameGuardResponse response = (validated ? GameGuardResponse.VALID final GameGuardResponse response = (validated ? GameGuardResponse.VALID

View File

@@ -18,6 +18,9 @@ package com.l2jserver.service.network.keygen;
import java.util.Random; import java.util.Random;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.l2jserver.service.AbstractService; import com.l2jserver.service.AbstractService;
import com.l2jserver.service.ServiceStartException; import com.l2jserver.service.ServiceStartException;
import com.l2jserver.service.ServiceStopException; import com.l2jserver.service.ServiceStopException;
@@ -30,6 +33,11 @@ import com.l2jserver.service.ServiceStopException;
*/ */
public class PseudoRandomBlowfishKeygenService extends AbstractService public class PseudoRandomBlowfishKeygenService extends AbstractService
implements BlowfishKeygenService { implements BlowfishKeygenService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The random number generator * The random number generator
*/ */
@@ -42,6 +50,8 @@ public class PseudoRandomBlowfishKeygenService extends AbstractService
@Override @Override
public byte[] generate() { public byte[] generate() {
log.debug("Generating a new key");
final byte[] key = new byte[16]; final byte[] key = new byte[16];
// randomize the 8 first bytes // randomize the 8 first bytes
for (int i = 0; i < key.length; i++) { for (int i = 0; i < key.length; i++) {

View File

@@ -18,6 +18,8 @@ package com.l2jserver.service.network.keygen;
import org.apache.commons.math.random.RandomData; import org.apache.commons.math.random.RandomData;
import org.apache.commons.math.random.RandomDataImpl; import org.apache.commons.math.random.RandomDataImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.l2jserver.service.AbstractService; import com.l2jserver.service.AbstractService;
import com.l2jserver.service.ServiceStartException; import com.l2jserver.service.ServiceStartException;
@@ -32,6 +34,11 @@ import com.l2jserver.service.ServiceStopException;
*/ */
public class SecureBlowfishKeygenService extends AbstractService implements public class SecureBlowfishKeygenService extends AbstractService implements
BlowfishKeygenService { BlowfishKeygenService {
/**
* The logger
*/
private final Logger log = LoggerFactory.getLogger(this.getClass());
/** /**
* The random number generator * The random number generator
*/ */
@@ -44,6 +51,8 @@ public class SecureBlowfishKeygenService extends AbstractService implements
@Override @Override
public byte[] generate() { public byte[] generate() {
log.debug("Generating a new key");
final byte[] key = new byte[16]; final byte[] key = new byte[16];
// randomize the 8 first bytes // randomize the 8 first bytes
for (int i = 0; i < key.length; i++) { for (int i = 0; i < key.length; i++) {