You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2013/12/05 00:59:28 UTC
[47/50] [abbrv] git commit: ACCUMULO-1859 update namepace config w/
new getPropertiesMethod
ACCUMULO-1859 update namepace config w/ new getPropertiesMethod
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/5b791b16
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/5b791b16
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/5b791b16
Branch: refs/heads/master
Commit: 5b791b166b9190285bfb3ba3d45c3de0dbb93af1
Parents: 725d821
Author: Keith Turner <kt...@apache.org>
Authored: Thu Nov 14 14:20:33 2013 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Wed Dec 4 18:46:11 2013 -0500
----------------------------------------------------------------------
.../conf/TableNamespaceConfiguration.java | 76 +++++++++++---------
1 file changed, 43 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/5b791b16/server/base/src/main/java/org/apache/accumulo/server/conf/TableNamespaceConfiguration.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/conf/TableNamespaceConfiguration.java b/server/base/src/main/java/org/apache/accumulo/server/conf/TableNamespaceConfiguration.java
index b4e9598..74621a3 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/conf/TableNamespaceConfiguration.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/conf/TableNamespaceConfiguration.java
@@ -19,11 +19,9 @@ package org.apache.accumulo.server.conf;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
-import java.util.Map.Entry;
+import java.util.Map;
import java.util.Set;
-import java.util.TreeMap;
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.Instance;
@@ -54,19 +52,20 @@ public class TableNamespaceConfiguration extends AccumuloConfiguration {
@Override
public String get(Property property) {
String key = property.getKey();
- String value = get(key);
+ String value = get(getPropCache(), key);
if (value == null || !property.getType().isValidFormat(value)) {
if (value != null)
log.error("Using default value for " + key + " due to improperly formatted " + property.getType() + ": " + value);
- value = parent.get(property);
+ if (!isIterConst(property.getKey()))
+ value = parent.get(property);
}
return value;
}
- private String get(String key) {
+ private String get(ZooCache zc, String key) {
String zPath = ZooUtil.getRoot(inst.getInstanceID()) + Constants.ZNAMESPACES + "/" + getNamespaceId() + Constants.ZNAMESPACE_CONF + "/" + key;
- byte[] v = getPropCache().get(zPath);
+ byte[] v = zc.get(zPath);
String value = null;
if (v != null)
value = new String(v, Constants.UTF8);
@@ -83,33 +82,47 @@ public class TableNamespaceConfiguration extends AccumuloConfiguration {
return propCache;
}
- @Override
- public Iterator<Entry<String,String>> iterator() {
- TreeMap<String,String> entries = new TreeMap<String,String>();
-
- for (Entry<String,String> parentEntry : parent) {
- if (this.namespaceId.equals(Constants.SYSTEM_TABLE_NAMESPACE_ID)) {
- // exclude system iterators/constraints from the system namespace
- // so they don't affect the metadata or root tables.
- if (!isIterConst(parentEntry)) {
- entries.put(parentEntry.getKey(), parentEntry.getValue());
- }
- } else {
- entries.put(parentEntry.getKey(), parentEntry.getValue());
- }
+ private class SystemNamespaceFilter implements PropertyFilter {
+
+ private PropertyFilter userFilter;
+
+ SystemNamespaceFilter(PropertyFilter userFilter) {
+ this.userFilter = userFilter;
}
- List<String> children = getPropCache().getChildren(
- ZooUtil.getRoot(inst.getInstanceID()) + Constants.ZNAMESPACES + "/" + getNamespaceId() + Constants.ZNAMESPACE_CONF);
+ @Override
+ public boolean accept(String key) {
+ if (isIterConst(key))
+ return false;
+ return userFilter.accept(key);
+ }
+
+ }
+
+ @Override
+ public void getProperties(Map<String,String> props, PropertyFilter filter) {
+
+ PropertyFilter parentFilter = filter;
+
+ // exclude system iterators/constraints from the system namespace
+ // so they don't affect the metadata or root tables.
+ if (this.namespaceId.equals(Constants.SYSTEM_TABLE_NAMESPACE_ID))
+ parentFilter = new SystemNamespaceFilter(filter);
+
+ parent.getProperties(props, parentFilter);
+
+ ZooCache zc = getPropCache();
+
+ List<String> children = zc.getChildren(ZooUtil.getRoot(inst.getInstanceID()) + Constants.ZNAMESPACES + "/" + getNamespaceId() + Constants.ZNAMESPACE_CONF);
if (children != null) {
for (String child : children) {
- String value = get(child);
- if (child != null && value != null)
- entries.put(child, value);
+ if (child != null && filter.accept(child)) {
+ String value = get(zc, child);
+ if (value != null)
+ props.put(child, value);
+ }
}
}
-
- return entries.entrySet().iterator();
}
protected String getNamespaceId() {
@@ -153,10 +166,7 @@ public class TableNamespaceConfiguration extends AccumuloConfiguration {
co.propertiesChanged();
}
- protected boolean isIterConst(Entry<String,String> e) {
- if (e.getKey().startsWith(Property.TABLE_ITERATOR_PREFIX.getKey()) || e.getKey().startsWith(Property.TABLE_CONSTRAINT_PREFIX.getKey())) {
- return true;
- }
- return false;
+ protected boolean isIterConst(String key) {
+ return key.startsWith(Property.TABLE_ITERATOR_PREFIX.getKey()) || key.startsWith(Property.TABLE_CONSTRAINT_PREFIX.getKey());
}
}