Skip to content

Commit e323737

Browse files
committed
upgrade to act-1.4.0
1 parent 8bd833b commit e323737

File tree

7 files changed

+79
-44
lines changed

7 files changed

+79
-44
lines changed

src/main/java/act/db/ebean/EbeanAgentLoader.java

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,35 @@
11
package act.db.ebean;
22

3+
import act.Act;
4+
import act.app.event.AppEventId;
5+
import act.sys.Env;
36
import com.sun.tools.attach.AttachNotSupportedException;
47
import com.sun.tools.attach.VirtualMachine;
58
import com.sun.tools.attach.VirtualMachineDescriptor;
69
import com.sun.tools.attach.spi.AttachProvider;
710
import org.avaje.agentloader.AgentLoader;
11+
import org.osgl.logging.LogManager;
12+
import org.osgl.logging.Logger;
13+
import org.osgl.util.S;
814
import sun.tools.attach.BsdVirtualMachine;
915
import sun.tools.attach.LinuxVirtualMachine;
1016
import sun.tools.attach.SolarisVirtualMachine;
1117
import sun.tools.attach.WindowsVirtualMachine;
1218

13-
import java.io.File;
14-
import java.io.IOException;
15-
import java.lang.management.ManagementFactory;
19+
import java.io.*;
1620
import java.net.URISyntaxException;
1721
import java.net.URL;
1822
import java.net.URLClassLoader;
1923
import java.util.ArrayList;
2024
import java.util.List;
21-
import java.util.logging.Logger;
2225

2326
public class EbeanAgentLoader extends AgentLoader {
2427

2528

26-
private static final Logger log = Logger.getLogger(AgentLoader.class.getName());
29+
private static final Logger LOGGER = LogManager.get(EbeanAgentLoader.class.getName());
2730

2831
private static final List<String> loaded = new ArrayList<String>();
2932

30-
private static final String discoverPid() {
31-
String nameOfRunningVM = ManagementFactory.getRuntimeMXBean().getName();
32-
int p = nameOfRunningVM.indexOf('@');
33-
return nameOfRunningVM.substring(0, p);
34-
}
35-
3633
private static final AttachProvider ATTACH_PROVIDER = new AttachProvider() {
3734
@Override
3835
public String name() {
@@ -66,11 +63,9 @@ public static void loadAgent(String jarFilePath) {
6663
* Load an agent providing the full file path with parameters.
6764
*/
6865
public static void loadAgent(String jarFilePath, String params) {
69-
70-
log.info("dynamically loading javaagent for " + jarFilePath);
7166
try {
7267

73-
String pid = discoverPid();
68+
String pid = Env.PID.get();
7469

7570
VirtualMachine vm;
7671
if (AttachProvider.providers().isEmpty()) {
@@ -79,7 +74,22 @@ public static void loadAgent(String jarFilePath, String params) {
7974
vm = VirtualMachine.attach(pid);
8075
}
8176

82-
vm.loadAgent(jarFilePath, params);
77+
final PrintStream ps = System.out;
78+
try {
79+
System.setOut(new PrintStream(new FileOutputStream(".ebean_agent.log")));
80+
vm.loadAgent(jarFilePath, params);
81+
if (LOGGER.isTraceEnabled()) {
82+
LOGGER.trace("javaagent loaded: " + jarFilePath);
83+
}
84+
} finally {
85+
// ensure ebean2 EnhanceContext logout set to dump output
86+
Act.jobManager().on(AppEventId.CLASS_LOADER_INITIALIZED, new Runnable() {
87+
@Override
88+
public void run() {
89+
System.setOut(ps);
90+
}
91+
});
92+
}
8393
vm.detach();
8494

8595
} catch (Exception e) {
@@ -98,8 +108,10 @@ public static void loadAgentFromClasspath(String agentName) {
98108
* Load the agent from the classpath using its name and passing params.
99109
*/
100110
public synchronized static boolean loadAgentFromClasspath(String agentName, String params) {
101-
102111
if (loaded.contains(agentName)) {
112+
if (LOGGER.isDebugEnabled()) {
113+
LOGGER.debug(S.concat("agent already loaded: ", agentName));
114+
}
103115
// the agent is already loaded
104116
return true;
105117
}
@@ -118,6 +130,9 @@ public synchronized static boolean loadAgentFromClasspath(String agentName, Stri
118130
if (fullName.startsWith("/") && isWindows()) {
119131
fullName = fullName.substring(1);
120132
}
133+
if (LOGGER.isTraceEnabled()) {
134+
LOGGER.trace(S.concat("loading agent: ", fullName));
135+
}
121136
loadAgent(fullName, params);
122137
loaded.add(agentName);
123138
return true;
@@ -126,6 +141,9 @@ public synchronized static boolean loadAgentFromClasspath(String agentName, Stri
126141
}
127142

128143
// Agent not found and not loaded
144+
if (LOGGER.isTraceEnabled()) {
145+
LOGGER.trace("agent not found");
146+
}
129147
return false;
130148

131149
} catch (URISyntaxException use) {

src/main/java/act/db/ebean/EbeanDao.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class EbeanDao<ID_TYPE, MODEL_TYPE> extends DaoBase<ID_TYPE, MODEL_TYPE,
4646
EbeanDao(Class<ID_TYPE> idType, Class<MODEL_TYPE> modelType, EbeanService service) {
4747
super(idType, modelType);
4848
init(modelType);
49-
this.ebean(service.ebean());
49+
this.setEbean(service.ebean());
5050
this.ds = service.dataSource();
5151
}
5252

@@ -60,8 +60,7 @@ public EbeanDao() {
6060
}
6161

6262
public void ebean(EbeanServer ebean) {
63-
this.ebean = $.notNull(ebean);
64-
this.tableName = ((SpiEbeanServer) ebean).getBeanDescriptor(modelType()).getBaseTable();
63+
setEbean($.notNull(ebean));
6564
}
6665

6766
public void modelType(Class<?> type) {
@@ -92,9 +91,11 @@ private void init(Class<MODEL_TYPE> modelType) {
9291
break;
9392
}
9493
}
95-
if (null != ebean) {
96-
this.tableName = ((SpiEbeanServer) ebean).getBeanDescriptor(modelType()).getBaseTable();
97-
}
94+
}
95+
96+
private void setEbean(EbeanServer ebean) {
97+
this.ebean = ebean;
98+
this.tableName = ((SpiEbeanServer) ebean).getBeanDescriptor(modelType()).getBaseTable();
9899
}
99100

100101
private EbeanService getService(String dbId, DbServiceManager mgr) {
@@ -114,7 +115,7 @@ public EbeanServer ebean() {
114115
String dbId = null == db ? DbServiceManager.DEFAULT : db.value();
115116
EbeanService dbService = getService(dbId, app().dbServiceManager());
116117
E.NPE(dbService);
117-
ebean = dbService.ebean();
118+
setEbean(dbService.ebean());
118119
}
119120
}
120121
return ebean;

src/main/java/act/db/ebean/EbeanDaoInjectionListener.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package act.db.ebean;
22

3+
import act.Act;
34
import act.app.App;
5+
import act.app.event.AppEventId;
46
import act.db.DbService;
57
import act.db.di.DaoInjectionListenerBase;
68
import org.osgl.$;
79
import org.osgl.inject.BeanSpec;
810
import org.osgl.util.Generics;
11+
import org.osgl.util.S;
912

1013
import java.lang.reflect.Type;
1114
import java.util.List;
@@ -27,13 +30,18 @@ public void onInjection(Object injectee, BeanSpec spec) {
2730
logger.warn("No type parameter information provided");
2831
return;
2932
}
30-
$.T2<Class, String> resolved = resolve(typeParameters);
33+
final $.T2<Class, String> resolved = resolve(typeParameters);
3134
DbService dbService = App.instance().dbServiceManager().dbService(resolved._2);
3235
if (dbService instanceof EbeanService) {
33-
EbeanService service = $.cast(dbService);
34-
EbeanDao dao = $.cast(injectee);
35-
dao.ebean(service.ebean());
36-
dao.modelType(resolved._1);
36+
final EbeanService service = $.cast(dbService);
37+
final EbeanDao dao = $.cast(injectee);
38+
Act.jobManager().on(AppEventId.DB_SVC_LOADED, S.concat(resolved._2, "-ebean-on-dao-injection"), new Runnable() {
39+
@Override
40+
public void run() {
41+
dao.ebean(service.ebean());
42+
dao.modelType(resolved._1);
43+
}
44+
}, true);
3745
}
3846
}
3947
}

src/main/java/act/db/ebean/EbeanModelBase.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import org.osgl.$;
77

88
import javax.persistence.MappedSuperclass;
9-
109
@MappedSuperclass
1110
public abstract class EbeanModelBase <ID_TYPE, MODEL_TYPE extends EbeanModelBase>
1211
implements Model<ID_TYPE, MODEL_TYPE> {

src/main/java/act/db/ebean/EbeanQuery.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -289,16 +289,6 @@ public void consume($.Visitor<MODEL_TYPE> visitor) {
289289
}
290290
}
291291

292-
@Override
293-
public void findEach(QueryEachConsumer<MODEL_TYPE> consumer) {
294-
q.findEach(consumer);
295-
}
296-
297-
@Override
298-
public void findEachWhile(QueryEachWhileConsumer<MODEL_TYPE> consumer) {
299-
q.findEachWhile(consumer);
300-
}
301-
302292
@Override
303293
public List<MODEL_TYPE> findList() {
304294
return q.findList();
@@ -344,6 +334,16 @@ public FutureList<MODEL_TYPE> findFutureList() {
344334
return q.findFutureList();
345335
}
346336

337+
@Override
338+
public void findEach(QueryEachConsumer<MODEL_TYPE> consumer) {
339+
q.findEach(consumer);
340+
}
341+
342+
@Override
343+
public void findEachWhile(QueryEachWhileConsumer<MODEL_TYPE> consumer) {
344+
q.findEachWhile(consumer);
345+
}
346+
347347
@Override
348348
public EbeanQuery<MODEL_TYPE> setParameter(String name, Object value) {
349349
q.setParameter(name, value);

src/main/java/act/db/ebean/EbeanService.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import com.avaje.ebean.EbeanServerFactory;
1313
import com.avaje.ebean.config.ServerConfig;
1414
import org.osgl.$;
15+
import org.osgl.logging.LogManager;
16+
import org.osgl.logging.Logger;
1517
import org.osgl.util.E;
1618
import org.osgl.util.S;
1719

@@ -28,6 +30,8 @@
2830

2931
public final class EbeanService extends SqlDbService {
3032

33+
private final Logger LOGGER = LogManager.get(EbeanService.class);
34+
3135
// the ebean service instance
3236
private EbeanServer ebean;
3337

@@ -38,7 +42,9 @@ public EbeanService(final String dbId, final App app, final Map<String, String>
3842
String s = config.get("agentPackage");
3943
final String agentPackage = null == s ? S.string(app().config().get(AppConfigKey.SCAN_PACKAGE)) : S.string(s).trim();
4044
E.invalidConfigurationIf(S.blank(agentPackage), "\"agentPackage\" not configured");
41-
_logger.info("\"agentPackage\" configured: %s", agentPackage);
45+
if (LOGGER.isTraceEnabled()) {
46+
LOGGER.trace("\"agentPackage\" configured: %s", agentPackage);
47+
}
4248
app.eventBus().bind(PRE_LOAD_CLASSES, new AppEventListenerBase(S.concat(dbId, "-ebean-pre-cl")) {
4349
@Override
4450
public void on(EventObject event) {
@@ -47,7 +53,7 @@ public void on(EventObject event) {
4753
.append(agentPackage)
4854
.toString();
4955
if (!EbeanAgentLoader.loadAgentFromClasspath("ebean-agent", s)) {
50-
_logger.warn("ebean-agent not found in classpath - not dynamically loaded");
56+
LOGGER.warn("ebean-agent not found in classpath - not dynamically loaded");
5157
}
5258
}
5359
});
@@ -59,8 +65,8 @@ protected boolean supportDdl() {
5965
}
6066

6167
@Override
62-
protected void dataSourceProvided(DataSource dataSource, DataSourceConfig dataSourceConfig) {
63-
ebeanConfig = new EbeanConfigAdaptor().adaptFrom(this.config, dataSourceConfig, this);
68+
protected void dataSourceProvided(DataSource dataSource, DataSourceConfig dsConfig) {
69+
ebeanConfig = new EbeanConfigAdaptor().adaptFrom(this.config, dsConfig, this);
6470
ebeanConfig.setDataSource(dataSource);
6571
app().eventBus().trigger(new EbeanConfigLoaded(ebeanConfig));
6672
ebean = EbeanServerFactory.create(ebeanConfig);

src/main/java/act/db/ebean/util/EbeanConfigAdaptor.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@
77
import com.avaje.ebean.config.ServerConfig;
88
import com.avaje.ebean.config.UnderscoreNamingConvention;
99
import org.avaje.datasource.DataSourceConfig;
10+
import org.osgl.logging.LogManager;
11+
import org.osgl.logging.Logger;
1012
import org.osgl.util.S;
1113

1214
import javax.inject.Singleton;
1315
import java.util.Properties;
1416
import java.util.Set;
1517

16-
import static act.app.App.LOGGER;
1718
import static act.db.sql.util.NamingConvention.Default.MATCHING;
1819

1920
/**
@@ -22,6 +23,8 @@
2223
@Singleton
2324
public class EbeanConfigAdaptor {
2425

26+
private static final Logger LOGGER = LogManager.get(EbeanConfigAdaptor.class);
27+
2528
public ServerConfig adaptFrom(SqlDbServiceConfig actConfig, act.db.sql.DataSourceConfig dsConfig, SqlDbService svc) {
2629
ServerConfig config = new ServerConfig();
2730

0 commit comments

Comments
 (0)