Skip to content

Instantly share code, notes, and snippets.

View rbaul's full-sized avatar

Roman Baul rbaul

View GitHub Profile
@rbaul
rbaul / TemplateAnalyzer.java
Created October 26, 2021 07:22
Retrieve all arguments from template string
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.event.EventCartridge;
import java.io.StringWriter;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@rbaul
rbaul / Logs_to_anyway.txt
Last active October 5, 2021 08:43
Specific application logs send to any places
Can be use MDC to add addional information
// ********************** LOG4J appenders ******************************
// JDBC
https://logging.apache.org/log4j/2.x/manual/appenders.html#JDBCAppender
// JPA
https://logging.apache.org/log4j/2.x/manual/appenders.html#JPAAppender
// Kafka
@rbaul
rbaul / ParameterNameDiscovererUsage.java
Created October 4, 2021 19:06
Get parameter name of method
@Bean
public ParameterNameDiscoverer parameterNameDiscoverer() {
return new DefaultParameterNameDiscoverer();
}
...
@Autowired
private ParameterNameDiscoverer parameterNameDiscoverer;
@rbaul
rbaul / VersionScanner.java
Created October 3, 2021 18:39
Bean class scanner with specific annotation on method
@Configuration
public class VersionScanner implements ApplicationContextAware {
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
for (String beanName : applicationContext.getBeanDefinitionNames()) {
Object obj = applicationContext.getBean(beanName);
/*
* As you are using AOP check for AOP proxying. If you are proxying with Spring CGLIB (not via Spring AOP)
* Use org.springframework.cglib.proxy.Proxy#isProxyClass to detect proxy If you are proxying using JDK
@rbaul
rbaul / ReflectionUtil.java
Created October 3, 2021 08:26
Reflection util: work with Type of arguments
public void get(Type type) {
if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type;
Class<?> ownerType = (Class<?>) parameterizedType.getRawType();
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
} else if (type instanceof Class) {
Class<?> type1 = (Class<?>) type;
}
}
@rbaul
rbaul / MainView.java
Created October 6, 2020 09:04
Vaadin PageConfigurator example change icon
public class MainView extends Div implements PageConfigurator {
@Override
public void configurePage(InitialPageSettings settings) {
// HashMap<String, String> attributes = new HashMap<>();
// attributes.put("rel", "shortcut icon");
// attributes.put("type", "image/png");
// settings.addLink("icons/icon.png", attributes);
settings.addFavIcon("icon", "icons/icon.png", "48x48");
}
}
@rbaul
rbaul / gradle.build
Last active August 25, 2020 14:50
Nested project compile in JAR
dependencies {
compileOnly project (':generic-lib') // No Maven
}
jar {
enabled = true
from configurations.compileOnly.findAll { it.name.startsWith('generic-lib') }.collect { zipTree(it) } // Classes files
// from configurations.compileOnly.findAll { it.name.startsWith('generic-lib') }.collect { zipTree(it) } // Jar
// from configurations.compileOnly.findAll { it.name.startsWith('generic-lib')}.collect { zipTree(it).matching {
exclude('META-INF/**')
@rbaul
rbaul / KafkaBaseConfig.java
Created June 3, 2020 08:05
Create KafkaListenerContainer with KafkaProperties
@RequiredArgsConstructor
public class KafkaBaseConfig {
public static final int DEFAULT_CONCURRENCY = 1;
private final KafkaProperties kafkaProperties;
private final ConcurrentKafkaListenerContainerFactoryConfigurer concurrentKafkaListenerContainerFactoryConfigurer;
private Map<String, Object> consumerConfigs(String groupName) {
Map<String, Object> props = new HashMap<>(kafkaProperties.getProperties());
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
props.put(ConsumerConfig.GROUP_ID_CONFIG, groupName);
@rbaul
rbaul / IgnoreExpTimeJwtParser.java
Created May 31, 2020 17:56
JWT Parser with expiration time always valid
import io.jsonwebtoken.impl.DefaultJwtParser;
import java.util.Date;
/**
* JWT Parser with expiration time always valid
*/
public final class IgnoreExpTimeJwtParser extends DefaultJwtParser {
private static final Date MINIMUM_DATE = new Date(Long.MIN_VALUE);
@rbaul
rbaul / angular-code.ts
Last active April 23, 2020 17:50
Angular pass data between pages State. QueryParam and Path
this.router.navigate(['/persons', '1'], {queryParams: data, state: {data: data}});
const paramPath = this.activatedRoute.params.subscribe(params => console.log(params));
const paramsSub = this.activatedRoute.queryParams.subscribe(params => console.log(params));
let subscription = this.activatedRoute.paramMap
.pipe(map(() => window.history.state))
.subscribe((state) => {
const data = state.data;
console.log(data);
});