Skip to content

Commit 67666ed

Browse files
committed
#429: Fixed review findings of @kaklakariada.
- Extracted method for header peeking - Implemented `ImporterFactory` directly - Fixed release date
1 parent dcbfc65 commit 67666ed

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

doc/changes/changes_4.2.1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# OpenFastTrace 4.2.1, released 2025-09-07
1+
# OpenFastTrace 4.2.1, released 2025-09-14
22

33
Code name: Peek before you guess
44

importer/specobject/src/main/java/org/itsallcode/openfasttrace/importer/specobject/SpecobjectImporterFactory.java

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
/**
1313
* An {@link ImporterFactory} for ReqM2/SpecObject XML files.
1414
*/
15-
public class SpecobjectImporterFactory extends RegexMatchingImporterFactory
15+
public class SpecobjectImporterFactory extends ImporterFactory
1616
{
1717
private static final Logger LOG = Logger.getLogger(SpecobjectImporterFactory.class.getName());
1818
private static final int PEEK_CHARS = 4096;
@@ -24,7 +24,6 @@ public class SpecobjectImporterFactory extends RegexMatchingImporterFactory
2424
*/
2525
public SpecobjectImporterFactory()
2626
{
27-
super("(?i).*\\.(xml|oreqm)");
2827
this.xmlParserFactory = new XmlParserFactory();
2928
}
3029

@@ -40,25 +39,29 @@ public boolean supportsFile(final InputFile file)
4039
}
4140
else if (lower.endsWith(".xml"))
4241
{
43-
try (BufferedReader reader = file.createReader())
44-
{
45-
final char[] buf = new char[PEEK_CHARS];
46-
final int read = reader.read(buf);
47-
if (read <= 0)
48-
{
49-
return false;
50-
}
51-
else {
52-
final String header = new String(buf, 0, read);
53-
return header.contains("<specdocument");
54-
}
55-
}
56-
catch (final IOException exception)
42+
return doesFileContainOreqmHeader(file, path);
43+
} else {
44+
return false;
45+
}
46+
}
47+
48+
private static boolean doesFileContainOreqmHeader(final InputFile file, final String path) {
49+
try (BufferedReader reader = file.createReader())
50+
{
51+
final char[] buf = new char[PEEK_CHARS];
52+
final int read = reader.read(buf);
53+
if (read <= 0)
5754
{
58-
LOG.fine(() -> "Unable to peek XML file '" + path + "' trying to determine if it contains ReqM2 format: " + exception.getMessage());
5955
return false;
6056
}
61-
} else {
57+
else {
58+
final String header = new String(buf, 0, read);
59+
return header.contains("<specdocument");
60+
}
61+
}
62+
catch (final IOException exception)
63+
{
64+
LOG.fine(() -> "Unable to peek XML file '" + path + "' trying to determine if it contains ReqM2 format: " + exception.getMessage());
6265
return false;
6366
}
6467
}

0 commit comments

Comments
 (0)