Skip to content

Commit 85c9b16

Browse files
committed
CONFLUENCE-240: Make AbstractMacroConverter and the Confluence Converter public
Force macro converters to implement toXWikiId, which will likely help avoid bugs
1 parent 7242cd0 commit 85c9b16

File tree

8 files changed

+45
-11
lines changed

8 files changed

+45
-11
lines changed

confluence-xml/src/main/java/org/xwiki/contrib/confluence/filter/AbstractMacroConverter.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ public abstract class AbstractMacroConverter implements MacroConverter
5252
@Inject
5353
private ConfluenceInputContext inputContext;
5454

55+
// Code editors might suggest that toXWikiId already exists in MacroConverter and can be removed here, but
56+
// one should not remove it: we want subclasses to explicitly implement toXWikiId. The default
57+
// implementation in the interface is there for backward-compatibility but this stuff should not be implicit.
58+
@Override
59+
public abstract String toXWikiId(String confluenceId, Map<String, String> confluenceParameters,
60+
String confluenceContent, boolean inline);
61+
5562
@Override
5663
public final void toXWiki(String confluenceId, Map<String, String> confluenceParameters, String confluenceContent,
5764
boolean inline, Listener listener)
@@ -173,13 +180,6 @@ private void printUnhandledInfo(String confluenceId, TracedMap<String, String> c
173180
}
174181
}
175182

176-
@Override
177-
public String toXWikiId(String confluenceId, Map<String, String> confluenceParameters, String confluenceContent,
178-
boolean inline)
179-
{
180-
return confluenceId;
181-
}
182-
183183
/**
184184
* Convert Confluence parameters to XWiki parameters. If you override toXWiki, toXWikiParameters won't be used.
185185
* You should return something sensible, or an empty Map.
@@ -307,7 +307,7 @@ private void logCantMarkError()
307307
}
308308

309309
// Code editors might suggest that supportsInlineMode already exists in MacroConverter and can be removed here, but
310-
// one should not remove it: we want subclass to explicitly implement supportsInlineMode. The default
310+
// one should not remove it: we want subclasses to explicitly implement supportsInlineMode. The default
311311
// implementation in the interface is there for backward-compatibility but this stuff should not be implicit.
312312
@Override
313313
public abstract InlineSupport supportsInlineMode(String id, Map<String, String> parameters, String content);

confluence-xml/src/main/java/org/xwiki/contrib/confluence/filter/MacroConverter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ default InlineSupport supportsInlineMode(String id, Map<String, String> paramete
7979
}
8080

8181
/**
82-
* @return the id of the macro after conversion given the parameters, the content and whether the context is inline.
83-
* The default implementation uses toXWiki to return the converted id.
82+
* @return the id of the macro after conversion, or null if no macro is produced by this macro converter
8483
* @param id the Confluence macro id
8584
* @param parameters the macro parameters
8685
* @param content the macro content

confluence-xml/src/main/java/org/xwiki/contrib/confluence/filter/internal/macros/AbstractMacroConverter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@
4444
@Deprecated (since = "9.89.0")
4545
public abstract class AbstractMacroConverter extends org.xwiki.contrib.confluence.filter.AbstractMacroConverter
4646
{
47+
@Override
48+
public String toXWikiId(String confluenceId, Map<String, String> confluenceParameters, String confluenceContent,
49+
boolean inline)
50+
{
51+
return confluenceId;
52+
}
53+
4754
protected Map<String, String> toXWikiParameters(String confluenceId, Map<String, String> confluenceParameters,
4855
String content) throws ConversionException
4956
{

confluence-xml/src/main/java/org/xwiki/contrib/confluence/filter/internal/macros/DefaultMacroConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public String toXWikiId(String confluenceId, Map<String, String> confluenceParam
114114
return this.context.getProperties().getUnknownMacroPrefix() + confluenceId;
115115
}
116116

117-
// By default macros are not prefixed
117+
// By default, macros are not prefixed
118118
return confluenceId;
119119
}
120120

confluence-xml/src/main/java/org/xwiki/contrib/confluence/filter/internal/macros/ImgMacroConverter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ public class ImgMacroConverter extends AbstractMacroConverter
4949
@Inject
5050
private ConfluenceURLConverter urlConverter;
5151

52+
@Override
53+
public String toXWikiId(String confluenceId, Map<String, String> confluenceParameters, String confluenceContent,
54+
boolean inline)
55+
{
56+
return null;
57+
}
58+
5259
@Override
5360
public void toXWiki(String confluenceId, Map<String, String> confluenceParameters, boolean inline,
5461
String confluenceContent, Listener listener)

confluence-xml/src/main/java/org/xwiki/contrib/confluence/filter/internal/macros/MacroToContentConverter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,13 @@ public class MacroToContentConverter extends AbstractParseContentMacroConverter
5555
@Inject
5656
protected ConfluenceInputContext context;
5757

58+
@Override
59+
public String toXWikiId(String confluenceId, Map<String, String> confluenceParameters, String confluenceContent,
60+
boolean inline)
61+
{
62+
return confluenceId;
63+
}
64+
5865
@Override
5966
public void toXWiki(String id, Map<String, String> parameters, boolean inline, String content, Listener listener)
6067
throws ConversionException

confluence-xml/src/main/java/org/xwiki/contrib/confluence/filter/internal/macros/MentionMacroConverter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ public class MentionMacroConverter extends AbstractMacroConverter
5454
@Inject
5555
private Logger logger;
5656

57+
@Override
58+
public String toXWikiId(String confluenceId, Map<String, String> confluenceParameters, String confluenceContent,
59+
boolean inline)
60+
{
61+
return "mention";
62+
}
63+
5764
@Override
5865
protected Map<String, String> toXWikiParameters(String confluenceId, Map<String, String> confluenceParameters,
5966
String content) throws ConversionException

confluence-xml/src/test/java/org/xwiki/contrib/confluence/filter/FakeShowIfMacroConverter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ public class FakeShowIfMacroConverter extends AbstractMacroConverter
3939
@Inject
4040
private ConfluenceFilterReferenceConverter converter;
4141

42+
@Override
43+
public String toXWikiId(String confluenceId, Map<String, String> confluenceParameters, String confluenceContent,
44+
boolean inline)
45+
{
46+
return confluenceId;
47+
}
48+
4249
@Override
4350
protected Map<String, String> toXWikiParameters(String confluenceId, Map<String, String> confluenceParameters,
4451
String content)

0 commit comments

Comments
 (0)