Skip to content

Commit aead69f

Browse files
author
lorenzo
committed
Working on input/output descriptors for components + attributes, WIP.
1 parent ce16e3f commit aead69f

File tree

6 files changed

+36
-31
lines changed

6 files changed

+36
-31
lines changed

src/main/java/com/reedelk/file/component/FileDelete.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
package com.reedelk.file.component;
22

3-
import com.reedelk.file.internal.delete.FileDeleteAttribute;
3+
import com.reedelk.file.internal.attribute.FileAttribute;
44
import com.reedelk.file.internal.exception.FileDeleteException;
55
import com.reedelk.runtime.api.annotation.*;
66
import com.reedelk.runtime.api.component.ProcessorSync;
77
import com.reedelk.runtime.api.flow.FlowContext;
88
import com.reedelk.runtime.api.message.Message;
9+
import com.reedelk.runtime.api.message.MessageAttributes;
910
import com.reedelk.runtime.api.message.MessageBuilder;
1011
import com.reedelk.runtime.api.script.ScriptEngineService;
1112
import com.reedelk.runtime.api.script.dynamicvalue.DynamicString;
1213
import org.osgi.service.component.annotations.Component;
1314
import org.osgi.service.component.annotations.Reference;
1415
import org.osgi.service.component.annotations.ServiceScope;
1516

16-
import java.io.Serializable;
1717
import java.nio.file.Files;
1818
import java.nio.file.Paths;
19-
import java.util.HashMap;
20-
import java.util.Map;
2119
import java.util.Optional;
2220

2321
import static com.reedelk.file.internal.commons.Messages.FileDelete.ERROR_FILE_DELETE;
@@ -54,11 +52,10 @@ public Message apply(FlowContext flowContext, Message message) {
5452
throw new FileDeleteException(errorMessage, exception);
5553
}
5654

57-
Map<String, Serializable> attributesMap = new HashMap<>();
58-
FileDeleteAttribute.FILE_NAME.set(attributesMap, evaluatedFileNameToRemove);
55+
MessageAttributes attributes = new FileAttribute(evaluatedFileNameToRemove);
5956

6057
Message outMessage = MessageBuilder.get(FileDelete.class)
61-
.attributes(attributesMap)
58+
.attributes(attributes)
6259
.empty()
6360
.build();
6461

src/main/java/com/reedelk/file/component/FileExists.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,26 @@
11
package com.reedelk.file.component;
22

3+
import com.reedelk.file.internal.attribute.FileAttribute;
34
import com.reedelk.file.internal.exception.NotValidFileException;
45
import com.reedelk.runtime.api.annotation.*;
56
import com.reedelk.runtime.api.commons.DynamicValueUtils;
67
import com.reedelk.runtime.api.component.ProcessorSync;
78
import com.reedelk.runtime.api.flow.FlowContext;
89
import com.reedelk.runtime.api.message.Message;
10+
import com.reedelk.runtime.api.message.MessageAttributes;
911
import com.reedelk.runtime.api.message.MessageBuilder;
1012
import com.reedelk.runtime.api.script.ScriptEngineService;
1113
import com.reedelk.runtime.api.script.dynamicvalue.DynamicString;
1214
import org.osgi.service.component.annotations.Component;
1315
import org.osgi.service.component.annotations.Reference;
1416
import org.osgi.service.component.annotations.ServiceScope;
1517

16-
import java.io.Serializable;
1718
import java.nio.file.Files;
1819
import java.nio.file.Path;
1920
import java.nio.file.Paths;
20-
import java.util.Map;
2121
import java.util.Optional;
2222

2323
import static com.reedelk.file.internal.commons.Messages.FileRead.FILE_NAME_ERROR;
24-
import static com.reedelk.file.internal.read.FileReadAttribute.FILE_NAME;
25-
import static com.reedelk.file.internal.read.FileReadAttribute.TIMESTAMP;
26-
import static com.reedelk.runtime.api.commons.ImmutableMap.of;
2724
import static com.reedelk.runtime.api.commons.StringUtils.isBlank;
2825

2926

@@ -68,7 +65,6 @@ public Message apply(FlowContext flowContext, Message message) {
6865

6966
boolean exists = Files.exists(path);
7067

71-
7268
// If the target variable has been set, we assign to a context variable
7369
// the result of the file exists check and we return the original message.
7470

@@ -79,9 +75,7 @@ public Message apply(FlowContext flowContext, Message message) {
7975
return message;
8076

8177
} else {
82-
Map<String, Serializable> attributes =
83-
of(FILE_NAME, path.toString(), TIMESTAMP, System.currentTimeMillis());
84-
78+
MessageAttributes attributes = new FileAttribute(path.toString());
8579
return MessageBuilder.get(FileExists.class)
8680
.attributes(attributes)
8781
.withJavaObject(exists)

src/main/java/com/reedelk/file/component/FileRead.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.reedelk.file.component;
22

3+
import com.reedelk.file.internal.attribute.FileAttribute;
34
import com.reedelk.file.internal.exception.NotValidFileException;
45
import com.reedelk.file.internal.read.*;
56
import com.reedelk.runtime.api.annotation.*;
67
import com.reedelk.runtime.api.commons.MimeTypeUtils;
78
import com.reedelk.runtime.api.component.ProcessorSync;
89
import com.reedelk.runtime.api.flow.FlowContext;
910
import com.reedelk.runtime.api.message.Message;
11+
import com.reedelk.runtime.api.message.MessageAttributes;
1012
import com.reedelk.runtime.api.message.MessageBuilder;
1113
import com.reedelk.runtime.api.message.content.MimeType;
1214
import com.reedelk.runtime.api.script.ScriptEngineService;
@@ -16,16 +18,11 @@
1618
import org.osgi.service.component.annotations.ServiceScope;
1719
import org.reactivestreams.Publisher;
1820

19-
import java.io.Serializable;
2021
import java.nio.file.Path;
2122
import java.nio.file.Paths;
22-
import java.util.Map;
2323
import java.util.Optional;
2424

2525
import static com.reedelk.file.internal.commons.Messages.FileRead.FILE_NAME_ERROR;
26-
import static com.reedelk.file.internal.read.FileReadAttribute.FILE_NAME;
27-
import static com.reedelk.file.internal.read.FileReadAttribute.TIMESTAMP;
28-
import static com.reedelk.runtime.api.commons.ImmutableMap.of;
2926
import static com.reedelk.runtime.api.commons.StringUtils.isBlank;
3027

3128
@ModuleComponent("File Read")
@@ -103,8 +100,7 @@ public Message apply(FlowContext flowContext, Message message) {
103100

104101
ReadConfigurationDecorator config = new ReadConfigurationDecorator(configuration);
105102

106-
Map<String, Serializable> attributes =
107-
of(FILE_NAME, path.toString(), TIMESTAMP, System.currentTimeMillis());
103+
MessageAttributes attributes = new FileAttribute(path.toString());
108104

109105
Publisher<byte[]> data = strategy.read(path, config);
110106

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.reedelk.file.internal.attribute;
2+
3+
import com.reedelk.runtime.api.annotation.Type;
4+
import com.reedelk.runtime.api.annotation.TypeProperty;
5+
import com.reedelk.runtime.api.message.MessageAttributes;
6+
7+
import static com.reedelk.file.internal.attribute.FileAttribute.FILE_NAME;
8+
import static com.reedelk.file.internal.attribute.FileAttribute.TIMESTAMP;
9+
10+
@Type
11+
@TypeProperty(name = FILE_NAME, type = String.class)
12+
@TypeProperty(name = TIMESTAMP, type = long.class)
13+
public class FileAttribute extends MessageAttributes {
14+
15+
static final String FILE_NAME = "fileName";
16+
static final String TIMESTAMP = "timestamp";
17+
18+
public FileAttribute(String fileName) {
19+
put(FILE_NAME, fileName);
20+
put(TIMESTAMP, System.currentTimeMillis());
21+
}
22+
}

src/main/java/com/reedelk/file/internal/write/Writer.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.reedelk.file.internal.write;
22

33
import com.reedelk.file.component.FileWrite;
4+
import com.reedelk.file.internal.attribute.FileAttribute;
45
import com.reedelk.file.internal.commons.CloseableUtils;
56
import com.reedelk.file.internal.commons.FileChannelProvider;
67
import com.reedelk.file.internal.exception.FileWriteException;
@@ -9,25 +10,21 @@
910
import com.reedelk.runtime.api.component.OnResult;
1011
import com.reedelk.runtime.api.flow.FlowContext;
1112
import com.reedelk.runtime.api.message.Message;
13+
import com.reedelk.runtime.api.message.MessageAttributes;
1214
import com.reedelk.runtime.api.message.MessageBuilder;
1315
import com.reedelk.runtime.api.message.content.TypedPublisher;
1416
import reactor.core.Exceptions;
1517
import reactor.core.publisher.Flux;
1618
import reactor.core.scheduler.Schedulers;
1719

18-
import java.io.Serializable;
1920
import java.nio.ByteBuffer;
2021
import java.nio.channels.FileChannel;
2122
import java.nio.file.FileAlreadyExistsException;
2223
import java.nio.file.NoSuchFileException;
2324
import java.nio.file.Path;
24-
import java.util.Map;
2525

2626
import static com.reedelk.file.internal.commons.Messages.FileWrite.*;
2727
import static com.reedelk.file.internal.commons.Messages.Misc.FILE_LOCK_MAX_RETRY_ERROR;
28-
import static com.reedelk.file.internal.write.FileWriteAttribute.FILE_NAME;
29-
import static com.reedelk.file.internal.write.FileWriteAttribute.TIMESTAMP;
30-
import static com.reedelk.runtime.api.commons.ImmutableMap.of;
3128
import static com.reedelk.runtime.api.commons.StackTraceUtils.rootCauseMessageOf;
3229

3330
public class Writer {
@@ -114,8 +111,7 @@ public void write(WriteConfiguration config, FlowContext flowContext, OnResult c
114111
}).doOnSuccess(initial -> {
115112

116113
// On success build the message and invoke the callback.
117-
Map<String, Serializable> attributes =
118-
of(FILE_NAME, path.toString(), TIMESTAMP, System.currentTimeMillis());
114+
MessageAttributes attributes = new FileAttribute(path.toString());
119115

120116
Message outMessage = MessageBuilder.get(FileWrite.class)
121117
.attributes(attributes)

0 commit comments

Comments
 (0)