static void setTableOwner(DataSource ds, String tableName, Subject s) { IdentityManager im = AuthenticationUtil.getIdentityManager(); if (im == null) { throw new RuntimeException("CONFIG: no IdentityManager implementation available"); } KeyValue kv = new KeyValue(tableName + ".owner"); KeyValueDAO dao = new KeyValueDAO(ds, null, "tap_schema"); if (s == null) { dao.delete(kv.getName()); log.debug("setOwner: " + kv.getName() + " deleted"); } else { kv.value = im.toOwner(s).toString(); dao.put(kv); log.debug("setOwner: " + kv.getName() + " = " + kv.value); } }
static Subject getOwner(DataSource ds, String name) { try { KeyValueDAO dao = new KeyValueDAO(ds, null, "tap_schema"); String key = name + ".owner"; KeyValue kv = dao.get(key); if (kv == null || kv.value == null) { return null; } IdentityManager im = AuthenticationUtil.getIdentityManager(); if (im == null) { throw new RuntimeException("CONFIG: no IdentityManager implementation available"); } Subject s = im.toSubject(kv.value); log.debug("object: " + name + " owner: " + s); return s; } catch (RuntimeException rethrow) { throw rethrow; } catch (Exception ex) { throw new RuntimeException("CONFIG: failed to find owner for object " + name, ex); } }
Subject s = identManager.toSubject(ret.appData); ret.setOwnerID(identManager.toOwnerString(s));
job.appData = identManager.toOwner(owner); prof.checkpoint("IdentityManager.toOwner"); job.setOwnerID( identManager.toOwnerString(owner) ); prof.checkpoint("IdentityManager.toOwnerString"); return job;
int ownerType = identManager.getOwnerType(); if (job.appData != null)
public Job put(Job job) { expectNotNull("job", job); AccessControlContext acContext = AccessController.getContext(); Subject caller = Subject.getSubject(acContext); String ownerID = null; if (caller != null) ownerID = identityManager.toOwnerString(caller); job.setOwnerID(ownerID); if (job.getID() == null) JobPersistenceUtil.assignID(job, idGenerator.getID()); Job keep = JobPersistenceUtil.deepCopy(job); if (ownerID != null) keep.ownerSubject = caller; synchronized(jobs) { jobs.put(keep.getID(), keep); } return job; }
/** * Iterator over jobs owned by the specified owner. * * @param subject * @param phases Show only these phases * @param after Only show jobs after this time * @param last Show the last <i>last</i> jobs, ordererd by startTime ascending * @return job iterator */ public Iterator<JobRef> iterator(Subject subject, String appname, List<ExecutionPhase> phases, Date after, Integer last) throws TransientException, JobPersistenceException { Object owner = identManager.toOwner(subject); log.debug("iterator(" + owner + ")"); try { JobListIterator jobListIterator = new JobListIterator(jdbc, owner, appname, phases, after, last); prof.checkpoint("JobListStatementCreator"); return jobListIterator; } catch(Throwable t) { if (DBUtil.isTransientDBException(t)) throw new TransientException("failed to get job list for owner: " + owner, t); else throw new JobPersistenceException("failed to get job list for owner: " + owner, t); } }