Skip to content

Commit

Permalink
Fix bug 2992614, "XmlaOlap4jMember throws NPE on PARENT_ Properties".
Browse files Browse the repository at this point in the history
git-svn-id: https://olap4j.svn.sourceforge.net/svnroot/olap4j/trunk@311 c6a108a4-781c-0410-a6c6-c2d559e19af0
  • Loading branch information
julianhyde committed Apr 27, 2010
1 parent 041d119 commit 254931b
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/org/olap4j/driver/xmla/XmlaOlap4jMember.java
Original file line number Diff line number Diff line change
Expand Up @@ -243,9 +243,13 @@ static Object getPropertyValue(
case PARENT_COUNT:
return 1;
case PARENT_LEVEL:
return member.getParentMember().getLevel().getDepth();
return member.getParentMember() == null
? 0
: member.getParentMember().getLevel().getDepth();
case PARENT_UNIQUE_NAME:
return member.getParentMember().getUniqueName();
return member.getParentMember() == null
? null
: member.getParentMember().getUniqueName();
case SCHEMA_NAME:
return member.getCube().olap4jSchema.getName();
case VALUE:
Expand Down
24 changes: 24 additions & 0 deletions testsrc/org/olap4j/ConnectionTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -1738,6 +1738,9 @@ public void testMetadata() throws Exception {
assertNotNull(member);
Member member2 = cube.lookupMember("Product", "All Products", "Food");
assertEquals(member, member2);
final Member bread =
cube.lookupMember("Product", "Food", "Baked Goods", "Bread");

assertEquals("[Product].[Food]", member.getUniqueName());
assertEquals("Food", member.getName());
assertEquals(
Expand Down Expand Up @@ -1794,6 +1797,27 @@ public void testMetadata() throws Exception {
Olap4jUtil.enumSetOf(Property.TypeFlag.MEMBER), property.getType());
assertEquals(Datatype.STRING, property.getDatatype());

// PARENT_LEVEL property
final Property parentLevelProperty = propertyList.get("PARENT_LEVEL");
assertNotNull(parentLevelProperty);
assertEquals(
0, allProductsMember.getPropertyValue(parentLevelProperty));
assertEquals(0, member.getPropertyValue(parentLevelProperty));
assertEquals(2, bread.getPropertyValue(parentLevelProperty));

// PARENT_UNIQUE_NAME property
final Property parentUniqueNameProperty =
propertyList.get("PARENT_UNIQUE_NAME");
assertNotNull(parentUniqueNameProperty);
assertNull(
allProductsMember.getPropertyValue(parentUniqueNameProperty));
assertEquals(
"[Product].[All Products]",
member.getPropertyValue(parentUniqueNameProperty));
assertEquals(
"[Product].[Food].[Baked Goods]",
bread.getPropertyValue(parentUniqueNameProperty));

// Measures
int k = -1;
Set<String> measureNameSet = new HashSet<String>();
Expand Down

0 comments on commit 254931b

Please sign in to comment.