Skip to content

Commit

Permalink
Add rabbitmq test
Browse files Browse the repository at this point in the history
  • Loading branch information
agentgt committed Jan 5, 2024
1 parent cd16704 commit 279b414
Show file tree
Hide file tree
Showing 25 changed files with 499 additions and 110 deletions.
22 changes: 20 additions & 2 deletions core/src/main/java/io/jstach/rainbowgum/ConfigObject.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@

/**
* Name of builder.
* @return name of builder.
* @return name of builder by default if not set Builder will be suffixed to
* targetType.
*/
String name();
String name() default "";

/**
* Property prefix.
Expand All @@ -43,4 +44,21 @@

}

/**
* Use to set static defaults to parameters.
*/
@Retention(CLASS)
@Target({ ElementType.PARAMETER })
@Documented
public @interface DefaultParameter {

/**
* Use as parameter to prefix property names.
* @return by default will use the static field
* <code>DEFAULT_parameterName</code>.
*/
String value() default "";

}

}
19 changes: 18 additions & 1 deletion core/src/main/java/io/jstach/rainbowgum/LogAppender.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*
* The only exception is if an Appender implements {@link ThreadSafeLogAppender}.
*/
public interface LogAppender extends AutoCloseable, LogEventConsumer {
public interface LogAppender extends LogLifecycle, LogEventConsumer {

/**
* Batch of events. <strong>DO NOT MODIFY THE ARRAY</strong>. Do not use the
Expand Down Expand Up @@ -221,6 +221,11 @@ protected void append(LogEvent[] events, int count, Buffer buffer) {

protected abstract void append(LogEvent event, Buffer buffer);

@Override
public void start(LogConfig config) {
output.start(config);
}

@Override
public void close() {
output.close();
Expand Down Expand Up @@ -252,6 +257,13 @@ public void close() {
}
}

@Override
public void start(LogConfig config) {
for (var appender : appenders) {
appender.start(config);
}
}

}

class LockingLogAppender implements ThreadSafeLogAppender {
Expand Down Expand Up @@ -288,6 +300,11 @@ public void append(LogEvent event) {

}

@Override
public void start(LogConfig config) {
appender.start(config);
}

@Override
public void close() {
appender.close();
Expand Down
63 changes: 63 additions & 0 deletions core/src/main/java/io/jstach/rainbowgum/LogConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Consumer;

import org.eclipse.jdt.annotation.Nullable;

import io.jstach.rainbowgum.LevelResolver.LevelConfig;
import io.jstach.rainbowgum.LogConfig.ChangePublisher;
import io.jstach.rainbowgum.LogProperties.Property;
Expand Down Expand Up @@ -81,6 +83,14 @@ public static LogConfig of(ServiceRegistry registry, LogProperties properties) {
return new DefaultLogConfig(registry, properties);
}

/**
* Creates a builder for making LogConfig.
* @return builder.
*/
public static Builder builder() {
return new Builder();
}

/**
* An event publisher to publish configuration changes.
* @return publisher.
Expand Down Expand Up @@ -119,6 +129,59 @@ interface ChangePublisher {

}

/**
* Builder for LogConfig.
*/
public static final class Builder {

private @Nullable ServiceRegistry serviceRegistry;

private @Nullable LogProperties logProperties;

/**
* Default constructor
*/
private Builder() {
}

/**
* Sets log properties
* @param logProperties log properties.
* @return this.
*/
public Builder logProperties(LogProperties logProperties) {
this.logProperties = logProperties;
return this;
}

/**
* Sets service registry
* @param serviceRegistry service registry.
* @return this.
*/
public Builder serviceRegistry(ServiceRegistry serviceRegistry) {
this.serviceRegistry = serviceRegistry;
return this;
}

/**
* Builds LogConfig using defaults on missing properties.
* @return log config
*/
public LogConfig build() {
ServiceRegistry serviceRegistry = this.serviceRegistry;
LogProperties logProperties = this.logProperties;
if (serviceRegistry == null) {
serviceRegistry = ServiceRegistry.of();
}
if (logProperties == null) {
logProperties = LogProperties.StandardProperties.SYSTEM_PROPERTIES;
}
return LogConfig.of(serviceRegistry, logProperties);
}

}

}

abstract class AbstractChangePublisher implements ChangePublisher {
Expand Down
10 changes: 5 additions & 5 deletions core/src/main/java/io/jstach/rainbowgum/LogPublisher.java
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,6 @@ public static SyncLogPublisher.Builder builder() {
return new Builder();
}

@Override
default void start(LogConfig config) {

}

default boolean synchronous() {
return true;
}
Expand Down Expand Up @@ -195,6 +190,11 @@ public void log(LogEvent event) {
appender.append(event);
}

@Override
public void start(LogConfig config) {
appender.start(config);
}

@Override
public void close() {
appender.close();
Expand Down
4 changes: 4 additions & 0 deletions core/src/main/java/io/jstach/rainbowgum/LogRouter.java
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,10 @@ public void append(LogEvent event) {
public void close() {
}

@Override
public void start(LogConfig config) {
}

}

enum GlobalLogRouter implements InternalRootRouter, Route {
Expand Down
10 changes: 9 additions & 1 deletion core/src/main/java/io/jstach/rainbowgum/RainbowGum.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
* <p>
* To register a custom RainbowGum:
*
*
*
{@snippet class="snippets.RainbowGumProviderExample" region="provider" :
class RainbowGumProviderExample implements RainbowGumProvider {
Expand Down Expand Up @@ -208,6 +208,10 @@ static RainbowGum get() {
finally {
lock.readLock().unlock();
}
if (lock.writeLock().isHeldByCurrentThread()) {
throw new IllegalStateException("RainbowGum component tried to log too early. "
+ "This is usually caused by dependencies calling logging.");
}
lock.writeLock().lock();
try {
var r = rainbowGum;
Expand All @@ -228,6 +232,10 @@ static RainbowGum get() {

static void set(Supplier<RainbowGum> rainbowGumSupplier) {
Objects.requireNonNull(rainbowGumSupplier);
if (lock.writeLock().isHeldByCurrentThread()) {
throw new IllegalStateException("RainbowGum component tried to log too early. "
+ "This is usually caused by dependencies calling logging.");
}
lock.writeLock().lock();
try {
rainbowGum = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import io.jstach.rainbowgum.LogAppender;
import io.jstach.rainbowgum.LogAppender.AbstractLogAppender;
import io.jstach.rainbowgum.LogAppender.ThreadSafeLogAppender;
import io.jstach.rainbowgum.LogConfig;
import io.jstach.rainbowgum.LogEncoder;
import io.jstach.rainbowgum.LogEncoder.Buffer;
import io.jstach.rainbowgum.LogEvent;
Expand Down Expand Up @@ -60,6 +61,11 @@ public synchronized void append(LogEvent event) {
appender.append(event);
}

@Override
public void start(LogConfig config) {
appender.start(config);
}

@Override
public void close() {
appender.close();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,13 @@ private static LogConfig provideConfig(ServiceLoader<RainbowGumServiceProvider>
.orElseGet(() -> LogConfig.of(registry, properties));
}

private static void runInitializers(ServiceLoader<RainbowGumServiceProvider> loader, ServiceRegistry registry,
LogConfig config) {
findProviders(loader, Initializer.class).forEach(c -> c.initialize(registry, config));
/**
* Runs initializers based on config.
* @param loader service loader to use.
* @param config config before initializers have run.
*/
public static void runInitializers(ServiceLoader<RainbowGumServiceProvider> loader, LogConfig config) {
findProviders(loader, Initializer.class).forEach(c -> c.initialize(config.registry(), config));
}

/**
Expand All @@ -132,7 +136,7 @@ public static LogConfig provideConfig(ServiceLoader<RainbowGumServiceProvider> l
ServiceRegistry registry = ServiceRegistry.of();
var properties = provideProperties(registry, loader);
var config = provideConfig(loader, registry, properties);
runInitializers(loader, registry, config);
runInitializers(loader, config);
return config;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,19 @@
import io.jstach.rainbowgum.LogPublisher.SyncLogPublisher;

/**
*
*
*/
public class TestSyncPublisher implements SyncLogPublisher {

/**
*
*
*/
public Deque<LogEvent> events = new LinkedList<>();

@Override
public void start(LogConfig config) {
}

@Override
public void close() {
}
Expand Down
7 changes: 6 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,15 @@
<artifactId>rainbowgum-avaje-config</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>rainbowgum-config-apt</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>rainbowgum-rabbitmq</artifactId>
<version>${project.version}</version>
</dependency>
<!-- to make dependabot check for latest maven version -->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,13 @@ public String convertMethod() {
};
}

boolean isLiteralType() {
return switch (type) {
case INTEGER_TYPE, STRING_TYPE, BOOLEAN_TYPE -> true;
default -> false;
};
}

public String valueMethod() {
return required ? "value" : "valueOrNull";
}
Expand All @@ -82,6 +89,27 @@ public boolean isNormal() {
public boolean isPrefixParameter() {
return kind == PropertyKind.NAME_PARAMETER;
}

public String defaultValueDoc() {
if (defaultValue.equals("null")) {
return "<code>null</code>";
}
String link = linkStatic(defaultValue);
if (isLiteralType()) {
return "{@value " + link + " }";
}
return "{@link " + link + " }";
}

private static String linkStatic(String constant) {
int index = constant.lastIndexOf(".");
if (index < 0) {
return constant;
}
StringBuilder sb = new StringBuilder(constant);
sb.setCharAt(index, '#');
return sb.toString();
}
}

enum PropertyKind {
Expand Down
Loading

0 comments on commit 279b414

Please sign in to comment.