cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aadamc...@apache.org
Subject svn commit: r954853 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/configuration/ test/java/org/apache/cayenne/access/ test/java/org/apache/cayenne/unit/di/server/
Date Tue, 15 Jun 2010 12:34:18 GMT
Author: aadamchik
Date: Tue Jun 15 12:34:17 2010
New Revision: 954853

URL: http://svn.apache.org/viewvc?rev=954853&view=rev
Log:
DI-enabled unit tests

* switching to direct runtime injection and correct scoping of ServerRuntime within each unit
test
  instead of caching and cleaning it up. We'll have a much cleaner test setup now

Added:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java
      - copied, changed from r954852, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CachingServerRuntimeFactory.java
Removed:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CachingServerRuntimeFactory.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeFactory.java
Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/CayenneRuntime.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/FlavoredDBHelperProvider.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryBlocker.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataNodeProvider.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseLifecycleManager.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSelfTest.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/CayenneRuntime.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/CayenneRuntime.java?rev=954853&r1=954852&r2=954853&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/CayenneRuntime.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/CayenneRuntime.java
Tue Jun 15 12:34:17 2010
@@ -22,6 +22,7 @@ import java.util.Collection;
 
 import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.di.BeforeScopeEnd;
 import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.di.Module;
@@ -125,6 +126,9 @@ public abstract class CayenneRuntime {
      * Shuts down the DI injector of this runtime, giving all services that need to
      * release some resources a chance to do that.
      */
+    // the following annotation is for environments that manage CayenneRuntimes within
+    // another DI registry (e.g. unit tests)
+    @BeforeScopeEnd
     public void shutdown() {
         injector.shutdown();
     }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteTest.java?rev=954853&r1=954852&r2=954853&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteTest.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteTest.java
Tue Jun 15 12:34:17 2010
@@ -23,13 +23,13 @@ import java.util.List;
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.QueryResponse;
+import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.ServerRuntimeFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 @UseServerRuntime(ServerCase.TESTMAP_PROJECT)
@@ -42,7 +42,7 @@ public class DataContextEJBQLDeleteTest 
     protected DBHelper dbHelper;
 
     @Inject
-    protected ServerRuntimeFactory runtimeFactory;
+    protected ServerRuntime runtime;
 
     protected TableHelper tPainting;
 
@@ -119,7 +119,7 @@ public class DataContextEJBQLDeleteTest 
         assertEquals(1, count.length);
         assertEquals(1, count[0]);
 
-        ObjectContext freshContext = runtimeFactory.get(TESTMAP_PROJECT).getContext();
+        ObjectContext freshContext = runtime.getContext();
 
         assertNotNull(Cayenne.objectForPK(freshContext, Painting.class, 33001));
         assertNull(Cayenne.objectForPK(freshContext, Painting.class, 33002));

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/FlavoredDBHelperProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/FlavoredDBHelperProvider.java?rev=954853&r1=954852&r2=954853&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/FlavoredDBHelperProvider.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/FlavoredDBHelperProvider.java
Tue Jun 15 12:34:17 2010
@@ -22,6 +22,7 @@ import javax.sql.DataSource;
 
 import org.apache.cayenne.ConfigurationException;
 import org.apache.cayenne.DataChannel;
+import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Provider;
@@ -34,19 +35,15 @@ public class FlavoredDBHelperProvider im
     protected DataSource dataSource;
 
     @Inject
-    protected ServerRuntimeFactory runtimeFactory;
+    // injecting provider to make this provider independent from scoping of ServerRuntime
+    protected Provider<ServerRuntime> serverRuntimeProvider;
 
     @Inject
     protected DbAdapter adapter;
 
-    @Inject
-    protected ServerCaseProperties properties;
-
     public DBHelper get() throws ConfigurationException {
-        
-        DataChannel channel = runtimeFactory
-                .get(properties.getConfigurationLocation())
-                .getChannel();
+
+        DataChannel channel = serverRuntimeProvider.get().getChannel();
         DataMap firstMap = channel.getEntityResolver().getDataMaps().iterator().next();
         return new FlavoredDBHelper(dataSource, adapter.getQuotingStrategy(firstMap
                 .isQuotingSQLIdentifiers()));

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java?rev=954853&r1=954852&r2=954853&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java
Tue Jun 15 12:34:17 2010
@@ -22,6 +22,7 @@ import javax.sql.DataSource;
 
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.DIBootstrap;
@@ -65,8 +66,7 @@ public class ServerCase extends DICase {
                 // singleton objects
                 binder.bind(UnitTestLifecycleManager.class).toInstance(
                         new ServerCaseLifecycleManager(testScope));
-                binder.bind(ServerRuntimeFactory.class).toInstance(
-                        new CachingServerRuntimeFactory(resources, testScope));
+
                 binder.bind(DataSource.class).toProviderInstance(
                         new CayenneResourcesDataSourceProvider(resources));
                 binder.bind(DbAdapter.class).toProviderInstance(
@@ -82,6 +82,8 @@ public class ServerCase extends DICase {
                         .bind(ServerCaseProperties.class)
                         .to(ServerCaseProperties.class)
                         .in(testScope);
+                binder.bind(ServerRuntime.class).toProviderInstance(
+                        new ServerRuntimeProvider(resources)).in(testScope);
                 binder.bind(ObjectContext.class).toProvider(
                         ServerCaseDataContextProvider.class).in(testScope);
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryBlocker.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryBlocker.java?rev=954853&r1=954852&r2=954853&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryBlocker.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryBlocker.java
Tue Jun 15 12:34:17 2010
@@ -19,21 +19,22 @@
 package org.apache.cayenne.unit.di.server;
 
 import org.apache.cayenne.access.UnitTestDomain;
+import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Provider;
 import org.apache.cayenne.unit.di.UnitTestClosure;
 
 public class ServerCaseDataChannelQueryBlocker implements DataChannelQueryBlocker {
 
     @Inject
-    protected ServerRuntimeFactory runtimeFactory;
-
-    @Inject
-    protected ServerCaseProperties properties;
+    // injecting provider to make this provider independent from scoping of ServerRuntime
+    protected Provider<ServerRuntime> serverRuntimeProvider;
 
     public void runWithQueriesBlocked(UnitTestClosure closure) {
 
-        UnitTestDomain channel = (UnitTestDomain) runtimeFactory.get(
-                properties.getConfigurationLocation()).getChannel();
+        UnitTestDomain channel = (UnitTestDomain) serverRuntimeProvider
+                .get()
+                .getChannel();
 
         channel.setBlockingQueries(true);
         try {

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java?rev=954853&r1=954852&r2=954853&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java
Tue Jun 15 12:34:17 2010
@@ -20,18 +20,17 @@ package org.apache.cayenne.unit.di.serve
 
 import org.apache.cayenne.ConfigurationException;
 import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Provider;
 
 public class ServerCaseDataContextProvider implements Provider<ObjectContext> {
 
     @Inject
-    protected ServerRuntimeFactory runtimeFactory;
-
-    @Inject
-    protected ServerCaseProperties properties;
+    // injecting provider to make this provider independent from scoping of ServerRuntime
+    protected Provider<ServerRuntime> serverRuntimeProvider;
 
     public ObjectContext get() throws ConfigurationException {
-        return runtimeFactory.get(properties.getConfigurationLocation()).getContext();
+        return serverRuntimeProvider.get().getContext();
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataNodeProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataNodeProvider.java?rev=954853&r1=954852&r2=954853&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataNodeProvider.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataNodeProvider.java
Tue Jun 15 12:34:17 2010
@@ -21,20 +21,18 @@ package org.apache.cayenne.unit.di.serve
 import org.apache.cayenne.ConfigurationException;
 import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Provider;
 
 public class ServerCaseDataNodeProvider implements Provider<DataNode> {
 
     @Inject
-    protected ServerRuntimeFactory runtimeFactory;
-
-    @Inject
-    protected ServerCaseProperties properties;
+    // injecting provider to make this provider independent from scoping of ServerRuntime
+    protected Provider<ServerRuntime> serverRuntimeProvider;
 
     public DataNode get() throws ConfigurationException {
-        DataDomain channel = (DataDomain) runtimeFactory.get(
-                properties.getConfigurationLocation()).getChannel();
+        DataDomain channel = (DataDomain) serverRuntimeProvider.get().getChannel();
         return channel.getDataNodes().iterator().next();
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseLifecycleManager.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseLifecycleManager.java?rev=954853&r1=954852&r2=954853&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseLifecycleManager.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseLifecycleManager.java
Tue Jun 15 12:34:17 2010
@@ -20,7 +20,6 @@ package org.apache.cayenne.unit.di.serve
 
 import junit.framework.TestCase;
 
-import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Provider;
 import org.apache.cayenne.di.spi.DefaultScope;
@@ -31,9 +30,6 @@ public class ServerCaseLifecycleManager 
     @Inject
     protected Provider<ServerCaseProperties> propertiesProvider;
 
-    @Inject
-    protected ServerRuntimeFactory runtimeFactory;
-
     public ServerCaseLifecycleManager(DefaultScope scope) {
         super(scope);
     }
@@ -48,15 +44,6 @@ public class ServerCaseLifecycleManager 
         String location = runtimeName != null ? runtimeName.value() : null;
         propertiesProvider.get().setConfigurationLocation(location);
 
-        // clear shared caches
-        if (location != null) {
-            DataDomain channel = (DataDomain) runtimeFactory.get(location).getChannel();
-            channel.getEventManager().removeAllListeners(
-                    channel.getSharedSnapshotCache().getSnapshotEventSubject());
-            channel.getSharedSnapshotCache().clear();
-            channel.getQueryCache().clear();
-        }
-
         super.setUp(testCase);
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSelfTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSelfTest.java?rev=954853&r1=954852&r2=954853&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSelfTest.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSelfTest.java
Tue Jun 15 12:34:17 2010
@@ -18,13 +18,18 @@
  ****************************************************************/
 package org.apache.cayenne.unit.di.server;
 
+import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Provider;
 
 @UseServerRuntime(ServerCase.TESTMAP_PROJECT)
 public class ServerCaseSelfTest extends ServerCase {
 
     @Inject
-    protected ServerRuntimeFactory runtimeFactory;
+    protected ServerRuntime runtime;
+    
+    @Inject
+    protected Provider<ServerRuntime> runtimeProvider;
 
     @Inject
     protected ServerCaseProperties properties;
@@ -34,13 +39,14 @@ public class ServerCaseSelfTest extends 
         assertNotNull(properties);
         assertEquals(ServerCase.TESTMAP_PROJECT, properties.getConfigurationLocation());
 
-        ServerRuntimeFactory localFactory = this.runtimeFactory;
-        assertNotNull(localFactory);
+        ServerRuntime local = this.runtime;
+        assertNotNull(local);
+        assertSame(local, runtimeProvider.get());
 
         tearDown();
 
         setUp();
-        assertSame(localFactory, this.runtimeFactory);
+        assertNotSame(local, this.runtime);
     }
 
 }

Copied: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java
(from r954852, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CachingServerRuntimeFactory.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CachingServerRuntimeFactory.java&r1=954852&r2=954853&rev=954853&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CachingServerRuntimeFactory.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java
Tue Jun 15 12:34:17 2010
@@ -18,48 +18,37 @@
  ****************************************************************/
 package org.apache.cayenne.unit.di.server;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import javax.sql.DataSource;
 
+import org.apache.cayenne.ConfigurationException;
 import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.di.Binder;
+import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Module;
-import org.apache.cayenne.di.spi.DefaultScope;
+import org.apache.cayenne.di.Provider;
 import org.apache.cayenne.unit.CayenneResources;
 
-public class CachingServerRuntimeFactory implements ServerRuntimeFactory {
+public class ServerRuntimeProvider implements Provider<ServerRuntime> {
+
+    @Inject
+    protected ServerCaseProperties properties;
 
     protected CayenneResources resources;
-    protected DefaultScope testScope;
-    protected Map<String, ServerRuntime> cache;
 
-    public CachingServerRuntimeFactory(CayenneResources resources, DefaultScope testScope)
{
+    public ServerRuntimeProvider(CayenneResources resources) {
         this.resources = resources;
-        this.testScope = testScope;
-        this.cache = new HashMap<String, ServerRuntime>();
     }
 
-    public ServerRuntime get(String configurationLocation) {
+    public ServerRuntime get() throws ConfigurationException {
 
+        String configurationLocation = properties.getConfigurationLocation();
         if (configurationLocation == null) {
-            throw new NullPointerException("Null 'configurationLocation'");
+            throw new NullPointerException(
+                    "Null 'configurationLocation', method is called out of scope");
         }
 
-        ServerRuntime runtime = cache.get(configurationLocation);
-
-        if (runtime == null) {
-            runtime = create(configurationLocation);
-            cache.put(configurationLocation, runtime);
-        }
-
-        return runtime;
-    }
-
-    protected ServerRuntime create(String configurationLocation) {
         return new ServerRuntime(configurationLocation, new ServerExtraModule());
     }
 



Mime
View raw message