Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

Switch to Threaded View
Accumulo >> mail # user >> Setting authorizations in code


Copy link to this message
-
Re: Setting authorizations in code
Benjamin,

What's the implementation of the getAuthorizations method called in
the getScanner method? Is the call to setAuthorizations on the _db
object the same setAuthorizations method you provided?

The full context of what you're doing would certainly be helpful.
Also, what version of Accumulo are you using?

On Mon, Sep 23, 2013 at 9:24 AM, Benjamin Parrish
<[EMAIL PROTECTED]> wrote:
> I am trying to set authorizations in code, but the scanner is always
> returning the previous fetch of data using the previous authorizations.  I
> am setting the Authorizations on the Connector, and then I get a new Scanner
> after setting the Authorizations.
>
>
> public Authorizations setAuthorizations(SecurityGroup[] authorizations) {
> List<byte[]> authorizationList = new ArrayList<byte[]>();
>
>
> for (SecurityGroup auth : authorizations) {
> String groupString = Security.getName(auth);
>
>
> byte[] groupBytes = groupString.getBytes();
>
>
> authorizationList.add(groupBytes);
> }
>
>
> Authorizations auths = new Authorizations(authorizationList);
>
>
> try {
> connector.securityOperations().changeUserAuthorizations(_loggedInUser,
> auths);
>
>
> return auths;
> } catch (AccumuloException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> } catch (AccumuloSecurityException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
>
> return null;
> }
>
>
> public Scanner getScanner() {
>         try {
>         Authorizations auths = this.getAuthorizations();
>
>
>
> return connector.createScanner(TABLE, auths);
> } catch (TableNotFoundException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
>
>
>         return null;
> }
>
>
> @Override
> public Collection<Plate> filter(SecurityGroup[] authorizations, String
> regEx) {
> _db.setAuthorizations(authorizations);
>
>
> Scanner scanner = _db.getScanner();
>
> String valueRegex = (regEx.equals("")) ? ".*" : regEx + ".*";
>
>
>
> scanner.fetchColumn(Plate.COLUMN_FAMILY, new Text(Plate.PLATE_QUALIFIER));
>
>
>
> IteratorSetting iter = new IteratorSetting(1, "regexfilter",
> RegExFilter.class);
>
>
>
>         iter.addOption(RegExFilter.VALUE_REGEX, valueRegex);
>
>
>
>         scanner.addScanIterator(iter);
>
>
> Iterator<Entry<Key, Value>> it = scanner.iterator();
>
>
> Map<Text, Plate> map = new HashMap<Text, Plate>();
>
>
>
>     while (it.hasNext()) {
>     Entry<Key,Value> entry = it.next();
>
>
>
>     Text rowId = entry.getKey().getRow();
>
>
>
>     if (map.containsKey(rowId)) {
>     continue;
>     }
>
>
>
>     Plate plate = new Plate(Plate.getMap(rowId, scanner));
>
>
>
>     map.put(rowId, plate);
>     }
>
>
> return map.values();
> }
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB