Skip to content
This repository has been archived by the owner on Jul 29, 2021. It is now read-only.

Commit

Permalink
Merge.1.to.3 (#83)
Browse files Browse the repository at this point in the history
* chore(): Prepare next version

* chore(): Prepare next version

* fix(api): delete memberships and notifications on delete

fix gravitee-io/issues#2711

* release(1.25.5)

* chore(): Prepare next version

* release(1.30.1)

* chore(): Prepare next version

* feat(liquibase): Provide option to enable / disable liquibase at startup

Closes gravitee-io/issues#3170

* release(1.25.6)

* chore(): Prepare next version

* release(1.30.2)

* chore(): Prepare next version

* fix: Some users are wrongly flagged as primary owners

Closes gravitee-io/issues#3273

* fix: Database objects missing when initially starting management api

Closes gravitee-io/issues#3272

* fix: liquibase schema is not correctly indented

* release(1.25.7)

* fix: When updating the view name, the label is not correct on the API's cards

fix gravitee-io/issues#3279

* feat(alert): Add alert history

Closes gravitee-io/issues#3185

* release(1.30.3)

* chore(): Prepare next version

* feat(memberhsip): Manage automatic membership mappings for identity providers

Closes gravitee-io/issues#1698

* fix(memberhsip): Manage automatic membership mappings for identity providers

Closes gravitee-io/issues#1698

* chore(): upgrade parent to fix gpg error

* skip tests for CI issues

* release(1.30.4)

Co-authored-by: Gravitee.io Bot <contact@gravitee.io>
Co-authored-by: David BRASSELY <brasseld@gmail.com>
Co-authored-by: Azize Elamrani <azize.elamrani@gmail.com>
Co-authored-by: Titouan COMPIEGNE <titouan.compiegne@gmail.com>
  • Loading branch information
5 people committed May 6, 2020
1 parent c5a67b1 commit 83a2408
Show file tree
Hide file tree
Showing 16 changed files with 771 additions and 500 deletions.
3 changes: 2 additions & 1 deletion pom.xml
Expand Up @@ -23,7 +23,7 @@
<parent>
<groupId>io.gravitee</groupId>
<artifactId>gravitee-parent</artifactId>
<version>17</version>
<version>17.1</version>
</parent>

<groupId>io.gravitee.repository</groupId>
Expand Down Expand Up @@ -275,6 +275,7 @@
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<systemPropertyVariables>
<jdbcType>${default-database.jdbcType}</jdbcType>
</systemPropertyVariables>
Expand Down
Expand Up @@ -52,6 +52,7 @@ public abstract class AbstractJdbcRepositoryConfiguration implements Application
private static final int DEFAULT_MIN_IDLE = 10;
private static final int DEFAULT_MAX_POOL_SIZE = 10;
private static final boolean DEFAULT_REGISTER_MBEANS = true;
private static final boolean LIQUIBASE_ENABLED = true;

@Autowired
private Environment env;
Expand Down Expand Up @@ -106,7 +107,12 @@ private synchronized DataSource graviteeDataSource() {
dsConfig.setRegisterMbeans(readPropertyValue("jdbc.pool.registerMbeans", Boolean.class, DEFAULT_REGISTER_MBEANS));

final DataSource dataSource = new HikariDataSource(dsConfig);
runLiquibase(dataSource);

Boolean liquibase = readPropertyValue("jdbc.liquibase", Boolean.class, LIQUIBASE_ENABLED);
if (liquibase) {
runLiquibase(dataSource);
}

return dataSource;
}

Expand Down
Expand Up @@ -44,8 +44,8 @@ Page<T> getResultAsPage(final Pageable page, final List<T> items) {
if (start + rows > items.size()) {
rows = items.size() - start;
}
return new Page(items.subList(start, start + rows), start / page.pageSize(), rows, items.size());
return new Page<>(items.subList(start, start + rows), start / page.pageSize(), rows, items.size());
}
return new Page(items, 0, items.size(), items.size());
return new Page<>(items, 0, items.size(), items.size());
}
}
@@ -0,0 +1,130 @@
/**
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
*
* 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 io.gravitee.repository.jdbc.management;

import io.gravitee.common.data.domain.Page;
import io.gravitee.repository.jdbc.orm.JdbcObjectMapper;
import io.gravitee.repository.management.api.AlertEventRepository;
import io.gravitee.repository.management.api.search.AlertEventCriteria;
import io.gravitee.repository.management.api.search.Pageable;
import io.gravitee.repository.management.model.AlertEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Timestamp;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static io.gravitee.repository.jdbc.management.JdbcHelper.AND_CLAUSE;
import static io.gravitee.repository.jdbc.management.JdbcHelper.WHERE_CLAUSE;

/**
* @author David BRASSELY (david.brassely at graviteesource.com)
* @author GraviteeSource Team
*/
@Repository
public class JdbcAlertEventRepository extends JdbcAbstractCrudRepository<AlertEvent, String> implements AlertEventRepository {

private final Logger LOGGER = LoggerFactory.getLogger(JdbcAlertEventRepository.class);

private static final JdbcObjectMapper<AlertEvent> ORM = JdbcObjectMapper.builder(AlertEvent.class, "alert_events", "id")
.addColumn("id", Types.NVARCHAR, String.class)
.addColumn("alert", Types.NVARCHAR, String.class)
.addColumn("message", Types.NVARCHAR, String.class)
.addColumn("created_at", Types.TIMESTAMP, Date.class)
.addColumn("updated_at", Types.TIMESTAMP, Date.class)
.build();

@Override
protected JdbcObjectMapper getOrm() {
return ORM;
}

@Override
protected String getId(final AlertEvent event) {
return event.getId();
}

@Override
public Page<AlertEvent> search(AlertEventCriteria criteria, Pageable pageable) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("JdbcAlertEventRepository.search({})", criteriaToString(criteria));
}

final List<Object> args = new ArrayList<>();
final StringBuilder builder = new StringBuilder("select ev.* from alert_events ev ");

boolean started = false;
if (criteria.getFrom() > 0) {
builder.append(WHERE_CLAUSE);
builder.append("created_at >= ?");
args.add(new Date(criteria.getFrom()));
started = true;
}
if (criteria.getTo() > 0) {
builder.append(started ? AND_CLAUSE : WHERE_CLAUSE);
builder.append("created_at < ?");
args.add(new Date(criteria.getTo()));
started = true;
}

if (criteria.getAlert() != null && ! criteria.getAlert().isEmpty()) {
builder.append(started ? AND_CLAUSE : WHERE_CLAUSE);
builder.append("alert = ?");
args.add(criteria.getAlert());
}

builder.append(" order by created_at desc ");
String sql = builder.toString();
LOGGER.debug("SQL: {}", sql);
LOGGER.debug("Args: {}", args);

List<AlertEvent> events = jdbcTemplate.query((Connection cnctn) -> {
PreparedStatement stmt = cnctn.prepareStatement(sql);
int idx = 1;
for (final Object arg : args) {
if (arg instanceof Date) {
final Date date = (Date) arg;
stmt.setTimestamp(idx++, new Timestamp(date.getTime()));
} else {
stmt.setObject(idx++, arg);
}
}
return stmt;
}, ORM.getRowMapper());

LOGGER.debug("Alert events found: {}", events);

return getResultAsPage(pageable, events);
}

@Override
public void deleteAll(String alertId) {
jdbcTemplate.update("delete from alert_events where alert = ?", alertId);
}

private String criteriaToString(AlertEventCriteria criteria) {
return "{ " + "from: " + criteria.getFrom() +
", " + "alert: " + criteria.getAlert() +
", " + "to: " + criteria.getTo() +
" }";
}
}
Expand Up @@ -79,6 +79,7 @@ public class JdbcIdentityProviderRepository implements IdentityProviderRepositor
.addColumn("type", Types.NVARCHAR, IdentityProviderType.class)
.addColumn("enabled", Types.BOOLEAN, boolean.class)
.addColumn("email_required", Types.BOOLEAN, Boolean.class)
.addColumn("sync_mappings", Types.BOOLEAN, Boolean.class)
.addColumn("created_at", Types.TIMESTAMP, Date.class)
.addColumn("updated_at", Types.TIMESTAMP, Date.class)
.build();
Expand Down

0 comments on commit 83a2408

Please sign in to comment.