Skip to content

Commit 2515182

Browse files
committed
Merge remote-tracking branch 'Stash/release/2.0' into release/2.0
2 parents a4a7943 + 92a647b commit 2515182

File tree

7 files changed

+36
-7
lines changed

7 files changed

+36
-7
lines changed

Sdl.Web.DXAResolver/Resolver.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,17 @@ private List<Component> GatherLinkedComponents(Component component)
9696
}
9797
}
9898

99+
HashSet<TcmUri> linkedComponents = new HashSet<TcmUri>();
99100
foreach (var linkField in componentLinkFields)
100101
{
101102
if (linkField.Values != null)
102103
{
103-
components.AddRange(linkField.Values);
104+
foreach (var c in linkField.Values)
105+
{
106+
if (linkedComponents.Contains(c.Id)) continue;
107+
linkedComponents.Add(c.Id);
108+
components.Add(c);
109+
}
104110
}
105111
}
106112
return components;

Sdl.Web.Tridion.Templates.R2/Data/DataModelBuilderPipeline.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,16 @@ public DataModelBuilderPipeline(
9090
ILogger logger = null
9191
)
9292
{
93+
string[] typeNames = modelBuilderTypeNames.ToArray();
94+
if (typeNames == null || typeNames.Length == 0)
95+
throw new DxaException("No model builder type names specified.");
96+
9397
Session = renderedItem.ResolvedItem.Item.Session;
9498
RenderedItem = renderedItem;
9599
Settings = settings;
96100
Logger = logger ?? new TemplatingLoggerAdapter(TemplatingLogger.GetLogger(GetType()));
97101

98-
foreach (string modelBuilderTypeName in modelBuilderTypeNames)
102+
foreach (string modelBuilderTypeName in typeNames)
99103
{
100104
string qualifiedTypeName = modelBuilderTypeName.Contains(".") ? modelBuilderTypeName : $"Sdl.Web.Tridion.Templates.R2.Data.{modelBuilderTypeName}";
101105
Type modelBuilderType = Type.GetType(qualifiedTypeName, throwOnError: true);

Sdl.Web.Tridion.Templates.R2/Data/DefaultPageMetaModelBuilder.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ private void ExtractKeyValuePairs(XmlElement xmlElement, IDictionary<string, str
161161
// New field
162162
if (currentFieldName != null)
163163
{
164-
result.Add(currentFieldName, currentFieldValue);
164+
AddValue(result, currentFieldName, currentFieldValue);
165165
}
166166
currentFieldName = childElement.Name;
167167
currentFieldValue = fieldValue;
@@ -171,7 +171,19 @@ private void ExtractKeyValuePairs(XmlElement xmlElement, IDictionary<string, str
171171

172172
if (!string.IsNullOrEmpty(currentFieldValue))
173173
{
174-
result.Add(currentFieldName, currentFieldValue);
174+
AddValue(result, currentFieldName, currentFieldValue);
175+
}
176+
}
177+
178+
private static void AddValue(IDictionary<string, string> result, string name, string value)
179+
{
180+
if (result.ContainsKey(name))
181+
{
182+
result[name] = $"{result[name]}, {value}";
183+
}
184+
else
185+
{
186+
result.Add(name, value);
175187
}
176188
}
177189

Sdl.Web.Tridion.Templates.R2/Data/TargetGroups/AddTargetGroupsModelBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ public void BuildEntityModel(ref EntityModelData entityModelData, ComponentPrese
2121
List<Condition> conditions = new List<Condition>();
2222
foreach (var condition in cp.Conditions)
2323
{
24-
var mapped = MapConditions(condition.TargetGroup.Conditions);
25-
if (mapped == null || mapped.Count <= 0) continue;
26-
conditions.AddRange(mapped);
24+
var mapped = MapTargetGroupCondition(condition);
25+
if (mapped == null) continue;
26+
conditions.Add(mapped);
2727
}
2828
if (conditions.Count > 0)
2929
{

Sdl.Web.Tridion.Templates.R2/Templates/GenerateEntityModel.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ public override void Transform(Engine engine, Package package)
5353
DataModelBuilderPipeline modelBuilderPipeline = new DataModelBuilderPipeline(renderedItem, settings, modelBuilderTypeNames);
5454
EntityModelData entityModel = modelBuilderPipeline.CreateEntityModel(component, ct, includeComponentTemplateData);
5555
OutputJson = JsonSerialize(entityModel, IsPreview, DataModelBinder.SerializerSettings);
56+
if (string.IsNullOrEmpty(OutputJson))
57+
throw new DxaException("Output Json is empty!");
5658
}
5759
catch (Exception ex)
5860
{

Sdl.Web.Tridion.Templates.R2/Templates/GeneratePageModel.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public override void Transform(Engine engine, Package package)
4646
DataModelBuilderPipeline modelBuilderPipeline = new DataModelBuilderPipeline(renderedItem, settings, modelBuilderTypeNames);
4747
PageModelData pageModel = modelBuilderPipeline.CreatePageModel(page);
4848
OutputJson = JsonSerialize(pageModel, IsPreview, DataModelBinder.SerializerSettings);
49+
if (string.IsNullOrEmpty(OutputJson))
50+
throw new DxaException("Output Json is empty!");
4951
}
5052
catch (Exception ex)
5153
{

Sdl.Web.Tridion.Templates/Common/TemplateBase.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,9 @@ protected void OutputSummary(string name, IEnumerable<string> files)
176176
summaries.Add(summary);
177177

178178
string summariesJson = JsonSerialize(summaries, IsPreview);
179+
if (string.IsNullOrEmpty(summariesJson))
180+
throw new DxaException("Output Json should not be empty.");
181+
179182
outputItem = Package.CreateStringItem(ContentType.Text, summariesJson);
180183
Package.PushItem(Package.OutputName, outputItem);
181184
}

0 commit comments

Comments
 (0)