From e50656871d146210158cde9d5b51f696acf1b677 Mon Sep 17 00:00:00 2001 From: rbygrave Date: Mon, 21 Jul 2014 22:31:01 +1200 Subject: [PATCH] Fix for #175 - Change to use System.getProperty("ebean.serverfactory") rather than GlobalProperties --- .../com/avaje/ebean/EbeanServerFactory.java | 26 +----- .../server/core/DefaultServerFactory.java | 19 ----- .../avaje/tests/unitinternal/HelloMain.java | 81 +++++++++++-------- 3 files changed, 47 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/avaje/ebean/EbeanServerFactory.java b/src/main/java/com/avaje/ebean/EbeanServerFactory.java index 07003d545..b86a28818 100644 --- a/src/main/java/com/avaje/ebean/EbeanServerFactory.java +++ b/src/main/java/com/avaje/ebean/EbeanServerFactory.java @@ -6,8 +6,6 @@ import com.avaje.ebean.common.BootupEbeanManager; import com.avaje.ebean.config.GlobalProperties; import com.avaje.ebean.config.ServerConfig; import com.avaje.ebean.util.ClassUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Creates EbeanServer instances. @@ -26,14 +24,9 @@ import org.slf4j.LoggerFactory; * methods on the Ebean singleton such as {@link Ebean#find(Class)} are just a * convenient way of using the 'default/primary' EbeanServer. *

- * - * @author Rob Bygrave - * */ public class EbeanServerFactory { - private static final Logger logger = LoggerFactory.getLogger(EbeanServerFactory.class); - private static BootupEbeanManager serverFactory = createServerFactory(); /** @@ -69,27 +62,10 @@ public class EbeanServerFactory { private static BootupEbeanManager createServerFactory() { - // String d___ = - // com.avaje.ebean.server.core.DefaultServerFactory.class.getName(); String dflt = "com.avaje.ebeaninternal.server.core.DefaultServerFactory"; - String implClassName = GlobalProperties.get("ebean.serverfactory", dflt); + String implClassName = System.getProperty("ebean.serverfactory", dflt); - int delaySecs = GlobalProperties.getInt("ebean.start.delay", 0); - if (delaySecs > 0) { - try { - // perhaps useful to delay the startup to give time to - // attach a debugger when running in a server like tomcat. - String m = "Ebean sleeping " + delaySecs + " seconds due to ebean.start.delay"; - logger.info(m); - Thread.sleep(delaySecs * 1000); - - } catch (InterruptedException e) { - String m = "Interrupting debug.start.delay of " + delaySecs; - logger.error(m, e); - } - } try { - // use a client side implementation? return (BootupEbeanManager) ClassUtil.newInstance(implClassName); } catch (Exception ex) { throw new RuntimeException(ex); diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServerFactory.java b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServerFactory.java index 99dcb029f..58af51e3b 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServerFactory.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServerFactory.java @@ -1,22 +1,3 @@ -/** - * Copyright (C) 2006 Robin Bygrave - * - * This file is part of Ebean. - * - * Ebean is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. - * - * Ebean is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Ebean; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ package com.avaje.ebeaninternal.server.core; import java.sql.Connection; diff --git a/src/test/java/com/avaje/tests/unitinternal/HelloMain.java b/src/test/java/com/avaje/tests/unitinternal/HelloMain.java index cac12d845..e700a7bad 100644 --- a/src/test/java/com/avaje/tests/unitinternal/HelloMain.java +++ b/src/test/java/com/avaje/tests/unitinternal/HelloMain.java @@ -1,9 +1,11 @@ - - package com.avaje.tests.unitinternal; import java.io.File; +import org.avaje.agentloader.AgentLoader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.avaje.ebean.EbeanServer; import com.avaje.ebean.EbeanServerFactory; import com.avaje.ebean.config.DataSourceConfig; @@ -12,42 +14,51 @@ import com.avaje.tests.model.basic.TOne; public class HelloMain { - public static void main(String[] args) { - // ### Configuration Objects ### - ServerConfig serverConfig = new ServerConfig(); - DataSourceConfig dataSourceConfig = new DataSourceConfig(); + protected static Logger logger = LoggerFactory.getLogger(HelloMain.class); - // ### Configuration Settings ### - // -> data source - dataSourceConfig.setDriver("org.h2.Driver"); - dataSourceConfig.setUsername("howtouser"); - dataSourceConfig.setPassword(""); - dataSourceConfig.setUrl("jdbc:h2:db/howto1"); + static { + logger.debug("... preStart"); + if (!AgentLoader.loadAgentFromClasspath("avaje-ebeanorm-agent", "debug=1;packages=com.avaje.tests.**")) { + logger.info("avaje-ebeanorm-agent not found in classpath - not dynamically loaded"); + } + } - // -> server - serverConfig.setName("default"); - serverConfig.setDataSourceConfig(dataSourceConfig); + public static void main(String[] args) { + // ### Configuration Objects ### + ServerConfig serverConfig = new ServerConfig(); + DataSourceConfig dataSourceConfig = new DataSourceConfig(); - // auto create db if it does not exist - if(!(new File("db/howto1.data.db")).exists() ){ - serverConfig.setDdlGenerate(true); - serverConfig.setDdlRun(true); - serverConfig.addClass(TOne.class); - } + // ### Configuration Settings ### + // -> data source + dataSourceConfig.setDriver("org.h2.Driver"); + dataSourceConfig.setUsername("howtouser"); + dataSourceConfig.setPassword(""); + dataSourceConfig.setUrl("jdbc:h2:db/howto1"); - EbeanServer eServer = EbeanServerFactory.create(serverConfig); + // -> server + serverConfig.setName("default"); + serverConfig.setDataSourceConfig(dataSourceConfig); + + // auto create db if it does not exist + if (!(new File("db/howto1.data.db")).exists()) { + serverConfig.setDdlGenerate(true); + serverConfig.setDdlRun(true); + serverConfig.addClass(TOne.class); + } + + EbeanServer eServer = EbeanServerFactory.create(serverConfig); + + long id = 1; + TOne data = eServer.find(TOne.class, id); + if (data == null) { + System.out.println("This is the first run, saving data.."); + TOne tone = new TOne(); + tone.setName("banan"); + eServer.save(tone);// new TOne()id, "Hello World!")); + } else { + System.out.println(String.format("############\n%s############", data.getName())); + } + // ShutdownManager.shutdown(); + } - long id = 1; - TOne data = eServer.find(TOne.class, id); - if (data == null) { - System.out.println("This is the first run, saving data.."); - TOne tone = new TOne(); - tone.setName("banan"); - eServer.save(tone);//new TOne()id, "Hello World!")); - } else { - System.out.println(String.format("############\n%s############", data.getName())); - } - //ShutdownManager.shutdown(); - } - }