Skip to content

Commit 06385b3

Browse files
committed
refactor(filesystems): add module filepulse-commons-fs
This commit relocates some classes
1 parent e222414 commit 06385b3

File tree

72 files changed

+2277
-1639
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+2277
-1639
lines changed

checkstyle/suppressions.xml

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,10 @@
4141
*/
4242
-->
4343
<suppress checks="LineLength" files="RecordFilter.java"/>
44-
<suppress checks="LineLength" files="CommonFilterConfig.java"/>
45-
<suppress checks="LineLength" files="DelimitedRowFilterConfig.java"/>
46-
<suppress checks="LineLength" files="GroupRowFilterConfig.java"/>
4744
<suppress checks="LineLength" files="GrokPatternCompiler.java"/>
48-
<suppress checks="LineLength" files="ConvertFilterConfig.java"/>
49-
<suppress checks="LineLength" files="RenameFilterConfig.java"/>
50-
<suppress checks="LineLength" files="GrokFilterConfig.java"/>
51-
<suppress checks="LineLength" files="SplitFilterConfig.java"/>
52-
<suppress checks="LineLength" files="RowFileInputReaderConfig.java"/>
53-
<suppress checks="LineLength" files="ConnectorConfig.java"/>
54-
<suppress checks="LineLength" files="TaskConfig.java"/>
55-
<suppress checks="LineLength" files="CommonConfig.java"/>
5645
<suppress checks="LineLength" files="DefaultFileSystemScanner.java"/>
5746
<suppress checks="LineLength" files="ComposeOffsetStrategy.java"/>
58-
<suppress checks="LineLength" files="DefaultOffsetPolicyConfig.java"/>
47+
<suppress checks="LineLength" files=".*Config.java"/>
5948
<!-- Those classes are copy from kafka-connect api-->
6049
<suppress checks="LineLength" files="KafkaBasedLog.java"/>
6150
<suppress checks="NPathComplexity" files="KafkaBasedLog.java"/>

config/connect-file-pulse-quickstart-avro.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
"config": {
33
"connector.class": "io.streamthoughts.kafka.connect.filepulse.source.FilePulseSourceConnector",
44
"fs.cleanup.policy.class": "io.streamthoughts.kafka.connect.filepulse.clean.LogCleanupPolicy",
5-
"fs.listing.class": "io.streamthoughts.kafka.connect.filepulse.fs.local.LocalFSDirectoryListing",
6-
"fs.scan.directory.path": "/tmp/kafka-connect/examples/",
5+
"fs.listing.class" : "io.streamthoughts.kafka.connect.filepulse.fs.LocalFSDirectoryListing",
6+
"fs.listing.directory.path":"/tmp/kafka-connect/examples/",
77
"fs.scan.interval.ms": "10000",
88
"internal.kafka.reporter.bootstrap.servers": "broker:29092",
99
"internal.kafka.reporter.topic": "connect-file-pulse-status",
1010
"offset.strategy": "name",
1111
"read.max.wait.ms": "5000",
12-
"task.reader.class": "io.streamthoughts.kafka.connect.filepulse.fs.local.reader.AvroFileInputReader",
12+
"task.reader.class": "io.streamthoughts.kafka.connect.filepulse.fs.reader.LocalAvroFileInputReader",
1313
"topic": "connect-file-pulse-quickstart-avro",
1414
"tasks.max": 1
1515
},

config/connect-file-pulse-quickstart-csv.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
"filters.ParseDelimitedRow.trimColumn": "true",
1010
"filters.ParseDelimitedRow.type": "io.streamthoughts.kafka.connect.filepulse.filter.DelimitedRowFilter",
1111
"fs.cleanup.policy.class": "io.streamthoughts.kafka.connect.filepulse.clean.LogCleanupPolicy",
12-
"fs.listing.class": "io.streamthoughts.kafka.connect.filepulse.fs.local.LocalFSDirectoryListing",
13-
"fs.scan.directory.path": "/tmp/kafka-connect/examples/",
12+
"fs.listing.class" : "io.streamthoughts.kafka.connect.filepulse.fs.LocalFSDirectoryListing",
13+
"fs.listing.directory.path":"/tmp/kafka-connect/examples/",
14+
"fs.listing.filters":"io.streamthoughts.kafka.connect.filepulse.fs.filter.RegexFileListFilter",
15+
"file.filter.regex.pattern":".*\\.csv$",
1416
"fs.scan.interval.ms": "10000",
1517
"internal.kafka.reporter.bootstrap.servers": "broker:29092",
1618
"internal.kafka.reporter.topic": "connect-file-pulse-status",

config/connect-file-pulse-quickstart-log4j.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,16 @@
1111
"filters.ParseLog4jLog.type": "io.streamthoughts.kafka.connect.filepulse.filter.GrokFilter",
1212
"filters.ParseLog4jLog.ignoreFailure": "true",
1313
"fs.cleanup.policy.class": "io.streamthoughts.kafka.connect.filepulse.clean.LogCleanupPolicy",
14-
"fs.listing.class": "io.streamthoughts.kafka.connect.filepulse.fs.local.LocalFSDirectoryListing",
15-
"fs.scan.directory.path": "/var/log/kafka/",
14+
"fs.listing.class" : "io.streamthoughts.kafka.connect.filepulse.fs.LocalFSDirectoryListing",
15+
"fs.listing.directory.path":"/tmp/kafka-connect/examples/",
16+
"fs.listing.filters":"io.streamthoughts.kafka.connect.filepulse.fs.filter.RegexFileListFilter",
17+
"file.filter.regex.pattern":".*\\.log$",
1618
"fs.scan.interval.ms": "10000",
1719
"internal.kafka.reporter.bootstrap.servers": "broker:29092",
1820
"internal.kafka.reporter.topic": "connect-file-pulse-status",
1921
"offset.strategy": "name",
2022
"read.max.wait.ms": "5000",
21-
"task.reader.class": "io.streamthoughts.kafka.connect.filepulse.fs.local.reader.RowFileInputReader",
23+
"task.reader.class": "io.streamthoughts.kafka.connect.filepulse.fs.reader.LocalRowFileInputReader",
2224
"topic": "connect-file-pulse-quickstart-log4j",
2325
"tasks.max": 1
2426
},

connect-file-pulse-api/src/main/java/io/streamthoughts/kafka/connect/filepulse/internal/StringUtils.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package io.streamthoughts.kafka.connect.filepulse.internal;
2020

21+
import java.util.Objects;
22+
2123
public class StringUtils {
2224

2325
/**
@@ -35,4 +37,8 @@ public static boolean isFastSplit(final String regex) {
3537
(ch < Character.MIN_HIGH_SURROGATE ||
3638
ch > Character.MAX_LOW_SURROGATE);
3739
}
40+
41+
public static boolean isNotBlank(final String string) {
42+
return !(Objects.isNull(string) || string.isBlank());
43+
}
3844
}
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2019-2020 StreamThoughts.
2+
* Copyright 2019-2021 StreamThoughts.
33
*
44
* Licensed to the Apache Software Foundation (ASF) under one or more
55
* contributor license agreements. See the NOTICE file distributed with
@@ -16,9 +16,8 @@
1616
* See the License for the specific language governing permissions and
1717
* limitations under the License.
1818
*/
19-
package io.streamthoughts.kafka.connect.filepulse.fs.local.reader;
19+
package io.streamthoughts.kafka.connect.filepulse.reader;
2020

21-
import io.streamthoughts.kafka.connect.filepulse.reader.FileInputIterator;
2221
import io.streamthoughts.kafka.connect.filepulse.source.FileContext;
2322
import io.streamthoughts.kafka.connect.filepulse.source.FileRecord;
2423

@@ -47,13 +46,14 @@ public abstract class AbstractFileInputIterator<T> implements FileInputIterator<
4746
*/
4847
public AbstractFileInputIterator(final IteratorManager iteratorManager,
4948
final FileContext context) {
50-
Objects.requireNonNull(iteratorManager, "iteratorManager can't be null");
51-
Objects.requireNonNull(context, "context can't be null");
52-
this.iteratorManager = iteratorManager;
53-
this.context = context;
49+
this.iteratorManager = Objects.requireNonNull(iteratorManager, "iteratorManager can't be null");
50+
this.context = Objects.requireNonNull(context, "context can't be null");
5451
closed = new AtomicBoolean(false);
5552
}
5653

54+
/**
55+
* {@inheritDoc}
56+
*/
5757
@Override
5858
public FileContext context() {
5959
return context;
Lines changed: 2 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,12 @@
1616
* See the License for the specific language governing permissions and
1717
* limitations under the License.
1818
*/
19-
package io.streamthoughts.kafka.connect.filepulse.fs.local.reader;
19+
package io.streamthoughts.kafka.connect.filepulse.reader;
2020

2121
import io.streamthoughts.kafka.connect.filepulse.data.TypedStruct;
22-
import io.streamthoughts.kafka.connect.filepulse.reader.FileInputIterator;
23-
import io.streamthoughts.kafka.connect.filepulse.reader.FileInputReader;
2422
import io.streamthoughts.kafka.connect.filepulse.source.FileContext;
2523
import io.streamthoughts.kafka.connect.filepulse.source.FileRecord;
26-
import io.streamthoughts.kafka.connect.filepulse.source.LocalFileObjectMeta;
27-
import io.streamthoughts.kafka.connect.filepulse.source.FileObjectMeta;
2824

29-
import java.io.File;
30-
import java.net.URI;
31-
import java.nio.file.Files;
32-
import java.nio.file.Paths;
33-
import java.util.Map;
3425
import java.util.concurrent.atomic.AtomicBoolean;
3526

3627
public abstract class AbstractFileInputReader implements FileInputReader {
@@ -42,35 +33,11 @@ public abstract class AbstractFileInputReader implements FileInputReader {
4233
/**
4334
* Creates a new {@link AbstractFileInputReader} instance.
4435
*/
45-
AbstractFileInputReader() {
36+
public AbstractFileInputReader() {
4637
this.isClosed = new AtomicBoolean(false);
4738
this.openIterators = new IteratorManager();
4839
}
4940

50-
/**
51-
* {@inheritDoc}
52-
*/
53-
@Override
54-
public void configure(final Map<String, ?> configs) {
55-
56-
}
57-
58-
/**
59-
* {@inheritDoc}
60-
*/
61-
@Override
62-
public FileObjectMeta readMetadata(final URI fileURI) {
63-
return new LocalFileObjectMeta(new File(fileURI));
64-
}
65-
66-
/**
67-
* {@inheritDoc}
68-
*/
69-
@Override
70-
public boolean isReadable(final URI fileURI) {
71-
return Files.isReadable(Paths.get(fileURI));
72-
}
73-
7441
/**
7542
* {@inheritDoc}
7643
*/

connect-file-pulse-api/src/main/java/io/streamthoughts/kafka/connect/filepulse/reader/FileInputIterator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
*
2929
* @param <T> type of value.
3030
*/
31-
public interface FileInputIterator<T> extends Iterator<RecordsIterable<T>> {
31+
public interface FileInputIterator<T> extends Iterator<RecordsIterable<T>>, AutoCloseable {
3232

3333
/**
3434
* Gets the iterator context.

connect-file-pulse-api/src/main/java/io/streamthoughts/kafka/connect/filepulse/reader/FileInputReader.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ public interface FileInputReader extends Configurable, AutoCloseable {
3838
* @param configs the reader configuration.
3939
*/
4040
@Override
41-
void configure(final Map<String, ?> configs);
41+
default void configure(final Map<String, ?> configs) {
42+
43+
}
4244

4345
/**
4446
* Gets the metadata for the source object identified by the given {@link URI}.
Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616
* See the License for the specific language governing permissions and
1717
* limitations under the License.
1818
*/
19-
package io.streamthoughts.kafka.connect.filepulse.fs.local.reader;
20-
21-
import io.streamthoughts.kafka.connect.filepulse.reader.FileInputIterator;
19+
package io.streamthoughts.kafka.connect.filepulse.reader;
2220

2321
import java.util.Collections;
2422
import java.util.HashSet;
@@ -27,14 +25,14 @@
2725
/**
2826
* Default class to easily close all open {@link FileInputIterator} instances.
2927
*/
30-
class IteratorManager {
28+
public class IteratorManager {
3129

3230
private final Set<FileInputIterator<?>> openIterators;
3331

3432
/**
3533
* Creates a new {@link IteratorManager} instance.
3634
*/
37-
IteratorManager() {
35+
public IteratorManager() {
3836
this.openIterators = Collections.synchronizedSet(new HashSet<>());
3937
}
4038

0 commit comments

Comments
 (0)