Skip to content

Commit 94237a7

Browse files
committed
DXA 2.0 CTP 1 Release
2 parents cb9bfe2 + e6a9410 commit 94237a7

File tree

34 files changed

+347
-241
lines changed

34 files changed

+347
-241
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ If you encounter any issues with the Digital Experience Accelerator, please reac
3030

3131
Documentation
3232
-------------
33-
Documentation can be found online in the SDL documentation portal: http://docs.sdl.com/sdldxa
33+
Documentation can be found online in the SDL documentation portal: http://docs.sdl.com/sdldxa2-ctp
3434

3535

3636
Repositories

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ task help(type: MavenHelpTask)
3131

3232
task buildFramework(type: MavenBuildTask) {
3333
configurations = [
34-
["dxa-bom"],
34+
//["dxa-bom"],
3535
["dxa-framework"],
3636
["> dxa-webapp > clean org.apache.maven.plugins:maven-archetype-plugin:2.4:create-from-project -Darchetype.properties=archetype.properties"]
3737
]

dxa-bom/pom.xml

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,13 +186,31 @@
186186
<groupId>com.sdl.dxa.modules</groupId>
187187
<artifactId>dxa-module-context-expressions</artifactId>
188188
<version>${dxa-module-context-expressions}</version>
189-
<scope>compile</scope>
189+
</dependency>
190+
<dependency>
191+
<groupId>com.sdl.dxa.modules</groupId>
192+
<artifactId>dxa-module-context-expressions-abstract</artifactId>
193+
<version>${dxa-module-context-expressions}</version>
194+
</dependency>
195+
<dependency>
196+
<groupId>com.sdl.dxa.modules</groupId>
197+
<artifactId>dxa-module-context-expressions-legacy</artifactId>
198+
<version>${dxa-module-context-expressions}</version>
190199
</dependency>
191200
<dependency>
192201
<groupId>com.sdl.dxa.modules</groupId>
193202
<artifactId>dxa-module-smarttarget</artifactId>
194203
<version>${dxa-module-smarttarget.version}</version>
195-
<scope>runtime</scope>
204+
</dependency>
205+
<dependency>
206+
<groupId>com.sdl.dxa.modules</groupId>
207+
<artifactId>dxa-module-smarttarget-abstract</artifactId>
208+
<version>${dxa-module-smarttarget.version}</version>
209+
</dependency>
210+
<dependency>
211+
<groupId>com.sdl.dxa.modules</groupId>
212+
<artifactId>dxa-module-smarttarget-legacy</artifactId>
213+
<version>${dxa-module-smarttarget.version}</version>
196214
</dependency>
197215
<dependency>
198216
<groupId>com.sdl.dxa.modules</groupId>

dxa-framework/dxa-common-impl/src/main/java/com/sdl/webapp/common/impl/taglib/xpm/XpmButtonTag.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,12 @@ protected HtmlNode generateXpmMarkup() {
4545
.build();
4646
} else {
4747
String title = "Edit " + this.region.getXpmMetadata().get(INCLUDED_FROM_PAGE_TITLE_XPM_METADATA_KEY);
48-
String editUrl = ApplicationContextHolder.getContext().getBean(WebRequestContext.class).getLocalization().localizePath(
49-
this.region.getXpmMetadata().get(INCLUDED_FROM_PAGE_FILE_NAME_XPM_METADATA_KEY).toString());
48+
String urlOfInclude = this.region.getXpmMetadata().get(INCLUDED_FROM_PAGE_FILE_NAME_XPM_METADATA_KEY).toString();
49+
if (!urlOfInclude.matches("/?system/include.*")) {
50+
urlOfInclude = String.format("system/include/%s", urlOfInclude.startsWith("/") ? urlOfInclude.substring(1) : urlOfInclude);
51+
}
52+
String editUrl = ApplicationContextHolder.getContext().getBean(WebRequestContext.class)
53+
.getLocalization().localizePath(urlOfInclude);
5054
return HtmlBuilders.div()
5155
.withClass("xpm-button" + (cssClass == null ? "" : " " + cssClass))
5256
.withNode(HtmlBuilders.a(editUrl)

dxa-framework/dxa-common/src/main/java/com/sdl/dxa/common/dto/PageRequestDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import lombok.AllArgsConstructor;
44
import lombok.Builder;
5+
import lombok.EqualsAndHashCode;
56
import lombok.Value;
67
import org.springframework.util.Assert;
78

@@ -10,6 +11,7 @@
1011
*/
1112
@Builder
1213
@Value
14+
@EqualsAndHashCode(exclude = "depthCounter")
1315
public class PageRequestDto {
1416

1517
private int publicationId;
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.sdl.dxa.common.dto;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertEquals;
6+
7+
public class PageRequestDtoTest {
8+
9+
@Test
10+
public void shouldIgnoreDepthCounter_InEqualsAndHashCodeCheck() {
11+
//given
12+
PageRequestDto dto1 = PageRequestDto.builder()
13+
.includePages(PageRequestDto.PageInclusion.INCLUDE)
14+
.path("/").build();
15+
16+
PageRequestDto dto2 = PageRequestDto.builder()
17+
.includePages(PageRequestDto.PageInclusion.INCLUDE)
18+
.path("/").build();
19+
20+
//when
21+
dto2.depthIncreaseAndCheckIfSafe();
22+
23+
//then
24+
assertEquals(dto2, dto1);
25+
assertEquals(dto2.hashCode(), dto1.hashCode());
26+
}
27+
}

dxa-framework/dxa-dd4t-provider/src/main/java/com/sdl/webapp/tridion/BrokerComponentPresentationProvider.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ protected ComponentPresentation getDynamicComponentPresentationInternal(int comp
5757

5858
return getComponentPresentation(result.getContent());
5959
}
60+
6061
/**
6162
* {@inheritDoc}
6263
*/
@@ -75,7 +76,9 @@ public ComponentPresentation getDynamicComponentPresentation(int componentId, in
7576
return getDynamicComponentPresentationInternal(componentId, templateId, publicationId);
7677
}
7778

78-
/** {@inheritDoc} */
79+
/**
80+
* {@inheritDoc}
81+
*/
7982
@Override
8083
public List<ComponentPresentation> getDynamicComponentPresentations(final String[] itemUris, final int templateId, final int publicationId)
8184
throws ItemNotFoundException, SerializationException {

dxa-framework/dxa-dd4t-provider/src/main/java/com/sdl/webapp/tridion/SpringContextConfiguration.java

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
package com.sdl.webapp.tridion;
22

3-
import com.sdl.web.api.content.BinaryContentRetriever;
4-
import com.sdl.web.api.dynamic.BinaryContentRetrieverImpl;
5-
import com.sdl.web.api.dynamic.DynamicMappingsRetriever;
6-
import com.sdl.web.api.dynamic.DynamicMappingsRetrieverImpl;
7-
import com.sdl.web.api.dynamic.DynamicMetaRetriever;
8-
import com.sdl.web.api.dynamic.DynamicMetaRetrieverImpl;
9-
import com.sdl.web.api.taxonomies.TaxonomyRelationManager;
10-
import com.tridion.taxonomies.TaxonomyFactory;
113
import org.dd4t.contentmodel.impl.BaseField;
124
import org.dd4t.contentmodel.impl.ComponentImpl;
135
import org.dd4t.core.factories.ComponentPresentationFactory;
@@ -37,16 +29,6 @@
3729
@ComponentScan("com.sdl.webapp.tridion")
3830
public class SpringContextConfiguration {
3931

40-
@Bean
41-
public TaxonomyFactory webTaxonomyFactory() {
42-
return new TaxonomyFactory();
43-
}
44-
45-
@Bean
46-
public TaxonomyRelationManager taxonomyRelationManager() {
47-
return new TaxonomyRelationManager();
48-
}
49-
5032
@Bean
5133
public BrokerLinkProvider linkProvider() {
5234
BrokerLinkProvider linkProvider = new BrokerLinkProvider();
@@ -82,21 +64,6 @@ public ComponentPresentationProvider componentPresentationProvider() {
8264
return componentPresentationProvider;
8365
}
8466

85-
@Bean
86-
public DynamicMetaRetriever dynamicMetaRetriever() {
87-
return new DynamicMetaRetrieverImpl();
88-
}
89-
90-
@Bean
91-
public BinaryContentRetriever binaryContentRetriever() {
92-
return new BinaryContentRetrieverImpl();
93-
}
94-
95-
@Bean
96-
public DynamicMappingsRetriever dynamicMappingsRetriever() {
97-
return new DynamicMappingsRetrieverImpl();
98-
}
99-
10067
@Bean
10168
public PayloadCacheProvider cacheProvider() {
10269
EHCacheProvider cacheProvider = new EHCacheProvider();
@@ -178,6 +145,7 @@ public DataBindFactory databindFactory() {
178145
@Configuration
179146
@Profile("dxa.no-cache")
180147
public static class NoCacheConfiguration {
148+
181149
@Bean
182150
public PayloadCacheProvider cacheProvider() {
183151
return new NoCacheProvider();

dxa-framework/dxa-dd4t-provider/src/main/java/com/sdl/webapp/tridion/fields/converters/ComponentLinkFieldConverter.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
import com.sdl.webapp.common.api.content.LinkResolver;
66
import com.sdl.webapp.common.api.localization.Localization;
77
import com.sdl.webapp.common.api.mapping.semantic.SemanticMappingException;
8+
import com.sdl.webapp.common.api.model.EntityModel;
89
import com.sdl.webapp.common.api.model.entity.AbstractEntityModel;
910
import com.sdl.webapp.common.api.model.entity.Link;
11+
import com.sdl.webapp.common.util.TcmUtils;
1012
import com.sdl.webapp.tridion.fields.exceptions.FieldConverterException;
1113
import com.sdl.webapp.tridion.fields.exceptions.UnsupportedTargetTypeException;
1214
import com.sdl.webapp.tridion.mapping.ModelBuilderPipeline;
@@ -26,6 +28,7 @@ public class ComponentLinkFieldConverter extends AbstractFieldConverter {
2628
private static final FieldType[] SUPPORTED_FIELD_TYPES = {FieldType.COMPONENTLINK};
2729

2830
private final LinkResolver linkResolver;
31+
2932
private final WebRequestContext webRequestContext;
3033

3134
@Autowired
@@ -69,10 +72,11 @@ public Object createPageLink(org.dd4t.contentmodel.Page page, Class<?> targetCla
6972
String pageId = page.getId();
7073
final String url = linkResolver.resolveLink(pageId, null);
7174

72-
if (targetClass.isAssignableFrom(String.class)) {
75+
if (targetClass == String.class) {
7376
return url;
74-
} else if (targetClass.isAssignableFrom(Link.class)) {
77+
} else if (Link.class.isAssignableFrom(targetClass)) {
7578
final Link link = new Link();
79+
link.setId(String.valueOf(TcmUtils.getItemId(pageId)));
7680
link.setUrl(url);
7781
return link;
7882
} else {
@@ -85,18 +89,20 @@ public Object createComponentLink(org.dd4t.contentmodel.Component component, Cla
8589
String componentId = component.getId();
8690
final String url = linkResolver.resolveLink(componentId, null);
8791

88-
if (targetClass.isAssignableFrom(String.class)) {
92+
if (String.class == targetClass) {
8993
return url;
90-
} else if (targetClass.isAssignableFrom(Link.class)) {
94+
} else if (Link.class.isAssignableFrom(targetClass)) {
9195
final Link link = new Link();
96+
link.setId(String.valueOf(TcmUtils.getItemId(componentId)));
9297
link.setUrl(url);
9398
return link;
94-
} else if (AbstractEntityModel.class.isAssignableFrom(targetClass)) {
99+
} else if (EntityModel.class.isAssignableFrom(targetClass)) { //what we want should be assignable from what we want to have
95100
Localization localization = this.webRequestContext.getLocalization();
96101

97102
try {
98103
Object retval = builder.createEntityModel(component, localization);
99-
if (targetClass.isAssignableFrom(retval.getClass())) {
104+
// what we got should be assignable from what we expected
105+
if (retval != null && targetClass.isAssignableFrom(retval.getClass())) {
100106
return retval;
101107
} else {
102108
return null;

dxa-framework/dxa-dd4t-provider/src/main/java/com/sdl/webapp/tridion/mapping/DefaultContentProvider.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.sdl.webapp.common.exceptions.DxaItemNotFoundException;
1414
import com.sdl.webapp.common.util.LocalizationUtils;
1515
import com.sdl.webapp.common.util.TcmUtils;
16+
import lombok.SneakyThrows;
1617
import lombok.extern.slf4j.Slf4j;
1718
import org.dd4t.contentmodel.Component;
1819
import org.dd4t.contentmodel.ComponentPresentation;
@@ -37,7 +38,9 @@
3738
import org.springframework.beans.factory.annotation.Autowired;
3839
import org.springframework.stereotype.Service;
3940
import org.springframework.web.context.WebApplicationContext;
41+
import org.springframework.web.util.UriUtils;
4042

43+
import java.io.UnsupportedEncodingException;
4144
import java.util.ArrayList;
4245
import java.util.HashMap;
4346
import java.util.List;
@@ -82,8 +85,9 @@ public DefaultContentProvider(WebRequestContext webRequestContext,
8285
}
8386

8487
@Override
88+
@SneakyThrows(UnsupportedEncodingException.class)
8589
protected PageModel _loadPage(String _path, Localization localization) throws ContentProviderException {
86-
return LocalizationUtils.findPageByPath(_path, localization, (path, publicationId) -> {
90+
return LocalizationUtils.findPageByPath(UriUtils.encodePath(_path, "UTF-8"), localization, (path, publicationId) -> {
8791
final org.dd4t.contentmodel.Page genericPage;
8892
try {
8993
synchronized (LOCK) {

0 commit comments

Comments
 (0)