|
57 | 57 | import act.job.bytecode.JobByteCodeScanner; |
58 | 58 | import act.mail.MailerConfigManager; |
59 | 59 | import act.mail.bytecode.MailerByteCodeScanner; |
| 60 | +import act.metric.Metric; |
| 61 | +import act.metric.MetricContextScanner; |
| 62 | +import act.metric.MetricMetaInfoRepo; |
| 63 | +import act.metric.MetricProvider; |
60 | 64 | import act.route.RouteSource; |
61 | 65 | import act.route.RouteTableRouterBuilder; |
62 | 66 | import act.route.Router; |
@@ -142,6 +146,7 @@ public enum F { |
142 | 146 | private MasterEntityMetaInfoRepo entityMetaInfoRepo; |
143 | 147 | private Map<String, Daemon> daemonRegistry; |
144 | 148 | private WebSocketConnectionManager webSocketConnectionManager; |
| 149 | + private MetricMetaInfoRepo metricMetaInfoRepo; |
145 | 150 | private AppCrypto crypto; |
146 | 151 | private IdGenerator idGenerator; |
147 | 152 | private SessionManager sessionManager; |
@@ -595,6 +600,7 @@ public synchronized void refresh() { |
595 | 600 | initApiManager(); |
596 | 601 | initCliDispatcher(); |
597 | 602 | initCliServer(); |
| 603 | + initMetricMetaInfoRepo(); |
598 | 604 | initEntityMetaInfoRepo(); |
599 | 605 |
|
600 | 606 | initWebSocketConnectionManager(); |
@@ -661,6 +667,7 @@ public synchronized void refresh() { |
661 | 667 | // are cleared |
662 | 668 | emit(DEPENDENCY_INJECTOR_PROVISIONED); |
663 | 669 | emit(SINGLETON_PROVISIONED); |
| 670 | + registerMetricProvider(); |
664 | 671 | config().preloadConfigurations(); |
665 | 672 | initSessionManager(); |
666 | 673 | Runnable runnable = new Runnable() { |
@@ -709,6 +716,13 @@ public boolean isSingleton(Class<?> cls) { |
709 | 716 | return null != singletonRegistry.get(cls) || hasSingletonAnnotation(cls); |
710 | 717 | } |
711 | 718 |
|
| 719 | + private void registerMetricProvider() { |
| 720 | + GenieInjector gi = this.injector(); |
| 721 | + MetricProvider mp = new MetricProvider(); |
| 722 | + gi.genie().registerNamedProvider(Metric.class, mp); |
| 723 | + gi.genie().registerProvider(Metric.class, mp); |
| 724 | + } |
| 725 | + |
712 | 726 | private boolean hasSingletonAnnotation(Class<?> cls) { |
713 | 727 | boolean found = false; |
714 | 728 | GenieInjector injector = Act.app().injector(); |
@@ -836,6 +850,10 @@ public JobManager jobManager() { |
836 | 850 | return jobManager; |
837 | 851 | } |
838 | 852 |
|
| 853 | + public MetricMetaInfoRepo metricMetaInfoRepo() { |
| 854 | + return metricMetaInfoRepo; |
| 855 | + } |
| 856 | + |
839 | 857 | public <DI extends DependencyInjector> App injector(DI dependencyInjector) { |
840 | 858 | E.NPE(dependencyInjector); |
841 | 859 | E.illegalStateIf(null != this.dependencyInjector, "Dependency injection factory already set"); |
@@ -1056,6 +1074,10 @@ private void initIdGenerator() { |
1056 | 1074 | ); |
1057 | 1075 | } |
1058 | 1076 |
|
| 1077 | + private void initMetricMetaInfoRepo() { |
| 1078 | + metricMetaInfoRepo = new MetricMetaInfoRepo(this); |
| 1079 | + } |
| 1080 | + |
1059 | 1081 | private void initDaemonRegistry() { |
1060 | 1082 | if (null != daemonRegistry) { |
1061 | 1083 | Destroyable.Util.tryDestroyAll(daemonRegistry.values(), ApplicationScoped.class); |
@@ -1279,6 +1301,7 @@ private void loadBuiltInScanners() { |
1279 | 1301 | scannerManager.register(new CommanderByteCodeScanner()); |
1280 | 1302 | scannerManager.register(new EntityInfoByteCodeScanner()); |
1281 | 1303 | scannerManager.register(new RythmTransformerScanner()); |
| 1304 | + scannerManager.register(new MetricContextScanner()); |
1282 | 1305 | scannerManager.register(new ImplicitVariableProvider.TemplateVariableScanner(this)); |
1283 | 1306 | } |
1284 | 1307 |
|
|
0 commit comments