diff options
Diffstat (limited to 'src/main/java/com/android/vts/config/ObjectifyListener.java')
-rw-r--r-- | src/main/java/com/android/vts/config/ObjectifyListener.java | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/src/main/java/com/android/vts/config/ObjectifyListener.java b/src/main/java/com/android/vts/config/ObjectifyListener.java deleted file mode 100644 index 02e0215..0000000 --- a/src/main/java/com/android/vts/config/ObjectifyListener.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you - * may not use this file except in compliance with the License. You may - * obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.android.vts.config; - -import com.android.vts.entity.ApiCoverageEntity; -import com.android.vts.entity.BranchEntity; -import com.android.vts.entity.BuildTargetEntity; -import com.android.vts.entity.ApiCoverageExcludedEntity; -import com.android.vts.entity.CodeCoverageEntity; -import com.android.vts.entity.CoverageEntity; -import com.android.vts.entity.DeviceInfoEntity; -import com.android.vts.entity.HalApiEntity; -import com.android.vts.entity.ProfilingPointEntity; -import com.android.vts.entity.ProfilingPointRunEntity; -import com.android.vts.entity.ProfilingPointSummaryEntity; -import com.android.vts.entity.RoleEntity; -import com.android.vts.entity.TestAcknowledgmentEntity; -import com.android.vts.entity.TestCaseRunEntity; -import com.android.vts.entity.TestCoverageStatusEntity; -import com.android.vts.entity.TestEntity; -import com.android.vts.entity.TestPlanEntity; -import com.android.vts.entity.TestPlanRunEntity; -import com.android.vts.entity.TestRunEntity; -import com.android.vts.entity.TestStatusEntity; -import com.android.vts.entity.TestSuiteFileEntity; -import com.android.vts.entity.TestSuiteResultEntity; -import com.android.vts.entity.UserEntity; -import com.google.api.client.extensions.appengine.datastore.AppEngineDataStoreFactory; -import com.google.api.services.sheets.v4.SheetsScopes; -import com.googlecode.objectify.ObjectifyService; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.function.Supplier; -import java.util.stream.Stream; -import javax.servlet.ServletContext; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.servlet.annotation.WebListener; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** The @WebListener annotation for registering a class as a listener of a web application. */ -@WebListener -/** - * Initializing Objectify Service at the container start up before any web components like servlet - * get initialized. - */ -public class ObjectifyListener implements ServletContextListener { - - private static final Logger logger = Logger.getLogger(ObjectifyListener.class.getName()); - - - /** Global instance of the DataStoreFactory. */ - private static final AppEngineDataStoreFactory DATA_STORE_FACTORY = - AppEngineDataStoreFactory.getDefaultInstance(); - - /** Global instance of the scopes. */ - private static final List<String> GOOGLE_API_SCOPES = - Collections.singletonList(SheetsScopes.SPREADSHEETS_READONLY); - - /** - * Receives notification that the web application initialization process is starting. This - * function will register Entity classes for objectify. - */ - @Override - public void contextInitialized(ServletContextEvent servletContextEvent) { - ObjectifyService.init(); - ObjectifyService.register(BranchEntity.class); - ObjectifyService.register(BuildTargetEntity.class); - - ObjectifyService.register(HalApiEntity.class); - ObjectifyService.register(ApiCoverageEntity.class); - ObjectifyService.register(ApiCoverageExcludedEntity.class); - ObjectifyService.register(CodeCoverageEntity.class); - ObjectifyService.register(CoverageEntity.class); - ObjectifyService.register(DeviceInfoEntity.class); - ObjectifyService.register(TestCoverageStatusEntity.class); - - ObjectifyService.register(ProfilingPointEntity.class); - ObjectifyService.register(ProfilingPointRunEntity.class); - ObjectifyService.register(ProfilingPointSummaryEntity.class); - - ObjectifyService.register(TestEntity.class); - ObjectifyService.register(TestPlanEntity.class); - ObjectifyService.register(TestPlanRunEntity.class); - ObjectifyService.register(TestRunEntity.class); - ObjectifyService.register(TestCaseRunEntity.class); - ObjectifyService.register(TestStatusEntity.class); - ObjectifyService.register(TestSuiteFileEntity.class); - ObjectifyService.register(TestSuiteResultEntity.class); - ObjectifyService.register(TestAcknowledgmentEntity.class); - ObjectifyService.register(RoleEntity.class); - ObjectifyService.register(UserEntity.class); - ObjectifyService.begin(); - logger.log(Level.INFO, "Value Initialized from context."); - - Properties systemConfigProp = new Properties(); - - try { - InputStream defaultInputStream = - ObjectifyListener.class - .getClassLoader() - .getResourceAsStream("config.properties"); - - systemConfigProp.load(defaultInputStream); - - servletContextEvent - .getServletContext() - .setAttribute("systemConfigProp", systemConfigProp); - servletContextEvent - .getServletContext() - .setAttribute("dataStoreFactory", DATA_STORE_FACTORY); - servletContextEvent - .getServletContext() - .setAttribute("googleApiScopes", GOOGLE_API_SCOPES); - - String roleList = systemConfigProp.getProperty("user.roleList"); - Supplier<Stream<String>> streamSupplier = () -> Arrays.stream(roleList.split(",")); - this.createRoles(streamSupplier.get()); - - String adminEmail = systemConfigProp.getProperty("user.adminEmail"); - if (adminEmail.isEmpty()) { - logger.log(Level.WARNING, "Admin email is not properly set. Check config file"); - } else { - String adminName = systemConfigProp.getProperty("user.adminName"); - String adminCompany = systemConfigProp.getProperty("user.adminCompany"); - Optional<String> roleName = - streamSupplier.get().filter(r -> r.equals("admin")).findFirst(); - this.createAdminUser(adminEmail, adminName, adminCompany, roleName.orElse("admin")); - } - } catch (FileNotFoundException e) { - logger.log(Level.SEVERE, e.getMessage()); - } catch (IOException e) { - logger.log(Level.SEVERE, e.getMessage()); - } - } - - /** Receives notification that the ServletContext is about to be shut down. */ - @Override - public void contextDestroyed(ServletContextEvent servletContextEvent) { - ServletContext servletContext = servletContextEvent.getServletContext(); - logger.log(Level.INFO, "Value deleted from context."); - } - - private void createRoles(Stream<String> roleStream) { - roleStream - .map(role -> role.trim()) - .forEach( - roleName -> { - RoleEntity roleEntity = new RoleEntity(roleName); - roleEntity.save(); - }); - } - - private void createAdminUser(String email, String name, String company, String role) { - Optional<UserEntity> adminUserEntityOptional = - Optional.ofNullable(UserEntity.getAdminUser(email)); - if (adminUserEntityOptional.isPresent()) { - logger.log(Level.INFO, "The user is already registered."); - } else { - UserEntity userEntity = new UserEntity(email, name, company, role); - userEntity.setIsAdmin(true); - userEntity.save(); - logger.log(Level.INFO, "The user is saved successfully."); - } - } -} |