Skip to content

Commit 9d48fa1

Browse files
committed
Merge remote-tracking branch 'Stash/develop' into release/2.2
2 parents 5b65081 + 8dd6f67 commit 9d48fa1

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
@@ -97,11 +97,17 @@ private List<Component> GatherLinkedComponents(Component component)
9797
}
9898
}
9999

100+
HashSet<TcmUri> linkedComponents = new HashSet<TcmUri>();
100101
foreach (var linkField in componentLinkFields)
101102
{
102103
if (linkField.Values != null)
103104
{
104-
components.AddRange(linkField.Values);
105+
foreach (var c in linkField.Values)
106+
{
107+
if(linkedComponents.Contains(c.Id)) continue;
108+
linkedComponents.Add(c.Id);
109+
components.Add(c);
110+
}
105111
}
106112
}
107113
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
@@ -167,7 +167,7 @@ private void ExtractKeyValuePairs(XmlElement xmlElement, IDictionary<string, str
167167
// New field
168168
if (currentFieldName != null)
169169
{
170-
result.Add(currentFieldName, currentFieldValue);
170+
AddValue(result, currentFieldName, currentFieldValue);
171171
}
172172
currentFieldName = childElement.Name;
173173
currentFieldValue = fieldValue;
@@ -177,7 +177,19 @@ private void ExtractKeyValuePairs(XmlElement xmlElement, IDictionary<string, str
177177

178178
if (!string.IsNullOrEmpty(currentFieldValue))
179179
{
180-
result.Add(currentFieldName, currentFieldValue);
180+
AddValue(result, currentFieldName, currentFieldValue);
181+
}
182+
}
183+
184+
private static void AddValue(IDictionary<string, string> result, string name, string value)
185+
{
186+
if (result.ContainsKey(name))
187+
{
188+
result[name] = $"{result[name]}, {value}";
189+
}
190+
else
191+
{
192+
result.Add(name, value);
181193
}
182194
}
183195

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: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ 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+
57+
if(string.IsNullOrEmpty(OutputJson))
58+
throw new DxaException("Output Json is empty!");
5659
}
5760
catch (Exception ex)
5861
{

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: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ 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.");
179181
outputItem = Package.CreateStringItem(ContentType.Text, summariesJson);
180182
Package.PushItem(Package.OutputName, outputItem);
181183
}

0 commit comments

Comments
 (0)