Skip to content

Commit 8d321a6

Browse files
committed
DXA 1.6 RC
2 parents 57a267d + 7c9e5cb commit 8d321a6

81 files changed

Lines changed: 1784 additions & 332 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

dxa-bom-2013sp1/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<groupId>com.sdl.dxa</groupId>
1313
<artifactId>dxa-bom-2013sp1</artifactId>
14-
<version>1.6.0-SNAPSHOT</version>
14+
<version>1.6.0</version>
1515
<packaging>pom</packaging>
1616

1717
<name>DXA - BOM for 2013SP1</name>
@@ -44,7 +44,7 @@
4444
</developers>
4545

4646
<properties>
47-
<dxa-bom.version>1.6.0-SNAPSHOT</dxa-bom.version>
47+
<dxa-bom.version>1.6.0</dxa-bom.version>
4848
<cd.version>7.1.0</cd.version>
4949
<cwd.version>7.1.2</cwd.version>
5050
<smarttarget.version>2014sp1</smarttarget.version>

dxa-bom-modules/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<groupId>com.sdl.dxa.modules</groupId>
1414
<artifactId>dxa-bom-modules</artifactId>
15-
<version>1.6.0-SNAPSHOT</version>
15+
<version>1.6.0</version>
1616
<packaging>pom</packaging>
1717

1818
<name>DXA Modules - Bill of Materials</name>
@@ -45,7 +45,7 @@
4545
</developers>
4646

4747
<properties>
48-
<dxa-modules.version>1.6.0-SNAPSHOT</dxa-modules.version>
48+
<dxa-modules.version>1.6.0</dxa-modules.version>
4949
<dxa-module-core.version>${dxa-modules.version}</dxa-module-core.version>
5050
<dxa-module-cid.version>${dxa-modules.version}</dxa-module-cid.version>
5151
<dxa-module-googleanalytics.version>${dxa-modules.version}</dxa-module-googleanalytics.version>

dxa-bom/pom.xml

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<groupId>com.sdl.dxa</groupId>
1414
<artifactId>dxa-bom</artifactId>
15-
<version>1.6.0-SNAPSHOT</version>
15+
<version>1.6.0</version>
1616
<packaging>pom</packaging>
1717

1818
<name>DXA - Bill of Materials</name>
@@ -48,17 +48,14 @@
4848
<classifier.2013sp1>2013sp1</classifier.2013sp1>
4949
<classifier.web8>web8</classifier.web8>
5050

51-
<dd4t.version>2.0.10-DXA</dd4t.version>
52-
<cd-cil.version>8.2.0-1011</cd-cil.version>
51+
<dd4t.version>2.0.13-DXA</dd4t.version>
52+
<cd-cil.version>8.3.0-1013</cd-cil.version>
5353

5454
<!-- DXA versions -->
5555
<dxa.version>${project.version}</dxa.version>
5656

5757
<!-- Caching -->
58-
<cache-api.version>1.0.0</cache-api.version>
59-
<ehcache.version>2.8.3</ehcache.version>
6058
<!--2013SP1: <ehcache-version>2.8.2</ehcache-version>-->
61-
<jcache.version>1.0.1</jcache.version>
6259

6360
<!-- Apache Commons -->
6461
<commons-beanutils-version>1.8.3</commons-beanutils-version>
@@ -377,22 +374,6 @@
377374
<version>${lombok.version}</version>
378375
</dependency>
379376

380-
<dependency>
381-
<groupId>net.sf.ehcache</groupId>
382-
<artifactId>ehcache</artifactId>
383-
<version>${ehcache.version}</version>
384-
</dependency>
385-
<dependency>
386-
<groupId>javax.cache</groupId>
387-
<artifactId>cache-api</artifactId>
388-
<version>${cache-api.version}</version>
389-
</dependency>
390-
<dependency>
391-
<groupId>org.ehcache</groupId>
392-
<artifactId>jcache</artifactId>
393-
<version>${jcache.version}</version>
394-
</dependency>
395-
396377
<dependency>
397378
<groupId>org.hibernate</groupId>
398379
<artifactId>hibernate-entitymanager</artifactId>

dxa-builder/build.gradle

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
group 'com.sdl.dxa'
2-
version '1.6.0-SNAPSHOT'
2+
version '1.6.0'
33

44
apply plugin: 'groovy'
55
apply plugin: 'maven-publish'
@@ -8,7 +8,7 @@ apply plugin: 'signing'
88
sourceCompatibility = '1.8'
99
targetCompatibility = '1.8'
1010

11-
def isRelease = !version.endsWith("-SNAPSHOT")
11+
def isRelease = !version.endsWith("-SNAPSHOT") && project.hasProperty('release')
1212

1313
task wrapper(type: Wrapper) {
1414
gradleVersion = '2.9'
@@ -85,10 +85,8 @@ publishing {
8585
url "https://oss.sonatype.org/content/repositories/snapshots"
8686
}
8787
} else {
88-
if (project.hasProperty('release')) {
89-
name "sonatype-nexus-staging"
90-
url "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
91-
}
88+
name "sonatype-nexus-staging"
89+
url "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
9290
}
9391

9492
if (project.hasProperty("publishUsername") && project.hasProperty("publishPassword")) {

dxa-builder/src/main/groovy/com/sdl/dxa/builder/maven/MavenBuildTask.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class MavenBuildTask extends DefaultTask {
3636

3737
CountDownLatch latch
3838

39-
def callback = { output ->
39+
def callback = { Output output ->
4040
if (output.code != 0) {
4141
pool.shutdown()
4242
outputPool.shutdown()
@@ -48,7 +48,8 @@ class MavenBuildTask extends DefaultTask {
4848
println "Well, there is an error. Press <Enter> to finish."
4949
System.in.read()
5050
}
51-
throw new RuntimeException("Error building ${output.command}")
51+
println "Error building ${output.command}"
52+
System.exit(output.code);
5253
} else {
5354
outputPool.submit {
5455
println "= SUCCESS (in ${output.timeSeconds}s): ${output.command}"

dxa-framework/dxa-common-api/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.sdl.dxa</groupId>
88
<artifactId>dxa-framework</artifactId>
9-
<version>1.6.0-SNAPSHOT</version>
9+
<version>1.6.0</version>
1010
</parent>
1111

1212
<artifactId>dxa-common-api</artifactId>
@@ -113,5 +113,10 @@
113113
<artifactId>hamcrest-library</artifactId>
114114
</dependency>
115115

116+
<dependency>
117+
<groupId>org.apache.httpcomponents</groupId>
118+
<artifactId>httpclient</artifactId>
119+
</dependency>
120+
116121
</dependencies>
117122
</project>

dxa-framework/dxa-common-api/src/main/java/com/sdl/dxa/DxaSpringInitialization.java

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import com.fasterxml.jackson.databind.SerializationFeature;
5+
import com.fasterxml.jackson.databind.ser.FilterProvider;
6+
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
57
import com.fasterxml.jackson.datatype.joda.JodaModule;
68
import com.sdl.webapp.common.api.contextengine.ContextEngine;
9+
import com.sdl.webapp.common.api.serialization.json.DxaViewModelJsonChainFilter;
710
import com.sdl.webapp.common.util.ApplicationContextHolder;
811
import com.sdl.webapp.common.util.InitializationUtils;
912
import com.sdl.webapp.common.views.AtomView;
@@ -17,6 +20,8 @@
1720
import org.springframework.context.annotation.ImportResource;
1821
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
1922
import org.springframework.core.Ordered;
23+
import org.springframework.core.env.MutablePropertySources;
24+
import org.springframework.core.env.PropertiesPropertySource;
2025
import org.springframework.core.io.ClassPathResource;
2126
import org.springframework.web.servlet.View;
2227
import org.springframework.web.servlet.ViewResolver;
@@ -27,6 +32,7 @@
2732

2833
import java.util.Locale;
2934

35+
import static com.sdl.webapp.common.api.serialization.json.DxaViewModelJsonChainFilter.FILTER_NAME;
3036
import static com.sdl.webapp.common.util.InitializationUtils.loadDxaProperties;
3137
import static com.sdl.webapp.common.util.InitializationUtils.traceBeanInitialization;
3238

@@ -56,7 +62,10 @@ public class DxaSpringInitialization {
5662
@Bean
5763
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
5864
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
59-
configurer.setProperties(InitializationUtils.loadDxaProperties());
65+
MutablePropertySources propertySources = new MutablePropertySources();
66+
propertySources.addLast(new PropertiesPropertySource("dxa.properties.merged", InitializationUtils.loadDxaProperties()));
67+
configurer.setPropertySources(propertySources);
68+
configurer.setNullValue("null");
6069
traceBeanInitialization(configurer);
6170
return configurer;
6271
}
@@ -73,31 +82,38 @@ public ViewResolver fallbackViewResolver() {
7382

7483
@Bean
7584
public ViewResolver dxaViewResolver() {
76-
UrlBasedViewResolver viewResolver = new UrlBasedViewResolver() {
85+
final UrlBasedViewResolver viewResolver = new UrlBasedViewResolver() {
7786

7887
@Override
7988
public View resolveViewName(String viewName, Locale locale) throws Exception {
80-
viewName = processDeviceFamily(viewName);
81-
82-
View overriddenView = super.resolveViewName(viewResolverOverride + "/" + viewName, locale);
83-
if (null != overriddenView) {
84-
log.debug("Found overridden view for {}, using it", viewName);
85-
return overriddenView;
89+
if (viewName.startsWith(FORWARD_URL_PREFIX) || viewName.startsWith(REDIRECT_URL_PREFIX)) {
90+
return super.resolveViewName(viewName, locale);
8691
}
8792

88-
return super.resolveViewName(viewName, locale);
93+
View view = tryViewNames(locale, processDeviceFamily(viewName), viewResolverOverride + "/" + viewName);
94+
95+
return view != null ? view : super.resolveViewName(viewName, locale);
96+
}
97+
98+
private View tryViewNames(Locale locale, String... viewNames) throws Exception {
99+
for (String viewName : viewNames) {
100+
View view = super.resolveViewName(viewName, locale);
101+
if (null != view) {
102+
log.debug("Found view name {}, using it", viewName);
103+
return view;
104+
}
105+
}
106+
return null;
89107
}
90108

91109
private String processDeviceFamily(String viewName) {
92110
ContextEngine contextEngine = ApplicationContextHolder.getContext().getBean(ContextEngine.class);
93111
String deviceFamily = contextEngine.getDeviceFamily();
94-
if (!"desktop".equals(deviceFamily)) {
95-
viewName = viewName + "." + deviceFamily;
96-
log.debug("ViewName is changed to {} and current device family is {}", viewName, deviceFamily);
97-
}
98-
return viewName;
112+
log.debug("Current device family is {}", deviceFamily);
113+
return "desktop".equals(deviceFamily) ? viewName : (viewName + "." + deviceFamily);
99114
}
100115
};
116+
101117
viewResolver.setViewClass(OptionalJstlView.class);
102118
viewResolver.setOrder(1);
103119
viewResolver.setPrefix(viewResolverPrefix);
@@ -140,11 +156,23 @@ public ObjectMapper objectMapper() {
140156
ObjectMapper objectMapper = new ObjectMapper();
141157
objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
142158
objectMapper.registerModule(new JodaModule());
159+
objectMapper.setFilters(jsonFilterProvider());
143160
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
144161
traceBeanInitialization(objectMapper);
145162
return objectMapper;
146163
}
147164

165+
@Bean
166+
public FilterProvider jsonFilterProvider() {
167+
SimpleFilterProvider provider = new SimpleFilterProvider();
168+
return provider.addFilter(FILTER_NAME, dxaViewModelJsonChainFilter());
169+
}
170+
171+
@Bean
172+
public DxaViewModelJsonChainFilter dxaViewModelJsonChainFilter() {
173+
return new DxaViewModelJsonChainFilter();
174+
}
175+
148176
private static class OptionalJstlView extends JstlView {
149177

150178
@Override

dxa-framework/dxa-common-api/src/main/java/com/sdl/dxa/DxaWebInitialization.java

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

33
import com.sdl.webapp.common.util.InitializationUtils;
44
import lombok.extern.slf4j.Slf4j;
5+
import org.springframework.core.Ordered;
56
import org.springframework.web.WebApplicationInitializer;
67
import org.springframework.web.filter.CharacterEncodingFilter;
78

@@ -21,7 +22,7 @@
2122
* deployment descriptor.</p>
2223
*/
2324
@Slf4j
24-
public class DxaWebInitialization implements WebApplicationInitializer {
25+
public class DxaWebInitialization implements WebApplicationInitializer, Ordered {
2526

2627
private static void registerWebServiceServlet(ServletContext servletContext) {
2728
ServletRegistration.Dynamic registration = registerServlet(servletContext,
@@ -59,4 +60,9 @@ public void onStartup(ServletContext servletContext) throws ServletException {
5960
log.info("Default DXA web application initialization complete.");
6061
}
6162
}
63+
64+
@Override
65+
public int getOrder() {
66+
return Ordered.HIGHEST_PRECEDENCE;
67+
}
6268
}

dxa-framework/dxa-common-api/src/main/java/com/sdl/webapp/common/api/model/AbstractViewModel.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.sdl.webapp.common.api.model;
22

3+
import com.fasterxml.jackson.annotation.JsonFilter;
34
import com.fasterxml.jackson.annotation.JsonIgnore;
45
import com.fasterxml.jackson.annotation.JsonProperty;
56
import com.sdl.webapp.common.api.formatters.support.FeedItem;
67
import com.sdl.webapp.common.api.formatters.support.FeedItemsProvider;
8+
import com.sdl.webapp.common.api.serialization.json.DxaViewModelJsonChainFilter;
9+
import com.sdl.webapp.common.api.serialization.json.annotation.JsonXpmAware;
710
import lombok.Data;
811
import lombok.NoArgsConstructor;
912
import lombok.NonNull;
@@ -23,6 +26,7 @@
2326
@Data
2427
@NoArgsConstructor
2528
@Slf4j
29+
@JsonFilter(DxaViewModelJsonChainFilter.FILTER_NAME)
2630
public abstract class AbstractViewModel implements ViewModel {
2731

2832
@JsonProperty("ExtensionData")
@@ -32,6 +36,7 @@ public abstract class AbstractViewModel implements ViewModel {
3236
@JsonIgnore
3337
private String htmlClasses;
3438

39+
@JsonXpmAware
3540
@JsonProperty("XpmMetadata")
3641
private Map<String, Object> xpmMetadata = new HashMap<>();
3742

dxa-framework/dxa-common-api/src/main/java/com/sdl/webapp/common/api/model/entity/AbstractEntityModel.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.sdl.webapp.common.api.model.AbstractViewModel;
1010
import com.sdl.webapp.common.api.model.EntityModel;
1111
import com.sdl.webapp.common.api.model.RichTextFragment;
12+
import com.sdl.webapp.common.api.serialization.json.annotation.JsonXpmAware;
1213
import com.sdl.webapp.common.exceptions.DxaException;
1314
import com.sdl.webapp.common.markup.html.HtmlElement;
1415
import com.sdl.webapp.common.util.ApplicationContextHolder;
@@ -35,6 +36,7 @@ public abstract class AbstractEntityModel extends AbstractViewModel implements E
3536
private String id;
3637

3738
@JsonProperty("XpmPropertyMetadata")
39+
@JsonXpmAware
3840
private Map<String, String> xpmPropertyMetadata;
3941

4042
public AbstractEntityModel(AbstractEntityModel other) {

0 commit comments

Comments
 (0)