// Path: rsimulator-core/src/main/java/com/github/bjuvensjo/rsimulator/core/util/Props.java
// @ImplementedBy(PropsImpl.class)
// public interface Props {
// 
//     /**
//      * Returns true if Simulator cache is on, otherwise false.
//      *
//      * @return true if Simulator cache is on, otherwise false
//      */
//     boolean isSimulatorCache();
// 
//     /**
//      * Returns true if xml namespaces should be ignored, otherwise false.
//      *
//      * @return true if xml namespaces should be ignored, otherwise false
//      */
//     public boolean ignoreXmlNamespaces();
// 
//     /**
//      * Returns the properties read from the specified path.
//      *
//      * @param path the path
//      * @return the properties read from the specified path
//      */
//     Optional<Properties> getProperties(Path path);
// }


import com.github.bjuvensjo.rsimulator.core.util.Props;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
package com.github.bjuvensjo.rsimulator.core;



/**
 * SimulatorCacheInterceptor is an interceptor that caches invocations of
 * {@link Simulator#service(String, String, String, String, Map...)}.
 */
@Singleton
public class SimulatorCacheInterceptor implements MethodInterceptor {
    private final Logger log = LoggerFactory.getLogger(SimulatorCacheInterceptor.class);
    @Inject
    @Named("SimulatorCache")
    Cache cache;
    @Inject
// Path: rsimulator-core/src/main/java/com/github/bjuvensjo/rsimulator/core/util/Props.java
// @ImplementedBy(PropsImpl.class)
// public interface Props {
// 
//     /**
//      * Returns true if Simulator cache is on, otherwise false.
//      *
//      * @return true if Simulator cache is on, otherwise false
//      */
//     boolean isSimulatorCache();
// 
//     /**
//      * Returns true if xml namespaces should be ignored, otherwise false.
//      *
//      * @return true if xml namespaces should be ignored, otherwise false
//      */
//     public boolean ignoreXmlNamespaces();
// 
//     /**
//      * Returns the properties read from the specified path.
//      *
//      * @param path the path
//      * @return the properties read from the specified path
//      */
//     Optional<Properties> getProperties(Path path);
// }


// Path: rsimulator-core/src/main/java/com/github/bjuvensjo/rsimulator/core/SimulatorCacheInterceptor.java
import com.github.bjuvensjo.rsimulator.core.util.Props;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

package com.github.bjuvensjo.rsimulator.core;



/**
 * SimulatorCacheInterceptor is an interceptor that caches invocations of
 * {@link Simulator#service(String, String, String, String, Map...)}.
 */
@Singleton
public class SimulatorCacheInterceptor implements MethodInterceptor {
    private final Logger log = LoggerFactory.getLogger(SimulatorCacheInterceptor.class);
    @Inject
    @Named("SimulatorCache")
    Cache cache;
    @Inject
    Props props;