Skip to content

Commit

Permalink
JUnit tests for ResourceDao.findTopLevelResources()
Browse files Browse the repository at this point in the history
There are 6 possible scenarios:

1) Discovered nodes only with storeByForeignSource enabled
2) Discovered nodes only with storeByForeignSource disabled
3) Requisitioned nodes only with storeByForeignSource enabled
4) Requisitioned nodes only with storeByForeignSource disabled
5) Hybird environment with storeByForeignSource enabled
6) Hybird environment with storeByForeignSource disabled

A hybrid environment means, an installation with discovered nodes (i.e.
not part of a requisition) and requisitioned nodes at the same time.

Note: a small enhancement has been added to NodeSourceResourceType to
drastically reduce the amount of calls using NodeDao.
  • Loading branch information
agalue committed May 8, 2014
1 parent 72c67d6 commit f471570
Show file tree
Hide file tree
Showing 2 changed files with 386 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.opennms.netmgt.dao.NodeDao;
import org.opennms.netmgt.dao.ResourceDao;
import org.opennms.netmgt.model.OnmsAttribute;
import org.opennms.netmgt.model.OnmsNode;
import org.opennms.netmgt.model.OnmsResource;
import org.opennms.netmgt.model.OnmsResourceType;

Expand Down Expand Up @@ -113,9 +114,7 @@ public boolean isResourceTypeOnDomain(String domain) {

/** {@inheritDoc} */
public String getLinkForResource(OnmsResource resource) {
String ident[] = resource.getName().split(":");
int nodeId = m_nodeDao.findByForeignId(ident[0], ident[1]).getId();
return "element/node.jsp?node=" + nodeId;
return "element/node.jsp?node=" + resource.getName();
}

/**
Expand All @@ -126,8 +125,10 @@ public String getLinkForResource(OnmsResource resource) {
*/
public OnmsResource createChildResource(String nodeSource) {
String[] ident = nodeSource.split(":");
String label = ident[0] + ":" + m_nodeDao.findByForeignId(ident[0], ident[1]).getLabel();
NodeSourceChildResourceLoader loader = new NodeSourceChildResourceLoader(nodeSource);
OnmsNode node = m_nodeDao.findByForeignId(ident[0], ident[1]);

String label = ident[0] + ":" + node.getLabel();
NodeSourceChildResourceLoader loader = new NodeSourceChildResourceLoader(nodeSource, node.getId());
OnmsResource resource = new OnmsResource(nodeSource, label, this, s_emptyAttributeSet, new LazyList<OnmsResource>(loader));
loader.setParent(resource);

Expand All @@ -136,15 +137,12 @@ public OnmsResource createChildResource(String nodeSource) {

public class NodeSourceChildResourceLoader implements LazyList.Loader<OnmsResource> {
private String m_nodeSource;
private int m_nodeId;
private OnmsResource m_parent;

private int nodeSourceToNodeId() {
String[] ident = m_nodeSource.split(":");
return m_nodeDao.findByForeignId(ident[0], ident[1]).getId();
}

public NodeSourceChildResourceLoader(String nodeSource) {

public NodeSourceChildResourceLoader(String nodeSource, int nodeId) {
m_nodeSource = nodeSource;
m_nodeId = nodeId;
}

public void setParent(OnmsResource parent) {
Expand All @@ -155,7 +153,7 @@ public List<OnmsResource> load() {
List<OnmsResource> children = new LinkedList<OnmsResource>();

for (OnmsResourceType resourceType : getResourceTypesForNodeSource(m_nodeSource)) {
for (OnmsResource resource : resourceType.getResourcesForNodeSource(m_nodeSource, nodeSourceToNodeId())) {
for (OnmsResource resource : resourceType.getResourcesForNodeSource(m_nodeSource, m_nodeId)) {
resource.setParent(m_parent);
children.add(resource);
log().debug("load: adding resource " + resource.toString());
Expand All @@ -168,7 +166,7 @@ public List<OnmsResource> load() {
private Collection<OnmsResourceType> getResourceTypesForNodeSource(String nodeSource) {
Collection<OnmsResourceType> resourceTypes = new LinkedList<OnmsResourceType>();
for (OnmsResourceType resourceType : m_resourceDao.getResourceTypes()) {
if (resourceType.isResourceTypeOnNodeSource(nodeSource, nodeSourceToNodeId())) {
if (resourceType.isResourceTypeOnNodeSource(nodeSource, m_nodeId)) {
resourceTypes.add(resourceType);
log().debug("getResourceTypesForNodeSource: adding type " + resourceType.getName());
}
Expand Down
Loading

0 comments on commit f471570

Please sign in to comment.