public void validate() throws Exception { getContainer().validate(this); getProvider().validate(this); } }
public boolean hasNonDefaultDatabase() { return !DatabaseType.DEFAULT.equals(getDatabase()); }
private JPADataSource applyUIValues(final UIContext context) { Map<Object, Object> attributeMap = context.getAttributeMap(); final Project project = helper.getProject(context); helper.installJPAFacet(project); final SpringBootPersistenceContainer container = new SpringBootPersistenceContainer(); attributeMap.put(PersistenceContainer.class, container); final PersistenceProvider provider = jpaProvider.getValue(); attributeMap.put(PersistenceProvider.class, provider); final DatabaseType database = dbType.getValue(); attributeMap.put(DatabaseType.class, database); final JPADataSource dataSource = new JPADataSource(); dataSource.setDatabase(database); dataSource.setContainer(container); dataSource.setProvider(provider); dataSource.setJndiDataSource(dataSourceName.getValue()); dataSource.setDatabaseURL(databaseURL.getValue()); attributeMap.put(JPADataSource.class, dataSource); return dataSource; }
@SuppressWarnings({ "rawtypes", "unchecked" }) private MetaModelProvider lookupProvider() { PersistenceCommonDescriptor config = (PersistenceCommonDescriptor) getFaceted().getFacet(JPAFacet.class) .getConfig(); List<PersistenceUnitCommon> allPersistenceUnit = config.getAllPersistenceUnit(); String providerName = allPersistenceUnit.size() > 0 ? allPersistenceUnit.get(0) .getProvider() : null; Imported<PersistenceProvider> services = SimpleContainer.getServices(getClass().getClassLoader(), PersistenceProvider.class); for (PersistenceProvider candidate : services) { try { if (Strings.compare(candidate.getProvider(), providerName)) { return candidate.getMetaModelProvider(); } } finally { services.release(candidate); } } // return Hibernate return services.get().getMetaModelProvider(); }
@Override public PersistenceUnitCommon setupConnection(PersistenceUnitCommon unit, JPADataSource dataSource) { unit.transactionType("JTA"); if (dataSource.getDatabase() == null) { dataSource.setDatabase(DatabaseType.H2); } return unit; }
@Override public void validate(JPADataSource dataSource) throws Exception { if (isNotEmbeddedDB(dataSource.getDatabase()) && Strings.isNullOrEmpty(dataSource.getDatabaseURL())) { throw new RuntimeException("Must specify database URL for JDBC connections."); } }
@Override public Result execute(UIExecutionContext context) throws Exception { final UIContext uiContext = context.getUIContext(); final Project project = helper.getProject(uiContext); final Map<Object, Object> attributeMap = uiContext.getAttributeMap(); final JPADataSource dataSource = (JPADataSource) attributeMap.get(JPADataSource.class); persistenceOperations.setup(SpringBootJPAFacet.PERSISTENCE_UNIT_NAME, project, dataSource, false); // if we're using H2, Derby or HSQL embedded databases, we need to remove any previously set data // source properties if (!SpringBootPersistenceContainer.isNotEmbeddedDB(dataSource.getDatabase())) { SpringBootHelper.removeSpringDataPropertiesFromApplication(project); } return null; } }
private List<String> getVersionsFor(DatabaseType type) { if (type == null) { return Collections.emptyList(); } else { return dependencyResolver .resolveVersions(DependencyQueryBuilder.create(type.getDriverCoordinate())) .stream().map(Coordinate::getVersion).collect(Collectors.toList()); } }
@Override protected void updateDataSource(JPADataSource dataSource) { dataSource.setUsername(username.getValue()).setPassword(password.getValue()); }
@Override protected void setProperties(Properties properties, JPADataSource dataSource) { properties.put(SpringBootJPAFacet.SPRING_DATASOURCE_PROPERTIES_PREFIX + "jndi-name", dataSource.getJndiDataSource()); } }
@Override public String getProcessor() { return getMetaModelProvider().getProcessor(); }
@Override public String getCompilerArgs() { return getMetaModelProvider().getCompilerArguments(); }
@Override public Coordinate getProcessorCoordinate() { return getMetaModelProvider().getAptCoordinate(); }
public static List<DatabaseType> getTypesWithDriverSet() { return Arrays.asList(DatabaseType.values()) .stream() .filter(DatabaseType::isDriverCoordinateSet) .collect(Collectors.toList()); } }
@Override protected void setProperties(Properties properties, JPADataSource dataSource) { properties.put(SpringBootJPAFacet.SPRING_DATASOURCE_PROPERTIES_PREFIX + "url", dataSource.getDatabaseURL()); properties.put(SpringBootJPAFacet.SPRING_DATASOURCE_PROPERTIES_PREFIX + "username", username.getValue()); properties.put(SpringBootJPAFacet.SPRING_DATASOURCE_PROPERTIES_PREFIX + "password", password.getValue()); } }
private void initProviders() { jpaProvider.setItemLabelConverter(PersistenceProvider::getName); // select Hibernate provider as the default one final PersistenceProvider hibernate = StreamSupport.stream(jpaProvider.getValueChoices().spliterator(), false) .filter(provider -> provider.getName().toLowerCase().contains("hibernate")) .findFirst() .orElseThrow(() -> new IllegalStateException("Hibernate Persistence Provider is not available")); jpaProvider.setDefaultValue(hibernate); }
private void addPluginRepository(MetaModelProvider provider) { DependencyRepository repository = provider.getAptPluginRepository(); if (repository != null) { MavenPluginFacet pluginFacet = getFaceted().getFacet(MavenPluginFacet.class); pluginFacet.addPluginRepository(repository.getId(), repository.getUrl()); } }
@Override public void validate(UIValidationContext validator) { final DatabaseType database = dbType.getValue(); final DatabaseDriver driver = DatabaseDriver.fromProductName(database.name()); if (driver.equals(DatabaseDriver.UNKNOWN)) { // Spring Boot doesn't know about this DB validator.addValidationError(dbType, "Spring Boot doesn't know about DB '" + dbType.getName() + "'"); } if (isNotEmbeddedDB(database) && !databaseURL.hasValue() && !dataSourceName.hasValue()) { validator.addValidationError(dataSourceName, "Either DataSource name or database URL is required"); validator.addValidationError(databaseURL, "Either DataSource name or database URL is required"); } }
@Override public Result execute(final UIExecutionContext context) throws Exception { final UIContext uiContext = context.getUIContext(); applyUIValues(uiContext); // add driver dependency final Project project = helper.getProject(uiContext); final DatabaseType database = dbType.getValue(); final Coordinate driverCoordinate = database.getDriverCoordinate(); SpringBootHelper.addDependency(project, driverCoordinate.getGroupId(), driverCoordinate.getArtifactId()) .setScopeType("runtime"); SpringBootHelper.addSpringBootDependency(project, SpringBootFacet.SPRING_BOOT_STARTER_DATA_JPA_ARTIFACT) .setScopeType("runtime"); return Results.success("Spring Boot JPA successfully set up!"); }