Skip to content

Commit c537baa

Browse files
author
Build Pipeline
committed
Merge branch 'release/7.11'
2 parents d6f4ef7 + e2bf264 commit c537baa

File tree

24 files changed

+344
-96
lines changed

24 files changed

+344
-96
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@ It is a **Maven plugin** that generates **project's documentation directly to co
2424
2525
## Examples
2626

27-
For pratical samples refer to folder/module [test-publishing](https://github.com/bsorrentino/maven-confluence-plugin/tree/master/test-publishing)
27+
For practical samples refer to folder/module [test-publishing](https://github.com/bsorrentino/maven-confluence-plugin/tree/master/test-publishing)
2828

2929
## News
3030

3131
Date | Release | Info
3232
------------------|-------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
33+
| **Mar 23, 2023** | [Release 7.11](https://github.com/bsorrentino/maven-confluence-plugin/releases/tag/v7.11) | Support of Confluence `Excerpt` macro. Refer to [#285](https://github.com/bsorrentino/maven-confluence-plugin/issues/285) |
3334
| **Mar 4, 2023** | [Release 7.10](https://github.com/bsorrentino/maven-confluence-plugin/releases/tag/v7.10) | Allow to skip html tags in markdown processing. Refer to [#284](https://github.com/bsorrentino/maven-confluence-plugin/issues/284) |
3435
| **Jan 4, 2023** | [Release 7.9](https://github.com/bsorrentino/maven-confluence-plugin/releases/tag/v7.9) | Fix problem Problem parsing `%` character from markdown to wiki. Refer to [#282](https://github.com/bsorrentino/maven-confluence-plugin/issues/282) |
3536
| **Dec 9, 2022** | [Release 7.8](https://github.com/bsorrentino/maven-confluence-plugin/releases/tag/v7.8) | Merged PR [#281](https://github.com/bsorrentino/maven-confluence-plugin/pull/281) that fix [#280](https://github.com/bsorrentino/maven-confluence-plugin/issue/280) "**allows specifying additional HTTP headers in the servers section of settings.xml**". Thanks to [DirkMahler](https://github.com/DirkMahler) for contribution. |

addon-scrollversions/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>maven-confluence-parent</artifactId>
77
<groupId>org.bsc.maven</groupId>
8-
<version>7.10</version>
8+
<version>7.11</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>maven-confluence-parent</artifactId>
77
<groupId>org.bsc.maven</groupId>
8-
<version>7.10</version>
8+
<version>7.11</version>
99
</parent>
1010

1111
<modelVersion>4.0.0</modelVersion>

core/src/main/java/org/bsc/confluence/model/SiteProcessor.java

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -117,18 +117,18 @@ public static <T> T processUri(
117117
*
118118
* @param site
119119
* @param child
120-
* @param page
120+
* @param page - Nullable
121121
* @param uri
122-
* @param pagePrefixToApply
122+
* @param pagePrefixToApply - Nullable
123123
* @param <P>
124124
* @return
125125
*/
126126
public static <P extends Site.Page> CompletableFuture<PageContent> processPageUri(
127127
final Site site,
128128
final P child,
129-
final Optional<Model.Page> page,
129+
final Model.Page page,
130130
final java.net.URI uri,
131-
final Optional<String> pagePrefixToApply)
131+
final String pagePrefixToApply)
132132
{
133133
requireNonNull(uri, "uri is null!");
134134

@@ -196,20 +196,22 @@ public static <P extends Site.Page> CompletableFuture<PageContent> processPageUr
196196
return result;
197197
}
198198

199-
200199
/**
201-
*
202-
* @param uri
203-
* @return
204-
* @throws Exception
205-
*/
200+
*
201+
* @param site
202+
* @param child
203+
* @param uri
204+
* @param homePageTitle - Nullable
205+
* @return
206+
* @param <P>
207+
*/
206208
public static
207209
<P extends Site.Page> CompletableFuture<PageContent>
208210
processUriContent(
209211
final Site site,
210212
final P child,
211213
final java.net.URI uri,
212-
final Optional<String> homePageTitle )
214+
final String homePageTitle )
213215
{
214216
requireNonNull(uri, "uri is null!");
215217

@@ -243,7 +245,7 @@ public static <P extends Site.Page> CompletableFuture<PageContent> processPageUr
243245
try {
244246
final String candidateContent = IOUtils.toString(is.get(), Charset.defaultCharset());
245247

246-
content = (isMarkdown) ? processMarkdown(site, child, empty(), candidateContent, homePageTitle) : candidateContent;
248+
content = (isMarkdown) ? processMarkdown(site, child, null, candidateContent, homePageTitle) : candidateContent;
247249

248250
} catch (IOException e) {
249251
result.completeExceptionally( new Exception( format("error processing page [%s] ", source)));
@@ -260,7 +262,7 @@ public static <P extends Site.Page> CompletableFuture<PageContent> processPageUr
260262
final String candidateContent = IOUtils.toString(is, Charset.defaultCharset());
261263

262264
content = (isMarkdown) ?
263-
processMarkdown( site, child, empty(), candidateContent, homePageTitle) :
265+
processMarkdown( site, child, null, candidateContent, homePageTitle) :
264266
candidateContent;
265267

266268
} catch (IOException e) {
@@ -277,18 +279,18 @@ public static <P extends Site.Page> CompletableFuture<PageContent> processPageUr
277279
*
278280
* @param site
279281
* @param child
280-
* @param page
282+
* @param page - Nullable
281283
* @param content
282-
* @param pagePrefixToApply
284+
* @param pagePrefixToApply - Nullable
283285
* @return
284286
* @throws IOException
285287
*/
286288
public static String processMarkdown(
287289
final Site site,
288290
final Site.Page child,
289-
final Optional<ConfluenceService.Model.Page> page,
291+
final ConfluenceService.Model.Page page,
290292
final String content,
291-
final Optional<String> pagePrefixToApply) throws IOException {
293+
final String pagePrefixToApply) throws IOException {
292294

293295
return MarkdownProcessor.shared.processMarkdown(new MarkdownParserContext() {
294296
@Override
@@ -308,14 +310,14 @@ public Optional<Site.Page> getPage() {
308310

309311
@Override
310312
public Optional<String> getPagePrefixToApply() {
311-
return pagePrefixToApply;
313+
return Optional.of(pagePrefixToApply);
312314
}
313315

314316
@Override
315317
public boolean isLinkPrefixEnabled() {
316318
if( child.isIgnoreVariables() ) return false;
317319

318-
return page.map( p -> !p.getTitle().contains("[") ).orElse(true);
320+
return Optional.of(page).map( p -> !p.getTitle().contains("[") ).orElse(true);
319321

320322
}
321323
}, content);

core/src/main/java/org/bsc/markdown/MarkdownVisitorHelper.java

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import java.nio.file.Paths;
1111
import java.util.Optional;
1212
import java.util.function.BiFunction;
13-
import java.util.function.Function;
1413
import java.util.function.Predicate;
1514
import java.util.regex.Matcher;
1615
import java.util.regex.Pattern;
@@ -141,11 +140,23 @@ public static String processLinkUrl( String url, MarkdownParserContext parseCont
141140
// }
142141

143142
/**
144-
*
143+
* [Match multiline text using regular expression](https://stackoverflow.com/a/3652392/521197)
145144
*/
146-
private static Pattern isConfluenceMacroPattern = Pattern.compile( "^[\\s]*\\{([\\w-]+)(([:][\\w-]+(=(.+))?)([|].+)*)?\\}[\\s]*$" );
147-
private static Pattern isConfluenceVariable = Pattern.compile( "^[\\s]*\\$\\{([\\w-\\.]+)\\}[\\s]*$" );
145+
private static Pattern isConfluenceMacroPattern = Pattern.compile( "^[\\s]*\\{([\\w-]+)(([:][\\w-]+(=(.+))?)([|].+)*)?\\}[\\s]*$", Pattern.DOTALL );
146+
private static Pattern confluenceMacroWithContentPattern = Pattern.compile("^\\s*(\\{.+\\})(.+)(\\{.+\\})\\s*$", Pattern.DOTALL );
147+
private static Pattern isConfluenceVariablePattern = Pattern.compile( "^[\\s]*\\$\\{([\\w-\\.]+)\\}[\\s]*$" );
148148

149+
/**
150+
*
151+
* @param text
152+
* @return
153+
*/
154+
public static boolean isConfluenceMacroOrVariable( String text ) {
155+
// GUARD
156+
if( text == null || text.isEmpty() ) return false;
157+
return isConfluenceMacroPattern.matcher(text).matches() ||
158+
isConfluenceVariablePattern.matcher(text).matches();
159+
}
149160
/**
150161
*
151162
* @param text
@@ -154,8 +165,22 @@ public static String processLinkUrl( String url, MarkdownParserContext parseCont
154165
public static boolean isConfluenceMacro( String text ) {
155166
// GUARD
156167
if( text == null || text.isEmpty() ) return false;
157-
return isConfluenceMacroPattern.matcher(text).matches() ||
158-
isConfluenceVariable.matcher(text).matches();
168+
return isConfluenceMacroPattern.matcher(text).matches();
169+
}
170+
171+
public static boolean isConfluenceVariable( String text ) {
172+
// GUARD
173+
if( text == null || text.isEmpty() ) return false;
174+
return isConfluenceVariablePattern.matcher(text).matches();
175+
}
176+
177+
/**
178+
*
179+
* @param text
180+
* @return
181+
*/
182+
public static Matcher parseConfluenceMacro( @NonNull String text ) {
183+
return confluenceMacroWithContentPattern.matcher(text);
159184
}
160185

161186
/**

core/src/test/kotlin/org/bsc/markdown/MacroParsingTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.bsc.markdown
22

3-
import org.bsc.markdown.MarkdownVisitorHelper.isConfluenceMacro
3+
import org.bsc.markdown.MarkdownVisitorHelper.isConfluenceMacroOrVariable
44
import org.junit.Test
55
import org.junit.jupiter.api.Assertions.assertTrue
66

@@ -44,7 +44,7 @@ class MacroParsingTest {
4444

4545
for( literal in macros ) {
4646
println( "evaluate macro $literal")
47-
assertTrue( isConfluenceMacro(literal) )
47+
assertTrue( isConfluenceMacroOrVariable(literal) )
4848
}
4949

5050
}

gitlog+jira/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>maven-confluence-parent</artifactId>
77
<groupId>org.bsc.maven</groupId>
8-
<version>7.10</version>
8+
<version>7.11</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

plugin-reporting/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>maven-confluence-parent</artifactId>
77
<groupId>org.bsc.maven</groupId>
8-
<version>7.10</version>
8+
<version>7.11</version>
99
</parent>
1010

1111
<prerequisites>

plugin-reporting/src/main/java/org/bsc/mojo/AbstractConfluenceDeployMojo.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -278,21 +278,21 @@ protected <S extends Site.Source> String getPrintableStringForResource(S source)
278278
/**
279279
*
280280
* @param <T>
281-
* @param pageToUpdate
281+
* @param pageToUpdate - Nullable
282282
* @param site
283283
* @param source
284284
* @param child
285285
* @param pageTitleToApply
286286
* @return
287287
*/
288288
private <T extends Site.Page> CompletableFuture<Storage> getPageContent(
289-
final Optional<Model.Page> pageToUpdate,
289+
final Model.Page pageToUpdate,
290290
final Site site,
291291
final java.net.URI source,
292292
final T child,
293293
final String pageTitleToApply)
294294
{
295-
final Optional<String> pagePrefixToApply = (isChildrenTitlesPrefixed()) ? ofNullable(this.getPageTitle()) : empty();
295+
final String pagePrefixToApply = (isChildrenTitlesPrefixed()) ? this.getPageTitle() : null;
296296

297297
return processPageUri(site, child, pageToUpdate, source, pagePrefixToApply)
298298
.thenCompose( content -> {
@@ -413,13 +413,13 @@ protected <T extends Site.Page> Model.Page generateChild(final ConfluenceService
413413
// Update Page Inline Function
414414
final AsyncProcessPageFunc updatePageFunction = p ->
415415
updatePageIfNeeded(child,p,
416-
() -> getPageContent( ofNullable(p), site, uri, child, pageTitleToApply )
416+
() -> getPageContent( p, site, uri, child, pageTitleToApply )
417417
.thenCompose( storage -> confluence.storePage(p, storage))
418418
.thenCompose( page -> saveAttributesToDeployStateManager(child, page )));
419419

420420
// Create Page Function
421421
final AsyncPageSupplier createPageFunction = () ->
422-
getPageContent( empty(), site, uri, child, pageTitleToApply )
422+
getPageContent( null, site, uri, child, pageTitleToApply )
423423
.thenCompose( storage -> confluence.createPage(parentPage, pageTitleToApply, storage))
424424
.thenCompose( page -> saveAttributesToDeployStateManager(child, page ));
425425

@@ -549,10 +549,10 @@ private void processProperties(Site site) {
549549
*/
550550
private CompletableFuture<String> processUriContent(Site site, Site.Page child, java.net.URI uri, final Charset charset) {
551551

552-
final Optional<String> pagePrefixToApply =
552+
final String pagePrefixToApply =
553553
(isChildrenTitlesPrefixed()) ?
554-
ofNullable(this.getPageTitle()) :
555-
empty();
554+
this.getPageTitle() :
555+
null;
556556

557557
return SiteProcessor.processUriContent(site, child, uri, pagePrefixToApply)
558558
.thenApply( pageContent -> pageContent.getContent(charset) );

plugin-reporting/src/main/java/org/bsc/mojo/ConfluenceDeployMojo.java

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -491,17 +491,24 @@ private CompletableFuture<Boolean> removeSnaphot(
491491

492492
}
493493

494+
/**
495+
*
496+
* @param site
497+
* @param homePage - Nullable
498+
* @param locale
499+
* @return
500+
*/
494501
private CompletableFuture<Storage> getHomeContent(
495502
final Site site,
496-
final Optional<Model.Page> homePage,
503+
final Model.Page homePage,
497504
final Locale locale )
498505
{
499506

500507
final Site.Page home = site.getHome();
501508
final java.net.URI uri = home.getUri();
502-
final Optional<String> pagePrefixToApply = (isChildrenTitlesPrefixed())
503-
? ofNullable(this.getPageTitle())
504-
: Optional.empty();
509+
final String pagePrefixToApply = (isChildrenTitlesPrefixed())
510+
? this.getPageTitle()
511+
: null;
505512

506513
return processPageUri( site, home, homePage, uri, pagePrefixToApply)
507514
.thenCompose( content -> {
@@ -545,11 +552,11 @@ private void generateProjectReport(
545552

546553
final AsyncProcessPageFunc updateHomePage = p ->
547554
updatePageIfNeeded(site.getHome(), p, () ->
548-
getHomeContent(site, Optional.of(p), locale)
555+
getHomeContent(site, p, locale)
549556
.thenCompose( content -> confluence.storePage(p, content )));
550557

551558
final AsyncProcessPageFunc createHomePage = _parentPage ->
552-
getHomeContent( site, Optional.empty(), locale )
559+
getHomeContent( site, null, locale )
553560
.thenCompose( content -> confluence.createPage(_parentPage, _homePageTitle,content) );
554561

555562

@@ -803,14 +810,14 @@ void generateGoalsPages(final ConfluenceService confluence,
803810
/**
804811
*
805812
* @param site
806-
* @param homePage
813+
* @param homePage - Nullable
807814
* @param pluginDescriptor
808815
* @param locale
809816
* @return
810817
*/
811818
private CompletableFuture<Storage> getHomeContent(
812819
final Site site,
813-
final Optional<Model.Page> homePage,
820+
final Model.Page homePage,
814821
final PluginDescriptor pluginDescriptor,
815822
final Locale locale)
816823
{
@@ -826,9 +833,9 @@ private CompletableFuture<Storage> getHomeContent(
826833
}
827834

828835
final String title = getPageTitle();
829-
final Optional<String> pagePrefixToApply = (isChildrenTitlesPrefixed())
830-
? ofNullable(getPageTitle())
831-
: Optional.empty();
836+
final String pagePrefixToApply = (isChildrenTitlesPrefixed())
837+
? getPageTitle()
838+
: null ;
832839

833840
return processPageUri(site, site.getHome(), homePage, site.getHome().getUri(), pagePrefixToApply )
834841
.thenCompose( content -> {
@@ -930,11 +937,11 @@ private CompletableFuture<Model.Page> updateHomeContent(
930937
}
931938

932939
final String title = getPageTitle();
933-
final Optional<String> pagePrefixToApply = (isChildrenTitlesPrefixed())
934-
? ofNullable(getPageTitle())
935-
: Optional.empty();
940+
final String pagePrefixToApply = (isChildrenTitlesPrefixed())
941+
? getPageTitle()
942+
: null ;
936943

937-
return processPageUri(site, site.getHome(), Optional.of(homePage), site.getHome().getUri(), pagePrefixToApply )
944+
return processPageUri(site, site.getHome(), homePage, site.getHome().getUri(), pagePrefixToApply )
938945
.thenCompose( content -> {
939946

940947
try {
@@ -1042,11 +1049,11 @@ public Model.Page processMojoDescriptors(
10421049

10431050
final Function<Model.Page, CompletableFuture<Model.Page>> updatePage = (p) ->
10441051
updatePageIfNeeded( site.getHome(),p,
1045-
() -> getHomeContent( site, Optional.of(p), pluginDescriptor, locale)
1052+
() -> getHomeContent( site, p, pluginDescriptor, locale)
10461053
.thenCompose( content -> confluence.storePage(p, content)));
10471054

10481055
final Function<Model.Page, CompletableFuture<Model.Page>> createPage = (parent) ->
1049-
getHomeContent(site, Optional.empty(), pluginDescriptor, locale)
1056+
getHomeContent(site, null, pluginDescriptor, locale)
10501057
.thenCompose( content ->confluence.createPage(parent, title, content));
10511058

10521059
return removeSnaphot(confluence, parentPage, title)

0 commit comments

Comments
 (0)