private void constructAppKey() { this.appKey = this.application.id() + ".client." + this.id(); }
@Override public void extend(ApplicationExtensionContext context) throws Exception { File initialDir = new File(context.application().directory(), context.resourceId()); ServiceName privateResourceServiceName = Services.adminResource(context.application().id(), context.resourceId()); FileSystemAdminResourceService privateResourceService = new FileSystemAdminResourceService(context.resourceId(), initialDir); context.target().addService(privateResourceServiceName, privateResourceService) .addDependency(Services.VERTX, Vertx.class, privateResourceService.vertxInjector()) .install(); context.mountPrivate(privateResourceServiceName); FilesystemResourceService publicResource = new FilesystemResourceService(context.resourceId()); context.target().addService(Services.resource(context.application().id(), context.resourceId()), publicResource) .addDependency(Services.VERTX, Vertx.class, publicResource.vertxInjector()) .addDependency(privateResourceServiceName, FileSystemAdminResource.class, publicResource.adminResourceInjector()) .install(); context.mountPublic(Services.resource(context.application().id(), context.resourceId())); }
.filter(value -> value.getApplication().equals(this.application.id())) .forEach(appMap -> appMap.getMappings().forEach(roleRep -> this.applicationRoles.add(roleRep.getName()))); persistConfig(this, ConversionUtils.convert(state), this.parent.baseConfig(this.application.configurationDirectory()));
private void updateScopeMappings(String token) throws Exception { List<RoleRepresentation> rolesList = null; if (this.applicationRoles != null) { rolesList = this.applicationRoles.stream() .map(role -> new RoleRepresentation(role, null)) .collect(Collectors.toList()); } this.parent.securityClient().addClientScopeRolesForApplication(token, LiveOak.LIVEOAK_APP_REALM, this.appKey, this.application.id(), rolesList); }
private void validateId() { long dotCount = this.id().toLowerCase().chars().filter(ch -> ch == '.').count(); if (dotCount > 0) { this.id = this.id().replace("liveoak.", ""); this.id = this.id().replace("client.", ""); this.id = this.id().replace(this.application.id() + ".", ""); } }
private void checkApplicationRoles(String token, boolean bootstrap) throws Exception { List<RoleRepresentation> appRoles = null; try { appRoles = this.parent.securityClient().applicationRoles(token, LiveOak.LIVEOAK_APP_REALM, this.application.id()); } catch (ResourceProcessingException e) { // If we're bootstrapping the application client, it probably won't exist in Keycloak so may throw an error from SecurityClient if (!bootstrap) throw e; } if (this.applicationRoles != null) { for (String role : this.applicationRoles) { boolean roleFound = false; if (appRoles != null) { for (RoleRepresentation appRole : appRoles) { if (appRole.getName().equals(role)) { roleFound = true; break; } } } if (!roleFound) { // Create role in Keycloak this.parent.securityClient().createApplicationRole(token, LiveOak.LIVEOAK_APP_REALM, this.application.id(), role); } } } }
@Override public void extend(ApplicationExtensionContext context) throws Exception { MongoConfigResourceService mongoConfigResourceService = new MongoConfigResourceService(context.resourceId()); context.target().addService(Services.adminResource(context.application().id(), context.resourceId()), mongoConfigResourceService) .addDependency(SYSTEM_MONGO_DATASTORE_CONFIG_SERVICE, MongoDatastoresRegistry.class, mongoConfigResourceService.mongoDatastoreInjector) .install(); RootMongoResourceService rootMongoResourceService = new RootMongoResourceService(context.resourceId()); context.target().addService(Services.resource(context.application().id(), context.resourceId()), rootMongoResourceService) .addDependency(Services.adminResource(context.application().id(), context.resourceId()), RootMongoConfigResource.class, rootMongoResourceService.mongoConfigInjector) .install(); context.mountPrivate(); context.mountPublic(); }
@Override public void extend(ApplicationExtensionContext context) throws Exception { ApplicationClientsResourceService service = new ApplicationClientsResourceService(context.application()); ServiceName serviceName = Services.adminResource(context.application().id(), context.resourceId()); context.target().addService(serviceName, service) .addDependency(Services.SECURITY_CLIENT, SecurityClient.class, service.securityClientInjector()) .addDependency(Services.SECURITY_DIRECT_ACCESS_CLIENT, DirectAccessClient.class, service.directAccessClientInjector()) .install(); context.mountPrivate(serviceName); }
@Override public void mountPublic(RootResource publicResource, MediaType mediaType, boolean makeDefault) { ValueService<RootResource> service = new ValueService<RootResource>(new ImmediateValue<>(publicResource)); this.target.addService(Services.resource(application().id(), resourceId()), service) .install(); mountPublic(Services.resource(application().id(), resourceId()), mediaType, makeDefault); }
@Override public void mountPrivate(RootResource privateResource, MediaType mediaType, boolean makeDefault) { ValueService<RootResource> service = new ValueService<RootResource>(new ImmediateValue<>(privateResource)); this.target.addService(Services.adminResource(application().id(), resourceId()), service) .install(); mountPrivate(Services.adminResource(application().id(), resourceId()), mediaType, makeDefault); }
/** * Creates an InternalStorage service for a particular resource and returns * the ServiceName the resource needs to use for dependency injection. * * @param context The application extension context * @return The ServiceName for the resource to use as a dependency */ public static ServiceName createService(ApplicationExtensionContext context) { return createService(context.target(), context.application().id(), context.resourceId()); }
@Override public void extend(ApplicationExtensionContext context) throws Exception { ServiceName configServiceName = Services.adminResource(context.application().id(), context.resourceId()); MongoConfigResourceService mongoConfigResourceService = new MongoConfigResourceService(context.resourceId()); context.target().addService(configServiceName, mongoConfigResourceService) .addDependency(SYSTEM_MONGO_DATASTORE_CONFIG_SERVICE, MongoDatastoresRegistry.class, mongoConfigResourceService.mongoDatastoreInjector) .install(); context.mountPrivate(); GridFSResourceService publicResource = new GridFSResourceService(context.resourceId()); context.target().addService(Services.resource(context.application().id(), context.resourceId()), publicResource) .addDependency(Services.VERTX, Vertx.class, publicResource.vertxInjector()) .addDependency(TMP_DIR, File.class, publicResource.tmpDirInjector()) .addDependency(configServiceName, RootMongoConfigResource.class, publicResource.configResourceInjector()) .install(); context.mountPublic(Services.resource(context.application().id(), context.resourceId())); }
@Override public void mountPublic() { mountPublic(Services.resource(application().id(), resourceId())); }
@Override public void mountPrivate() { mountPrivate(Services.adminResource(application().id(), resourceId())); }
@Override public void extend(ApplicationExtensionContext context) throws Exception { // install AnalyticsExtensionConfigService which provides extension config root resource (rest endpoint) via getValue() ServiceName configServiceName = Services.adminResource(context.application().id(), context.resourceId()); AnalyticsApplicationConfigService configService = new AnalyticsApplicationConfigService(context.resourceId()); context.target().addService(configServiceName, configService) .addDependency(analyticsServiceName, AnalyticsService.class, configService.analyticsServiceInjector()) .install(); context.mountPrivate(); ServiceName restServiceName = Services.resource(context.application().id(), context.resourceId()); AnalyticsRootService rootResource = new AnalyticsRootService(context.resourceId()); context.target().addService(restServiceName, rootResource) .addDependency(analyticsServiceName, AnalyticsService.class, rootResource.analyticsServiceInjector()) .install(); context.mountPublic(); }
@Override public void extend(ApplicationExtensionContext context) throws Exception { ServiceTarget target = context.target(); Constructor<? extends RootResource> ctor = this.resourceClass.getConstructor(String.class); RootResource resource = ctor.newInstance(context.resourceId()); ServiceName name = Services.resource(context.application().id(), context.resourceId()); target.addService(name, new ValueService<RootResource>(new ImmediateValue<>(resource))) .install(); context.mountPublic(name); context.mountPrivate( new DefaultRootResource( context.resourceId())); }
@Override public void extend(ApplicationExtensionContext context) throws Exception { KeycloakResourceService resource = new KeycloakResourceService(context.resourceId()); context.target().addService(Services.resource(context.application().id(), context.resourceId()), resource) .addDependency(KeycloakServices.address(), KeycloakConfig.class, resource.address()) .install(); context.mountPublic(); context.mountPrivate(new DefaultRootResource(context.resourceId())); }
@Override public void extend(ApplicationExtensionContext context) throws Exception { String appId = context.application().id(); ServiceTarget target = context.target(); AuthzResourceService resource = new AuthzResourceService(context.resourceId()); target.addService(Services.resource(appId, context.resourceId()), resource) .addDependency(Services.CLIENT, Client.class, resource.clientInjector()) .install(); AuthzConfigResourceService configResource = new AuthzConfigResourceService(context.resourceId()); target.addService(Services.adminResource(appId, context.resourceId()), configResource) .addDependency(Services.resource(appId, context.resourceId()), AuthzServiceRootResource.class, configResource.rootResourceInjector()) .install(); context.mountPublic(); context.mountPrivate(); }
@Override public void extend(ApplicationExtensionContext context) throws Exception { String appId = context.application().id(); ServiceTarget target = context.target(); ServiceName name = SchedulerServices.scheduler(appId, context.resourceId()); SchedulerService scheduler = new SchedulerService(appId + "/" + context.resourceId()); target.addService(name, scheduler) .install(); SchedulerResourceService publicResource = new SchedulerResourceService(context.resourceId()); target.addService(Services.resource(appId, context.resourceId()), publicResource) .addDependency(Services.NOTIFIER, Notifier.class, publicResource.notifierInjector()) .addDependency(name, Scheduler.class, publicResource.schedulerInjector()) .install(); context.mountPublic(); SchedulerAdminResourceService privateResource = new SchedulerAdminResourceService(context.resourceId()); target.addService(Services.adminResource(appId, context.resourceId()), privateResource) .addDependency(name, Scheduler.class, privateResource.schedulerInjector()) .install(); context.mountPrivate(); }
@Override public void extend(ApplicationExtensionContext context) throws Exception { String appId = context.application().id(); ServiceTarget target = context.target(); URIPolicy policy = new URIPolicy(); target.addService(URIPolicyServices.policy(appId, context.resourceId()), new ValueService<>(new ImmediateValue<>(policy))) .install(); URIPolicyRootResourceService resource = new URIPolicyRootResourceService(context.resourceId()); target.addService(Services.resource(appId, context.resourceId()), resource) .addDependency(URIPolicyServices.policy(appId, context.resourceId()), URIPolicy.class, resource.policyInjector()) .install(); URIPolicyConfigResourceService configResource = new URIPolicyConfigResourceService(context.resourceId()); target.addService(Services.adminResource(appId, context.resourceId()), configResource) .addDependency(URIPolicyServices.policy(appId, context.resourceId()), URIPolicy.class, configResource.policyInjector()) .install(); context.mountPublic(); context.mountPrivate(); }