Skip to content
Snippets Groups Projects
Commit 6c8a02d1 authored by buczekp's avatar buczekp
Browse files

[LMS-2104] fixed accessing node in virtual data set by relative path

SVN: 21371
parent 8a06ce3b
No related branches found
No related tags found
No related merge requests found
...@@ -51,7 +51,7 @@ public class VirtualHierarchicalContent implements IHierarchicalContent ...@@ -51,7 +51,7 @@ public class VirtualHierarchicalContent implements IHierarchicalContent
{ {
rootNode = mergeNodes(new INodeProvider() rootNode = mergeNodes(new INodeProvider()
{ {
public IHierarchicalContentNode getNode(IHierarchicalContent content) public IHierarchicalContentNode tryGetNode(IHierarchicalContent content)
{ {
return content.getRootNode(); return content.getRootNode();
} }
...@@ -65,9 +65,15 @@ public class VirtualHierarchicalContent implements IHierarchicalContent ...@@ -65,9 +65,15 @@ public class VirtualHierarchicalContent implements IHierarchicalContent
{ {
return mergeNodes(new INodeProvider() return mergeNodes(new INodeProvider()
{ {
public IHierarchicalContentNode getNode(IHierarchicalContent content) public IHierarchicalContentNode tryGetNode(IHierarchicalContent content)
{ {
return content.getNode(relativePath); try
{
return content.getNode(relativePath);
} catch (IllegalArgumentException ex)
{
return null;
}
} }
}); });
} }
...@@ -108,8 +114,11 @@ public class VirtualHierarchicalContent implements IHierarchicalContent ...@@ -108,8 +114,11 @@ public class VirtualHierarchicalContent implements IHierarchicalContent
IVirtualNodesMerger merger = createNodesMerger(); IVirtualNodesMerger merger = createNodesMerger();
for (IHierarchicalContent component : components) for (IHierarchicalContent component : components)
{ {
IHierarchicalContentNode componentNode = provider.getNode(component); IHierarchicalContentNode componentNode = provider.tryGetNode(component);
merger.addNode(componentNode); if (componentNode != null)
{
merger.addNode(componentNode);
}
} }
return merger.createMergedNode(); return merger.createMergedNode();
} }
...@@ -137,7 +146,7 @@ public class VirtualHierarchicalContent implements IHierarchicalContent ...@@ -137,7 +146,7 @@ public class VirtualHierarchicalContent implements IHierarchicalContent
interface INodeProvider interface INodeProvider
{ {
IHierarchicalContentNode getNode(IHierarchicalContent content); IHierarchicalContentNode tryGetNode(IHierarchicalContent content);
} }
interface INodeListProvider interface INodeListProvider
...@@ -192,16 +201,15 @@ public class VirtualHierarchicalContent implements IHierarchicalContent ...@@ -192,16 +201,15 @@ public class VirtualHierarchicalContent implements IHierarchicalContent
return node; return node;
} }
} }
throw new IllegalStateException("resource doesn't exist"); throw new IllegalStateException("Resource is unavailable.");
} }
public IHierarchicalContentNode createMergedNode() public IHierarchicalContentNode createMergedNode()
{ {
if (nodes.isEmpty()) if (nodes.isEmpty())
{ {
throw new IllegalStateException("no nodes to merge"); throw new IllegalStateException("Resource doesn't exist.");
} }
// TODO caching
return new IHierarchicalContentNode() return new IHierarchicalContentNode()
{ {
...@@ -287,10 +295,12 @@ public class VirtualHierarchicalContent implements IHierarchicalContent ...@@ -287,10 +295,12 @@ public class VirtualHierarchicalContent implements IHierarchicalContent
{ {
for (IHierarchicalContentNode node : nodes) for (IHierarchicalContentNode node : nodes)
{ {
IVirtualNodesMerger merger = mergers.get(node.getRelativePath()); String relativePath = node.getRelativePath();
IVirtualNodesMerger merger = mergers.get(relativePath);
if (merger == null) if (merger == null)
{ {
merger = createNodesMerger(); merger = createNodesMerger();
mergers.put(relativePath, merger);
} }
merger.addNode(node); merger.addNode(node);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment