@Override public Collection<ConnectorDescriptor> getDescriptors() { return Register.getComponents(ConnectorDescriptor.class); }
@Override public Collection<ConnectorService> getConnectors() { return Register.getComponents(ConnectorService.class); }
@Override public Collection<ArtifactSchema> getSchemas() { return Register.getComponents(ArtifactSchema.class); }
@Override public Collection<HttpApiService> getServices() { return Register.getComponents(HttpApiService.class); }
@Override public Collection<ArtifactArchetype> getArchetypes() { return Register.getComponents(ArtifactArchetype.class); }
@Override public Collection<CollaborationPatternDescriptor> getKnownPatterns() { Collection<CollaborationPatternDescriptor> result = new ArrayList<>(); for (CollaborationPatternProvider provider : Register.getComponents(CollaborationPatternProvider.class)) { result.addAll(provider.getPatterns()); } return result; }
@Override public Collection<Metric> getMetrics() { Collection<Metric> result = new ArrayList<>(); SecurityService securityService = Register.getComponent(SecurityService.class); if (securityService == null) return result; if (!securityService.checkAction(ACTION_GET_METRICS).isSuccess()) return result; for (MetricProvider provider : Register.getComponents(MeasurableService.class)) { result.addAll(provider.getMetrics()); } return result; }
@Override public HttpResponse handle(SecurityService securityService, HttpApiRequest request) { if (request.getUri().equals(apiUri + "/modules")) { if (!HttpConstants.METHOD_GET.equals(request.getMethod())) return new HttpResponse(HttpURLConnection.HTTP_BAD_METHOD, HttpConstants.MIME_TEXT_PLAIN, "Expected GET method"); StringBuilder builder = new StringBuilder("["); boolean first = true; for (WebModule module : Register.getComponents(WebModule.class)) { if (!first) builder.append(", "); first = false; builder.append(module.serializedJSON()); } builder.append("]"); return new HttpResponse(HttpURLConnection.HTTP_OK, HttpConstants.MIME_JSON, builder.toString()); } return new HttpResponse(HttpURLConnection.HTTP_NOT_FOUND); }
@Override public synchronized SecurityRealm getRealm() { if (realm != null) return realm; String identifier = realmConfiguration.get("type"); for (SecurityRealmProvider provider : Register.getComponents(SecurityRealmProvider.class)) { realm = provider.newRealm(identifier, realmConfiguration); if (realm != null) return realm; } realm = new KernelSecurityNosecRealm(); return realm; }
/** * Gets the resource URL for the requested uri * * @param uri The uri of a resource * @return The corresponding URL, or null if there is none */ private URL doGetResource(String uri) { if (uri.endsWith("/")) uri += "index.html"; List<String> segments = URIUtils.getSegments(uri); if (contributions == null) { synchronized (this) { if (contributions == null) { contributions = Register.getComponents(WebUIContribution.class); for (WebUIContribution contribution : contributions) register(contribution); } } } return doGetResource(root, segments, 0, uri); }
@Override public synchronized SecurityPolicy getPolicy() { if (policy != null) return policy; String identifier = policyConfiguration.get("type"); for (SecurityPolicyProvider provider : Register.getComponents(SecurityPolicyProvider.class)) { policy = provider.newPolicy(identifier, policyConfiguration); if (policy != null) return policy; } policy = new KernelSecurityPolicyAuthenticated(); return policy; }
@Override public MetricSnapshot pollMetric(Metric metric) { SecurityService securityService = Register.getComponent(SecurityService.class); if (securityService == null) return null; if (!securityService.checkAction(ACTION_GET_METRICS).isSuccess()) return null; for (MetricProvider provider : Register.getComponents(MeasurableService.class)) { MetricSnapshot result = provider.pollMetric(metric); if (result != null) return result; } return null; }
/** * Resolves the current collaboration network service * * @return The collaboration network service */ private synchronized CollaborationNetworkService getNetworkService() { if (networkService == null) { ConfigurationService configurationService = Register.getComponent(ConfigurationService.class); Configuration configuration = configurationService.getConfigFor(CollaborationService.class.getCanonicalName()); Section configNetwork = configuration.getSection("network"); String identifier = configNetwork.get("service"); for (CollaborationNetworkServiceProvider provider : Register.getComponents(CollaborationNetworkServiceProvider.class)) { networkService = provider.instantiate(identifier, configNetwork); if (networkService != null) break; } } return networkService; }
@Override public MetricSnapshot pollMetric(String metricId) { SecurityService securityService = Register.getComponent(SecurityService.class); if (securityService == null) return null; if (!securityService.checkAction(ACTION_GET_METRICS).isSuccess()) return null; for (MetricProvider provider : Register.getComponents(MeasurableService.class)) { for (Metric metric : provider.getMetrics()) { if (metric.getIdentifier().equals(metricId)) return provider.pollMetric(metric); } } return null; } }
/** * Executes the startup sequence of the platform */ public void onPlatformStartup() { if (!hasStarted.compareAndSet(false, true)) return; // authenticate as root SecurityService securityService = Register.getComponent(SecurityService.class); if (securityService != null) securityService.authenticate(PlatformUserRoot.INSTANCE); // execute sequence List<ManagedService> services = (List<ManagedService>) Register.getComponents(ManagedService.class); Collections.sort(services, ManagedService.COMPARATOR_STARTUP); for (ManagedService service : services) { service.onLifecycleStart(); } // broadcast the startup event EventService eventService = Register.getComponent(EventService.class); PlatformManagementService platformManagementService = Register.getComponent(PlatformManagementService.class); if (eventService != null) eventService.onEvent(new PlatformStartupEvent(platformManagementService)); }
/** * Executes the shutdown sequence of the platform */ public void onPlatformShutdown() { if (!hasShutdown.compareAndSet(false, true)) return; // broadcast the shutdown event EventService eventService = Register.getComponent(EventService.class); PlatformManagementService platformManagementService = Register.getComponent(PlatformManagementService.class); if (eventService != null) eventService.onEvent(new PlatformShutdownEvent(platformManagementService)); // authenticate as root SecurityService securityService = Register.getComponent(SecurityService.class); if (securityService != null) securityService.authenticate(PlatformUserRoot.INSTANCE); // execute sequence List<ManagedService> services = (List<ManagedService>) Register.getComponents(ManagedService.class); Collections.sort(services, ManagedService.COMPARATOR_SHUTDOWN); for (ManagedService service : services) { service.onLifecycleStop(); } } }
return; Collection<JobFactory> factories = Register.getComponents(JobFactory.class); for (JobFactory factory : factories) { Job job = factory.newJob(type, definition);
/** * Responds to a request for the definition of a metric * * @param securityService The current security service * @param identifier The identifier of the requested metric * @return The metrics */ private HttpResponse onMessageGetMetric(SecurityService securityService, String identifier) { XSPReply reply = securityService.checkAction(ACTION_GET_METRICS); if (!reply.isSuccess()) return XSPReplyUtils.toHttpResponse(reply, null); for (MetricProvider provider : Register.getComponents(MeasurableService.class)) { for (Metric metric : provider.getMetrics()) { if (metric.getIdentifier().equals(identifier)) return new HttpResponse(HttpURLConnection.HTTP_OK, HttpConstants.MIME_JSON, metric.serializedJSON()); } } return new HttpResponse(HttpURLConnection.HTTP_NOT_FOUND); }
@Override public XSPReply setPolicy(String actionId, SecuredActionPolicy policy) { SecurityService securityService = Register.getComponent(SecurityService.class); if (securityService == null) return XSPReplyServiceUnavailable.instance(); XSPReply reply = securityService.checkAction(SecurityService.ACTION_SET_POLICY); if (!reply.isSuccess()) return reply; for (SecuredService securedService : Register.getComponents(SecuredService.class)) { for (SecuredAction securedAction : securedService.getActions()) { if (securedAction.getIdentifier().equals(actionId)) { return resolveConfig().put(securedAction, policy); } } } return XSPReplyNotFound.instance(); }
Collection<HttpApiService> services = Register.getComponents(HttpApiService.class); HttpApiService service = null; int priority = HttpApiService.CANNOT_HANDLE;