From: <go...@us...> - 2012-09-27 20:29:55
|
Revision: 14427 http://unicore.svn.sourceforge.net/unicore/?rev=14427&view=rev Author: golbi Date: 2012-09-27 20:29:46 +0000 (Thu, 27 Sep 2012) Log Message: ----------- Use MyBatis mappers. Fix MyBatis cache issue: do not modify returned lists. Check SAML query for duplicated attributes. Modified Paths: -------------- uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBApps.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBAttributeTypes.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBAuthz.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBEntities.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBEntitiesCache.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBGroupResolver.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBGroups.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBIdentityTypes.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBNotification.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/engine/PersistentIdManager.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/engine/VOAuthorizationModule.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/registration/UVOSEMIRClient.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/saml/SAMLAttributeQueryUtil.java uvos/uvos-server/trunk/src/main/resources/pl/edu/icm/unicore/uvos/mybatis/Applications.xml uvos/uvos-server/trunk/src/main/resources/pl/edu/icm/unicore/uvos/mybatis/Authz.xml uvos/uvos-server/trunk/src/main/resources/pl/edu/icm/unicore/uvos/mybatis/Group.xml uvos/uvos-server/trunk/src/main/resources/pl/edu/icm/unicore/uvos/mybatis/Identity.xml uvos/uvos-server/trunk/src/main/resources/pl/edu/icm/unicore/uvos/mybatis/Notifications.xml uvos/uvos-server/trunk/src/main/resources/pl/edu/icm/unicore/uvos/mybatis/Types.xml uvos/uvos-server/trunk/src/test/java/pl/edu/icm/unicore/uvos/tests/functional/AttributeFunctionalTest.java Added Paths: ----------- uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/mapper/ uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/mapper/ApplicationsMapper.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/mapper/AuthzMapper.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/mapper/EntityMapper.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/mapper/GroupMapper.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/mapper/NotificationsMapper.java uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/mapper/TypesMapper.java Modified: uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBApps.java =================================================================== --- uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBApps.java 2012-09-27 16:38:36 UTC (rev 14426) +++ uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBApps.java 2012-09-27 20:29:46 UTC (rev 14427) @@ -30,6 +30,8 @@ import pl.edu.icm.unicore.uvos.api.exceptions.InvalidValueException; import pl.edu.icm.unicore.uvos.api.exceptions.UnsupportedTypeException; import pl.edu.icm.unicore.uvos.api.exceptions.VOApplicationException; +import pl.edu.icm.unicore.uvos.db.mapper.ApplicationsMapper; +import pl.edu.icm.unicore.uvos.db.mapper.EntityMapper; import pl.edu.icm.unicore.uvos.model.GroupBean; import pl.edu.icm.unicore.uvos.model.IdentityBean; import pl.edu.icm.unicore.uvos.model.VOApplicationBean; @@ -58,6 +60,7 @@ public synchronized void addAppForm(VOApplicationForm toAdd, SqlSession sqlMap) throws InternalException, VOApplicationException { + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); VOApplicationFormBean b = new VOApplicationFormBean(); b.setAgreement(toAdd.getAgreement()); b.setConstraints(toAdd.getConstraints()); @@ -67,7 +70,7 @@ { int baseGroupId = groupResolver.resolveGroup(toAdd.getBaseGroup(), sqlMap).getId(); b.setBaseGroup(baseGroupId); - sqlMap.insert("insertAppForm", b); + mapper.insertAppForm(b); } catch(PersistenceException e) { log.error("DB error: Can't add a new application form " + toAdd + @@ -84,6 +87,7 @@ public synchronized void updateAppForm(VOApplicationForm toUpdate, int baseGroup, SqlSession sqlMap) throws InternalException { + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); VOApplicationFormBean b = new VOApplicationFormBean(); b.setAgreement(toUpdate.getAgreement()); b.setConstraints(toUpdate.getConstraints()); @@ -93,7 +97,7 @@ b.setId(toUpdate.getId()); try { - sqlMap.update("updateAppForm", b); + mapper.updateAppForm(b); } catch(PersistenceException e) { log.error("DB error: Can't update an application form with id " @@ -108,10 +112,10 @@ public synchronized VOApplicationForm resolveAppForm(int id, SqlSession sqlMap) throws InternalException, VOApplicationException { + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); try { - VOApplicationFormBean b = (VOApplicationFormBean) - sqlMap.selectOne("resolveAppForm", id); + VOApplicationFormBean b = mapper.resolveAppForm(id); if (b == null) throw new VOApplicationException("Application form with id " + id + " isn't known."); @@ -144,11 +148,11 @@ public synchronized GroupBean getAppFormGroup(int id, SqlSession sqlMap) throws InternalException, VOApplicationException { + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); int gid; try { - VOApplicationFormBean b = (VOApplicationFormBean) - sqlMap.selectOne("resolveAppForm", id); + VOApplicationFormBean b = mapper.resolveAppForm(id); if (b == null) throw new VOApplicationException("Application form with id " + id + " isn't known."); @@ -174,9 +178,10 @@ public synchronized void removeAppForm(int toRemove, SqlSession sqlMap) throws InternalException { + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); try { - sqlMap.delete("deleteAppForm", toRemove); + mapper.deleteAppForm(toRemove); } catch(PersistenceException e) { log.error("DB error: Can't remove an application form with id " @@ -191,15 +196,15 @@ public synchronized List<VOApplicationForm> listAppForms(SqlSession sqlMap) throws InternalException { - + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); try { - List raw = sqlMap.selectList("getAppForms"); + List<VOApplicationFormBean> raw = mapper.getAppForms(); ArrayList<VOApplicationForm> ret = new ArrayList<VOApplicationForm>(); for (int i=0; i<raw.size(); i++) { - VOApplicationFormBean b = (VOApplicationFormBean) raw.get(i); + VOApplicationFormBean b = raw.get(i); Group g = groupResolver.resolveGroupBean( groupResolver.resolveGroup4Id(b.getBaseGroup(), sqlMap), sqlMap); VOApplicationForm af = new VOApplicationForm( @@ -230,6 +235,7 @@ public synchronized void addApplication(VOApplication toAdd, SqlSession sqlMap) throws InternalException, UnsupportedTypeException, VOApplicationException { + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); VOApplicationBean b = new VOApplicationBean(); Identity idToAdd = toAdd.getIdentity(); try @@ -267,7 +273,7 @@ b.setEquivalentIdentityId(-1); try { - sqlMap.insert("insertApp", b); + mapper.insertApp(b); } catch(PersistenceException e) { log.error("DB error: Can't add a new application " + toAdd + @@ -281,13 +287,14 @@ SqlSession sqlMap) throws InternalException { + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); VOApplicationBean b = new VOApplicationBean(); b.setId(id); b.setStatus(status.toString()); b.setAdminNotes(adminNotes); try { - sqlMap.update("updateApp", b); + mapper.updateApp(b); } catch(PersistenceException e) { log.error("DB error: Can't update an application " + id + @@ -300,9 +307,10 @@ public synchronized void removeApplication(int id, SqlSession sqlMap) throws InternalException, VOApplicationException { + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); try { - sqlMap.delete("deleteApp", id); + mapper.deleteApp(id); } catch (PersistenceException e) { log.error("DB error: Can't remove application with id " + id + @@ -315,10 +323,10 @@ public synchronized VOApplication resolveApplication(int id, SqlSession sqlMap) throws InternalException, VOApplicationException { + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); try { - VOApplicationBean bean = (VOApplicationBean) - sqlMap.selectOne("getAppById", id); + VOApplicationBean bean = mapper.getAppById(id); if (bean == null) throw new VOApplicationException("Application with id " + id + " doesn't exist"); @@ -336,21 +344,22 @@ String status, SqlSession sqlMap) throws InternalException { - List rawRet; + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); + List<VOApplicationBean> rawRet; try { if (formId == null && status == null) - rawRet = sqlMap.selectList("getAllApps"); + rawRet = mapper.getAllApps(); else if (formId == null) - rawRet = sqlMap.selectList("getAppByStatus", status); + rawRet = mapper.getAppByStatus(status); else if (status == null) - rawRet = sqlMap.selectList("getAppByFormId", formId); + rawRet = mapper.getAppByFormId(formId); else { VOApplicationBean b = new VOApplicationBean(); b.setFormId(formId); b.setStatus(status); - rawRet = sqlMap.selectList("getApps", b); + rawRet = mapper.getApps(b); } } catch(PersistenceException e) { @@ -361,11 +370,8 @@ } List<VOApplication> voApps = new ArrayList<VOApplication>(); - for (int i=0; i<rawRet.size(); i++) - { - VOApplicationBean b = (VOApplicationBean) rawRet.get(i); + for (VOApplicationBean b: rawRet) voApps.add(mapApplicationBean(b, sqlMap)); - } return voApps; } @@ -381,6 +387,7 @@ { throw new InternalException("Can't create identity from application: " + e1.toString(), e1); } + EntityMapper entity = sqlMap.getMapper(EntityMapper.class); id.setAuthnData(b.getAuthnData()); ExtendedIdentity equivalent = null; if (b.getEquivalentIdentityId() != -1) @@ -388,7 +395,7 @@ IdentityBean ib; try { - ib = entitiesCache.getIdentity4Id(b.getEquivalentIdentityId(), sqlMap); + ib = entitiesCache.getIdentity4Id(b.getEquivalentIdentityId(), entity); equivalent = IdentityFactory.createExtendedIdentity(identityTypes.getIdentityType4Id( ib.getTypeId()), ib.getValue()); } catch (Exception e) @@ -411,11 +418,12 @@ return ap; } - public synchronized List getCSRApplications(SqlSession sqlMap) throws InternalException + public synchronized List<VOApplicationBean> getCSRApplications(SqlSession sqlMap) throws InternalException { try { - return sqlMap.selectList("getCSRApps"); + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); + return mapper.getCSRApps(); } catch(PersistenceException e) { log.error("DB error: Can't get applications list." + @@ -429,6 +437,7 @@ boolean isCSR, String identityValue, SqlSession sqlMap) throws InternalException { + ApplicationsMapper mapper = sqlMap.getMapper(ApplicationsMapper.class); VOApplicationBean b = new VOApplicationBean(); b.setId(id); b.setStatus(status.toString()); @@ -436,7 +445,7 @@ b.setIsCSR(isCSR ? 1 : 0); try { - sqlMap.update("updateCSRApp", b); + mapper.updateCSRApp(b); } catch(PersistenceException e) { log.error("DB error: Can't update a CSR application " + id + Modified: uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBAttributeTypes.java =================================================================== --- uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBAttributeTypes.java 2012-09-27 16:38:36 UTC (rev 14426) +++ uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBAttributeTypes.java 2012-09-27 20:29:46 UTC (rev 14427) @@ -24,6 +24,7 @@ import pl.edu.icm.unicore.uvos.api.AttributeType; import pl.edu.icm.unicore.uvos.api.exceptions.InternalException; import pl.edu.icm.unicore.uvos.api.exceptions.UnsupportedTypeException; +import pl.edu.icm.unicore.uvos.db.mapper.TypesMapper; import pl.edu.icm.unicore.uvos.model.AttributeBean; import pl.edu.icm.unicore.uvos.model.AttributeTypeBean; import pl.edu.icm.unicore.uvos.util.Configuration; @@ -48,12 +49,12 @@ attributeTypes2 = new Hashtable<Integer, String>(); attributeTypesL = new Vector<AttributeType>(); SqlSession sqlMap = db.getSqlSession(); + TypesMapper mapper = sqlMap.getMapper(TypesMapper.class); try { - List<?> attrTypes = sqlMap.selectList("getAllAttributeTypes"); - for (Object o: attrTypes) + List<AttributeTypeBean> attrTypes = mapper.getAllAttributeTypes(); + for (AttributeTypeBean ab: attrTypes) { - AttributeTypeBean ab = (AttributeTypeBean)o; attributeTypes.put(ab.getType(), ab); attributeTypesL.add(new AttributeType(ab.getType(), ab.getShortDesc(), ab.getDescription())); @@ -78,6 +79,7 @@ throw new UnsupportedTypeException(); if (b != null) return b.getId(); + TypesMapper mapper = sqlMap.getMapper(TypesMapper.class); lock.writeLock(); try { @@ -87,8 +89,7 @@ atb.setDescription(at.getShortDescription()); sqlMap.insert("addAttributeType", atb); sqlMap.clearCache(); - Integer newId = (Integer) sqlMap.selectOne( - "getAttributeTypeId", atb.getType()); + Integer newId = mapper.getAttributeTypeId(atb.getType()); atb.setId(newId); attributeTypes.put(atb.getType(), atb); attributeTypes2.put(newId, atb.getType()); @@ -120,12 +121,12 @@ b.setDescription(at.getDescription()); b.setShortDesc(at.getShortDescription()); b.setType(at.getName()); + TypesMapper mapper = sqlMap.getMapper(TypesMapper.class); lock.writeLock(); try { - sqlMap.insert("addAttributeType", b); - Integer newId = (Integer) sqlMap.selectOne( - "getAttributeTypeId", at.getName()); + mapper.addAttributeType(b); + Integer newId = mapper.getAttributeTypeId(at.getName()); b.setId(newId); attributeTypes.put(at.getName(), b); attributeTypes2.put(newId, at.getName()); @@ -147,10 +148,11 @@ b.setDescription(at.getDescription()); b.setShortDesc(at.getShortDescription()); b.setType(at.getName()); + TypesMapper mapper = sqlMap.getMapper(TypesMapper.class); lock.writeLock(); try { - sqlMap.update("updateAttributeType", b); + mapper.updateAttributeType(b); for (int i = 0; i<attributeTypesL.size(); i++) if (attributeTypesL.get(i).getName().equals(at.getName())) { @@ -171,11 +173,11 @@ public void deleteAttrType(AttributeType at, SqlSession sqlMap) throws InternalException { lock.writeLock(); + TypesMapper mapper = sqlMap.getMapper(TypesMapper.class); try { - Integer newId = (Integer) sqlMap.selectOne( - "getAttributeTypeId", at.getName()); - sqlMap.delete("deleteAttributeType", at.getName()); + Integer newId = mapper.getAttributeTypeId(at.getName()); + mapper.deleteAttributeType(at.getName()); attributeTypes.remove(at.getName()); attributeTypes2.remove(newId); for (int i = 0; i<attributeTypesL.size(); i++) @@ -207,13 +209,12 @@ return attributeTypes2.get(id); } - List<Attribute> prepareAttributeList(List<?> rawL, String scope) + List<Attribute> prepareAttributeList(List<AttributeBean> rawL, String scope) throws InternalException { HashMap<String, Attribute> hash = new HashMap<String, Attribute>(); - for (Object obj: rawL) + for (AttributeBean ab: rawL) { - AttributeBean ab = (AttributeBean)obj; AttributeTypeBean atb = attributeTypes.get(getAttrType4Id(ab.getTypeId())); String typeName = atb.getType(); if (ab.getGroupId() != -1 && scope == null) Modified: uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBAuthz.java =================================================================== --- uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBAuthz.java 2012-09-27 16:38:36 UTC (rev 14426) +++ uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBAuthz.java 2012-09-27 20:29:46 UTC (rev 14427) @@ -30,6 +30,7 @@ import pl.edu.icm.unicore.uvos.api.exceptions.GroupNotKnownException; import pl.edu.icm.unicore.uvos.api.exceptions.InternalException; import pl.edu.icm.unicore.uvos.api.exceptions.UnsupportedTypeException; +import pl.edu.icm.unicore.uvos.db.mapper.AuthzMapper; import pl.edu.icm.unicore.uvos.model.AuthzBean; import pl.edu.icm.unicore.uvos.model.GroupBean; import pl.edu.icm.unicore.uvos.util.Configuration; @@ -62,6 +63,7 @@ lock.writeLock(); try { + AuthzMapper mapper = sqlMap.getMapper(AuthzMapper.class); AuthzBean param = new AuthzBean(); int attrType = attributeTypes.getAttrTypeId(attr.getType(), true, sqlMap); param.setAttrType(attrType); @@ -74,7 +76,7 @@ param.setAttrValue(null); try { - sqlMap.insert("insertGroupAuthZ", param); + mapper.insertGroupAuthZ(param); } catch (PersistenceException e) { log.error("DB error: Can't add attr authZ for group " + group + @@ -91,7 +93,7 @@ param.setAttrValue(val); try { - sqlMap.insert("insertGroupAuthZ", param); + mapper.insertGroupAuthZ(param); } catch (PersistenceException e) { log.error("DB error: Can't add attr authZ for group " + group + @@ -114,6 +116,7 @@ lock.writeLock(); try { + AuthzMapper mapper = sqlMap.getMapper(AuthzMapper.class); AuthzBean param = new AuthzBean(); param.setGroupId(group); param.setPermission(perms.getValue()); @@ -122,7 +125,7 @@ param.setSpecial(MEMBER_CODE); try { - sqlMap.insert("insertSpecialAuthZ", param); + mapper.insertSpecialAuthZ(param); } catch (PersistenceException e) { log.error("DB error: Can't add special authZ for group " + group + @@ -143,6 +146,7 @@ lock.writeLock(); try { + AuthzMapper mapper = sqlMap.getMapper(AuthzMapper.class); AuthzBean param = new AuthzBean(); param.setGroupId(group); param.setSpecial(OWNER_CODE); @@ -151,10 +155,9 @@ try { if (group == -1) - sqlMap.delete("deleteGlobalAuthZSpecial", - param.getSpecial()); + mapper.deleteGlobalAuthZSpecial(param.getSpecial()); else - sqlMap.delete("deleteGroupAuthZSpecial", param); + mapper.deleteGroupAuthZSpecial(param); } catch (PersistenceException e) { log.error("DB error: Can't delete special authZ for group " + group + @@ -175,6 +178,7 @@ lock.writeLock(); try { + AuthzMapper mapper = sqlMap.getMapper(AuthzMapper.class); AuthzBean param = new AuthzBean(); param.setGroupId(group); int attrType = attributeTypes.getAttrTypeId(attr.getName()); @@ -185,18 +189,18 @@ if (attr.getValues().size() == 0) { if (group == -1) - sqlMap.delete("deleteGlobalAuthZAttr", param); + mapper.deleteGlobalAuthZAttr(param); else - sqlMap.delete("deleteGroupAuthZAttr", param); + mapper.deleteGroupAuthZAttr(param); } else { for (String val: attr.getValues()) { param.setAttrValue(val); if (group == -1) - sqlMap.delete("deleteGlobalAuthZAttrVal", param); + mapper.deleteGlobalAuthZAttrVal(param); else - sqlMap.delete("deleteGroupAuthZAttrVal", param); + mapper.deleteGroupAuthZAttrVal(param); } } } catch (PersistenceException e) @@ -213,21 +217,19 @@ } } - private List<AuthzBean> getGroupAuthZRaw(int id, SqlSession sqlMap) throws InternalException + private List<AuthzBean> getGroupAuthZRaw(int id, AuthzMapper mapper) throws InternalException { - List<?> res1, res2; + List<AuthzBean> res1, res2; try { if (id != -1) { - res1 = sqlMap.selectList("getAllGroupAuthZAttr", - Integer.valueOf(id)); - res2 = sqlMap.selectList("getAllGroupAuthZSpecial", - Integer.valueOf(id)); + res1 = mapper.getAllGroupAuthZAttr(Integer.valueOf(id)); + res2 = mapper.getAllGroupAuthZSpecial(Integer.valueOf(id)); } else { - res1 = sqlMap.selectList("getAllGlobalAuthZAttr"); - res2 = sqlMap.selectList("getAllGlobalAuthZSpecial"); + res1 = mapper.getAllGlobalAuthZAttr(); + res2 = mapper.getAllGlobalAuthZSpecial(); } } catch (PersistenceException e) { @@ -236,10 +238,10 @@ throw new InternalException("DB error: authZ for group: " + id); } List<AuthzBean> ret = new Vector<AuthzBean>(); - for (Object o: res1) - ret.add((AuthzBean)o); - for (Object o: res2) - ret.add((AuthzBean)o); + for (AuthzBean o: res1) + ret.add(o); + for (AuthzBean o: res2) + ret.add(o); return ret; } @@ -293,18 +295,19 @@ lock.writeLock(); try { - List<AuthzBean> raw = getGroupAuthZRaw(groupB.getId(), sqlMap); + AuthzMapper mapper = sqlMap.getMapper(AuthzMapper.class); + List<AuthzBean> raw = getGroupAuthZRaw(groupB.getId(), mapper); if (effective && groupB.getId() != -1) { //if no policy set find first parent's policy while (raw.size() == 0 && groupB.getParent() != -1) { groupB = groupResolver.resolveGroup4Id(groupB.getParent(), sqlMap); - raw = getGroupAuthZRaw(groupB.getId(), sqlMap); + raw = getGroupAuthZRaw(groupB.getId(), mapper); } //if still no policy set for any parent use global one if (raw.size() == 0) - raw = getGroupAuthZRaw(-1, sqlMap); + raw = getGroupAuthZRaw(-1, mapper); } return raw; } Modified: uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBEntities.java =================================================================== --- uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBEntities.java 2012-09-27 16:38:36 UTC (rev 14426) +++ uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBEntities.java 2012-09-27 20:29:46 UTC (rev 14427) @@ -46,6 +46,8 @@ import pl.edu.icm.unicore.uvos.api.exceptions.LabelAlreadyUsedException; import pl.edu.icm.unicore.uvos.api.exceptions.SecurityException; import pl.edu.icm.unicore.uvos.api.exceptions.UnsupportedTypeException; +import pl.edu.icm.unicore.uvos.db.mapper.EntityMapper; +import pl.edu.icm.unicore.uvos.db.mapper.GroupMapper; import pl.edu.icm.unicore.uvos.engine.InternalAuthorization; import pl.edu.icm.unicore.uvos.engine.PersistentIdManager; import pl.edu.icm.unicore.uvos.model.AttributeBean; @@ -110,13 +112,14 @@ lock.writeLock(); try { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); net.sf.ehcache.Element cached = certSubjectsCache.get(canonSubject); if (cached != null) { Integer cachedId = (Integer)cached.getObjectValue(); try { - IdentityBean cachedIB = entitiesCache.getIdentity4Id(cachedId, sqlMap); + IdentityBean cachedIB = entitiesCache.getIdentity4Id(cachedId, mapper); return resolveIdentityBean(cachedIB, sqlMap); } catch(InvalidValueException e) { @@ -126,19 +129,18 @@ } } log.debug("Cache miss when trying to get certificate identity by subject. Iterating."); - List<?> raw; + List<IdentityBean> raw; try { - raw = sqlMap.selectList("getAllIdentities"); + raw = mapper.getAllIdentities(); } catch (PersistenceException e1) { String msg = "DB error: Can't retrieve identities"; log.warn(msg +". SQL exception is: " + e1); throw new InternalException(msg); } - for (Object idRaw: raw) + for (IdentityBean ib: raw) { - IdentityBean ib = (IdentityBean) idRaw; IdentityType type = identityTypes.getIdentityType4Id(ib.getTypeId()); if (!type.equals(IdentityType.X509CERT)) continue; @@ -178,6 +180,7 @@ lock.writeLock(); try { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); if (toAdd.getValue() == null || toAdd.getType() == null) throw new InternalException("Wrong (null) attributes of " + "identity to create"); @@ -186,12 +189,12 @@ toAdd.setLabel(toAdd.generateUniqueLabel()); try { - resolveEntity(toAdd.getLabel(), sqlMap); + resolveEntity(toAdd.getLabel(), mapper); throw new LabelAlreadyUsedException(); } catch (IdentityNotKnownException e) {/*ok*/} try { - entitiesCache.resolveIdentity(toAdd, sqlMap); + entitiesCache.resolveIdentity(toAdd, mapper); throw new ElementAlreadyExistsException(new Element(null, toAdd)); } catch (IdentityNotKnownException e) {/*ok*/} @@ -225,6 +228,7 @@ lock.writeLock(); try { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); if (toAdd.getValue() == null || toAdd.getType() == null) throw new InternalException("Wrong (null) attributes of " + "identity to create"); @@ -235,12 +239,12 @@ toAdd.setAuthnDataEncoded(authTokenEncoded); - EntityBean eb = entitiesCache.getEntity4Identity(equivalentIdentity, sqlMap); + EntityBean eb = entitiesCache.getEntity4Identity(equivalentIdentity, mapper); toAdd.setLabel(eb.getName()); equivalentIdentity.setLabel(eb.getName()); try { - entitiesCache.resolveIdentity(toAdd, sqlMap); + entitiesCache.resolveIdentity(toAdd, mapper); throw new ElementAlreadyExistsException(new Element(null, toAdd)); } catch (IdentityNotKnownException e) {/*ok*/} @@ -266,8 +270,9 @@ lock.writeLock(); try { - IdentityBean ib = entitiesCache.resolveIdentity(toRemove, sqlMap); - List<IdentityBean> eqiv = getEqivalents(ib.getEntityId(), sqlMap); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); + IdentityBean ib = entitiesCache.resolveIdentity(toRemove, mapper); + List<IdentityBean> eqiv = getEqivalents(ib.getEntityId(), mapper); GenericBean param = new GenericBean(); param.setP1(new Date()); @@ -276,7 +281,7 @@ param.setP2(ib.getEntityId()); try { - sqlMap.delete("removeEntity", param); + mapper.removeEntity(param); } catch (PersistenceException e) { String msg = "DB error: Can't remove entity with id " + @@ -290,7 +295,7 @@ param.setP2(ib.getId()); try { - sqlMap.delete("removeIdentity", param); + mapper.removeIdentity(param); } catch (PersistenceException e) { String msg = "DB error: Can't remove identity " + toRemove; @@ -322,17 +327,18 @@ lock.writeLock(); try { - IdentityBean ib = entitiesCache.resolveIdentity(toChange, sqlMap); - EntityBean eb = entitiesCache.getEntity4Identity(ib.getId(), sqlMap); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); + IdentityBean ib = entitiesCache.resolveIdentity(toChange, mapper); + EntityBean eb = entitiesCache.getEntity4Identity(ib.getId(), mapper); try { - resolveEntity(label, sqlMap); + resolveEntity(label, mapper); throw new LabelAlreadyUsedException(); } catch (IdentityNotKnownException e) {} eb.setName(label); try { - sqlMap.update("changeEntityName", eb); + mapper.changeEntityName(eb); } catch (PersistenceException e) { String msg = "DB error: Can't change identity " + @@ -368,11 +374,12 @@ lock.writeLock(); try { - IdentityBean ib = entitiesCache.resolveIdentity(toChange, sqlMap); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); + IdentityBean ib = entitiesCache.resolveIdentity(toChange, mapper); ib.setInactive(how ? 0 : 1); try { - sqlMap.update("setIdentityStatus", ib); + mapper.setIdentityStatus(ib); } catch (PersistenceException e) { String msg = "DB error: Can't set identity " + @@ -403,12 +410,13 @@ lock.writeLock(); try { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); EntityBean eb = new EntityBean(); eb.setName(newId); eb.setId(toChange); try { - sqlMap.update("changeEntityPersistentId", eb); + mapper.changeEntityPersistentId(eb); } catch (PersistenceException e) { String msg = "DB error: Can't change entity's " + @@ -435,13 +443,14 @@ lock.writeLock(); try { - IdentityBean ib = entitiesCache.resolveIdentity(toChange, sqlMap); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); + IdentityBean ib = entitiesCache.resolveIdentity(toChange, mapper); if (newToken == null) { try { - sqlMap.delete("removeIdentityAuthn", ib.getId()); + mapper.removeIdentityAuthn(ib.getId()); } catch (PersistenceException e) { String msg = "DB error: Can't change identity's " + @@ -456,7 +465,7 @@ param.setVal(newToken); try { - sqlMap.update("changeIdentityAuthn", param); + mapper.changeIdentityAuthn(param); } catch (PersistenceException e) { String msg = "DB error: Can't clear identity's " + @@ -495,6 +504,7 @@ lock.writeLock(); try { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); AttributeBean ab = new AttributeBean(); AttributeType type = toAdd.getType(); int typeId; @@ -506,7 +516,7 @@ log.fatal("BUG: Unsupported type thrown when type should be created."); throw new InternalException("BUG in set attribute"); } - EntityBean eb = entitiesCache.getEntity4Identity(whom.getIdentity(), sqlMap); + EntityBean eb = entitiesCache.getEntity4Identity(whom.getIdentity(), mapper); if (whom.getGroup() != null) { @@ -517,7 +527,7 @@ ab.setGroupId(-1); ab.setTypeId(typeId); ab.setEntityId(eb.getId()); - List<AttributeBean> rawAttrs = getAttributes(eb.getId(), sqlMap); + List<AttributeBean> rawAttrs = getAttributes(eb.getId(), mapper); for (AttributeBean ab2: rawAttrs) { @@ -530,7 +540,7 @@ } try { - sqlMap.delete("removeEntityAttribute", ab2); + mapper.removeEntityAttribute(ab2); } catch (PersistenceException e) { String msg = "DB error: Can't remove (to update) entity" + @@ -547,7 +557,7 @@ { try { - sqlMap.insert("addEntityAttribute", ab); + mapper.addEntityAttribute(ab); } catch (PersistenceException e) { String msg = "DB error: Can't insert entity attributes for entity " + @@ -562,7 +572,7 @@ ab.setVal(val); try { - sqlMap.insert("addEntityAttribute", ab); + mapper.addEntityAttribute(ab); } catch (PersistenceException e) { String msg = "DB error: Can't insert entity attributes for entity " + @@ -595,9 +605,10 @@ lock.writeLock(); try { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); AttributeType aType = new AttributeType(toRemove); int typeId = attributeTypes.getAttrTypeId(aType.getName()); - EntityBean eb = entitiesCache.getEntity4Identity(whom.getIdentity(), sqlMap); + EntityBean eb = entitiesCache.getEntity4Identity(whom.getIdentity(), mapper); int gid = -1; if (whom.getGroup() != null) @@ -607,7 +618,7 @@ gid = gb.getId(); } - List<AttributeBean> rawAttrs = getAttributes(eb.getId(), sqlMap); + List<AttributeBean> rawAttrs = getAttributes(eb.getId(), mapper); for (AttributeBean ab2: rawAttrs) { @@ -615,7 +626,7 @@ { try { - sqlMap.delete("removeEntityAttribute", ab2); + mapper.removeEntityAttribute(ab2); } catch (PersistenceException e) { String msg = "DB error: Can't remove entity" + @@ -650,6 +661,7 @@ lock.writeLock(); try { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); AttributeType aType = new AttributeType(toDisable); int typeId; try @@ -659,7 +671,7 @@ { throw new AttributeNotFoundException(null); } - EntityBean eb = entitiesCache.getEntity4Identity(whom.getIdentity(), sqlMap); + EntityBean eb = entitiesCache.getEntity4Identity(whom.getIdentity(), mapper); int gid = -1; if (whom.getGroup() != null) @@ -676,19 +688,18 @@ ab.setVal(value); ab.setInactive(how); - String sql; - if (value == null && gid == -1) - sql = "disableEnableEntityAttributes1"; - else if (value == null && gid != -1) - sql = "disableEnableGEntityAttributes1"; - else if (value != null && gid == -1) - sql = "disableEnableEntityAttributes2"; - else - sql = "disableEnableGEntityAttributes2"; - try { - if (sqlMap.update(sql, ab) == 0) + int ret; + if (value == null && gid == -1) + ret = mapper.disableEnableEntityAttributes1(ab); + else if (value == null && gid != -1) + ret = mapper.disableEnableGEntityAttributes1(ab); + else if (value != null && gid == -1) + ret = mapper.disableEnableEntityAttributes2(ab); + else + ret = mapper.disableEnableGEntityAttributes2(ab); + if (ret == 0) throw new AttributeNotFoundException(toDisable); } catch (PersistenceException e) { @@ -720,6 +731,7 @@ lock.writeLock(); try { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); int gid = -1; String scope = null; if (whose.getGroup() != null) @@ -727,19 +739,17 @@ gid = groupResolver.resolveGroup(whose.getGroup(), sqlMap).getId(); scope = whose.getGroup().toString(); } - EntityBean eb = entitiesCache.getEntity4Identity(whose.getIdentity(), sqlMap); + EntityBean eb = entitiesCache.getEntity4Identity(whose.getIdentity(), mapper); GenericBean param = new GenericBean(); param.setP1(eb.getId()); param.setP2(gid); - List<?> rawL = null; + List<AttributeBean> rawL = null; try { if (gid == -1) - rawL = sqlMap.selectList("listDisabledEntityAttributes", - eb.getId()); + rawL = mapper.listDisabledEntityAttributes(eb.getId()); else - rawL = sqlMap.selectList("listDisabledGEntityAttributes", - param); + rawL = mapper.listDisabledGEntityAttributes(param); } catch (PersistenceException e) { String msg = "DB error: Can't list disabled entity" + @@ -761,6 +771,7 @@ lock.writeLock(); try { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); GroupBean groupBean = null; String scope = null; if (owner.getGroup() != null) @@ -769,11 +780,11 @@ scope = owner.getGroup().toString(); } - EntityBean eb = entitiesCache.getEntity4Identity(owner.getIdentity(), sqlMap); + EntityBean eb = entitiesCache.getEntity4Identity(owner.getIdentity(), mapper); List<AttributeBean> attrBs; if (!effective || groupBean == null) attrBs = getAttributes(eb.getId(), - groupBean == null ? -1 : groupBean.getId(), sqlMap); + groupBean == null ? -1 : groupBean.getId(), mapper); else attrBs = getEffectiveAttributes(eb.getId(), groupBean, sqlMap); return attributeTypes.prepareAttributeList(attrBs, scope); @@ -790,8 +801,9 @@ lock.writeLock(); try { - EntityBean eb1 = entitiesCache.getEntity4Identity(i1, sqlMap); - EntityBean eb2 = entitiesCache.getEntity4Identity(i2, sqlMap); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); + EntityBean eb1 = entitiesCache.getEntity4Identity(i1, mapper); + EntityBean eb2 = entitiesCache.getEntity4Identity(i2, mapper); return eb1.getId() == eb2.getId(); } finally @@ -806,7 +818,8 @@ lock.writeLock(); try { - IdentityBean ibBase = entitiesCache.resolveIdentity(who, sqlMap); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); + IdentityBean ibBase = entitiesCache.resolveIdentity(who, mapper); return getAllEquivalents(ibBase.getEntityId(), sqlMap); } finally @@ -824,7 +837,8 @@ List<?> raw; try { - raw = sqlMap.selectList("getEquivalentIdentities", entityId); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); + raw = mapper.getEquivalentIdentities(entityId); } catch (PersistenceException e1) { String msg = "DB error: Can't retrieve equivalent identities of " + @@ -845,6 +859,7 @@ AttributeNotFoundException, InvalidValueException { lock.writeLock(); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); try { GroupBean groupB = null; @@ -854,7 +869,7 @@ groupB = groupResolver.resolveGroup(owner.getGroup(), sqlMap); scope = owner.getGroup().toString(); } - EntityBean eb = entitiesCache.getEntity4Identity(owner.getIdentity(), sqlMap); + EntityBean eb = entitiesCache.getEntity4Identity(owner.getIdentity(), mapper); int typeId; try { @@ -874,7 +889,7 @@ attrB.add(tmp); } else attrB = getAttribute(eb.getId(), groupB == null ? -1 : groupB.getId(), - typeId, sqlMap); + typeId, mapper); if (attrB.size() == 0) throw new AttributeNotFoundException(null); return attributeTypes.prepareAttributeList(attrB, scope).get(0); @@ -893,7 +908,8 @@ List<?> raw; try { - raw = sqlMap.selectList("getAllIdentities"); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); + raw = mapper.getAllIdentities(); } catch (PersistenceException e1) { String msg = "DB error: Can't retrieve identities"; @@ -921,7 +937,8 @@ lock.writeLock(); try { - AuthnBean res = (AuthnBean) sqlMap.selectOne("getIdentityAuth", id); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); + AuthnBean res = mapper.getIdentityAuth(id); if (res != null) return res.getVal(); } catch (PersistenceException e) @@ -950,11 +967,9 @@ if (!includeScoped) return getGlobalAttrs(owner, attribute, effective, sqlMap); - List<Attribute> ret; - if (!globalReadPerm) - ret = new ArrayList<Attribute>(); - else - ret = getGlobalAttrs(owner, attribute, effective, sqlMap); + List<Attribute> ret = new ArrayList<Attribute>(); + if (globalReadPerm) + ret.addAll(getGlobalAttrs(owner, attribute, effective, sqlMap)); //get all groups honoring includeImplied. Permissions are anyway checked //in getAllGroups, as only groups with read access are returned. @@ -1008,11 +1023,12 @@ private ExtendedIdentity resolveIdentityBeanCore(IdentityBean ib, SqlSession sqlMap) throws InternalException { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); IdentityType it = identityTypes.getIdentityType4Id(ib.getTypeId()); EntityBean e; try { - e = entitiesCache.getEntity4Identity(ib.getId(), sqlMap); + e = entitiesCache.getEntity4Identity(ib.getId(), mapper); ExtendedIdentity ret = IdentityFactory.createExtendedIdentity(it, ib.getValue(), e.getName(), e.getPersistentId()); ret.setInactive(ib.getInactive() != 0); @@ -1037,14 +1053,14 @@ return ret; } - private EntityBean resolveEntity(String name, SqlSession sqlMap) + private EntityBean resolveEntity(String name, EntityMapper mapper) throws IdentityNotKnownException, InternalException { EntityBean res; try { - res = (EntityBean) sqlMap.selectOne("resolveEntity", name); + res = mapper.resolveEntity(name); } catch (PersistenceException e) { String msg = "DB error: Can't resolve entity " + name; @@ -1065,23 +1081,21 @@ private EntityBean createEntity(String label, SqlSession sqlMap) throws InternalException { GenericBean gb = new GenericBean(); - EntityBean entityB; gb.setP1(label); String id = idManager.getNewId(); gb.setP2(id); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); try { - sqlMap.insert("addEntity", gb); + mapper.addEntity(gb); sqlMap.clearCache(); - entityB = (EntityBean) - sqlMap.selectOne("resolveEntity", label); + return mapper.resolveEntity(label); } catch (PersistenceException e) { String msg = "DB error: Can't add a new entity " + label; log.error(msg + ". SQL exception is: " + e); throw new InternalException(msg); } - return entityB; } /** @@ -1107,10 +1121,10 @@ param.setTypeId(typeId); param.setValue(identity.getValue()); param.setCmp(identity.getComparableValue()); + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); try { - - sqlMap.insert("addIdentity", param); + mapper.addIdentity(param); if (identity.getAuthnData() != null) { AuthnBean param2 = new AuthnBean(); @@ -1118,10 +1132,10 @@ IdentityBean idB = null; try { - idB = entitiesCache.resolveIdentity(identity, sqlMap); + idB = entitiesCache.resolveIdentity(identity, mapper); param2.setIdentityId(idB.getId()); } catch (IdentityNotKnownException e){} - sqlMap.update("changeIdentityAuthn", param2); + mapper.changeIdentityAuthn(param2); } sqlMap.clearCache(); } catch (PersistenceException e) @@ -1132,12 +1146,11 @@ } } - private List<IdentityBean> getEqivalents(int entityId, SqlSession sqlMap) throws InternalException + private List<IdentityBean> getEqivalents(int entityId, EntityMapper mapper) throws InternalException { - List<?> eqiv; try { - eqiv = sqlMap.selectList("getEquivalentIdentities", entityId); + return mapper.getEquivalentIdentities(entityId); } catch (PersistenceException e) { String msg = "DB error: Can't retirieve equivalent identities " + @@ -1145,18 +1158,13 @@ log.warn(msg +". SQL exception is: " + e); throw new InternalException(msg); } - Vector<IdentityBean> ret = new Vector<IdentityBean>(); - for (Object o: eqiv) - ret.add((IdentityBean) o); - return ret; } - private List<AttributeBean> getAttributes(int entityId, SqlSession sqlMap) throws InternalException + private List<AttributeBean> getAttributes(int entityId, EntityMapper mapper) throws InternalException { - List<?> rawAttrs = null; try { - rawAttrs = sqlMap.selectList("getEntityAttributes", entityId); + return mapper.getEntityAttributes(entityId); } catch (PersistenceException e1) { String msg = "DB error: Can't retrieve entity attributes for entity " + @@ -1164,27 +1172,20 @@ log.warn(msg +". SQL exception is: " + e1); throw new InternalException(msg); } - Vector<AttributeBean> ret = new Vector<AttributeBean>(); - for (Object o: rawAttrs) - ret.add((AttributeBean) o); - return ret; } - private List<AttributeBean> getAttributes(int entityId, int gid, SqlSession sqlMap) + private List<AttributeBean> getAttributes(int entityId, int gid, EntityMapper mapper) throws InternalException { - List<?> rawAttrs = null; GenericBean gb = new GenericBean(); gb.setP1(entityId); gb.setP2(gid); try { - if (gid == -1) - rawAttrs = sqlMap.selectList( - "getEntityGlobalAttributes", entityId); - else - rawAttrs = sqlMap.selectList( - "getEntityGroupAttributes", gb); + if (gid == -1) { + return mapper.getEntityGlobalAttributes(entityId); + } else + return mapper.getEntityGroupAttributes(gb); } catch (PersistenceException e1) { String msg = "DB error: Can't retrieve entity attributes for entity " + @@ -1192,10 +1193,6 @@ log.warn(msg +". SQL exception is: " + e1); throw new InternalException(msg); } - Vector<AttributeBean> ret = new Vector<AttributeBean>(); - for (Object o: rawAttrs) - ret.add((AttributeBean) o); - return ret; } public List<AttributeBean> getEffectiveAttributes(int entityId, GroupBean groupB, SqlSession sqlMap) @@ -1204,8 +1201,11 @@ lock.writeLock(); try { + EntityMapper mapper = sqlMap.getMapper(EntityMapper.class); + GroupMapper groupMapper = sqlMap.getMapper(GroupMapper.class); // global - List<AttributeBean> ret = getAttributes(entityId, -1, sqlMap); + List<AttributeBean> ret = new ArrayList<AttributeBean>(); + ret.addAll(getAttributes(entityId, -1, mapper)); if (groupB.getId() == -1) return ret; @@ -1217,9 +1217,9 @@ for (GroupBean subGroup: path) { List<AttributeBean> scopedAttrs = getAttributes(entityId, - subGroup.getId(), sqlMap); + subGroup.getId(), mapper); List<AttributeBean> groupAttrs = groups.getAttributes( - subGroup.getId(), sqlMap); + subGroup.getId(), groupMapper); //group attributes are added only if there is no scoped attribute //with the same name (== type id) for (AttributeBean ab: groupAttrs) @@ -1243,10 +1243,9 @@ } } - private List<AttributeBean> getAttribute(int entityId, int gid, int typeId, SqlSession sqlMap) + private List<AttributeBean> getAttribute(int entityId, int gid, int typeId, EntityMapper mapper) throws InternalException { - List<?> rawAttrs = null; AttributeBean param = new AttributeBean(); param.setEntityId(entityId); param.setGroupId(gid); @@ -1254,11 +1253,9 @@ try { if (gid == -1) - rawAttrs = sqlMap.selectList( - "getEntityGlobalAttribute", param); + return mapper.getEntityGlobalAttribute(param); else - rawAttrs = sqlMap.selectList( - "getEntityGroupAttribute", param); + return mapper.getEntityGroupAttribute(param); } catch (PersistenceException e1) { String msg = "DB error: Can't retrieve entity attributes for entity " + @@ -1266,9 +1263,5 @@ log.warn(msg +". SQL exception is: " + e1); throw new InternalException(msg); } - Vector<AttributeBean> ret = new Vector<AttributeBean>(); - for (Object o: rawAttrs) - ret.add((AttributeBean) o); - return ret; } } Modified: uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBEntitiesCache.java =================================================================== --- uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBEntitiesCache.java 2012-09-27 16:38:36 UTC (rev 14426) +++ uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBEntitiesCache.java 2012-09-27 20:29:46 UTC (rev 14427) @@ -27,6 +27,7 @@ import pl.edu.icm.unicore.uvos.api.exceptions.IdentityNotKnownException; import pl.edu.icm.unicore.uvos.api.exceptions.InternalException; import pl.edu.icm.unicore.uvos.api.exceptions.InvalidValueException; +import pl.edu.icm.unicore.uvos.db.mapper.EntityMapper; import pl.edu.icm.unicore.uvos.model.EntityBean; import pl.edu.icm.unicore.uvos.model.GenericBean; import pl.edu.icm.unicore.uvos.model.IdentityBean; @@ -75,8 +76,14 @@ man.addCache(entitiesCache); } } + + public EntityBean getEntity4Identity(int id, SqlSession session) + throws InternalException, IdentityNotKnownException + { + return getEntity4Identity(id, session.getMapper(EntityMapper.class)); + } - public EntityBean getEntity4Identity(int id, SqlSession sqlMap) + public EntityBean getEntity4Identity(int id, EntityMapper mapper) throws InternalException, IdentityNotKnownException { lock.writeLock(); @@ -88,8 +95,7 @@ EntityBean res; try { - res = (EntityBean) - sqlMap.selectOne("getEntity4Identity", Integer.valueOf(id)); + res = mapper.getEntity4Identity(Integer.valueOf(id)); if(res != null) entitiesCache.put(new net.sf.ehcache.Element(Integer.valueOf(id), res)); } catch (PersistenceException e) @@ -107,23 +113,35 @@ lock.writeUnlock(); } } + + public EntityBean getEntity4Identity(ExtendedIdentity identity, SqlSession session) + throws IdentityNotKnownException, InternalException, InvalidValueException + { + return getEntity4Identity(identity, session.getMapper(EntityMapper.class)); + } - public EntityBean getEntity4Identity(ExtendedIdentity identity, SqlSession sqlMap) + public EntityBean getEntity4Identity(ExtendedIdentity identity, EntityMapper mapper) throws IdentityNotKnownException, InternalException, InvalidValueException { lock.writeLock(); try { - IdentityBean ib = resolveIdentity(identity, sqlMap); - return getEntity4Identity(ib.getId(), sqlMap); + IdentityBean ib = resolveIdentity(identity, mapper); + return getEntity4Identity(ib.getId(), mapper); } finally { lock.writeUnlock(); } } + + public IdentityBean resolveIdentity(ExtendedIdentity identity, SqlSession session) + throws IdentityNotKnownException, InternalException, InvalidValueException + { + return resolveIdentity(identity, session.getMapper(EntityMapper.class)); + } - public IdentityBean resolveIdentity(ExtendedIdentity identity, SqlSession sqlMap) + public IdentityBean resolveIdentity(ExtendedIdentity identity, EntityMapper mapper) throws IdentityNotKnownException, InternalException, InvalidValueException { lock.writeLock(); @@ -134,7 +152,7 @@ { GenericBean param = new GenericBean(identity.getComparableValue(), identity.getType().toString()); - res = (IdentityBean) sqlMap.selectOne("resolveIdentity", param); + res = mapper.resolveIdentity(param); } catch (PersistenceException e) { String msg = "DB error: Can't resolve identity " + identity; @@ -161,7 +179,7 @@ * @param label * @throws InternalException */ - public void updateEntityPersistentId(int toChange, String newId, SqlSession sqlMap) + public void updateEntityPersistentId(int toChange, String newId, EntityMapper mapper) throws InternalException { lock.writeLock(); @@ -172,7 +190,7 @@ eb.setId(toChange); try { - sqlMap.update("changeEntityPersistentId", eb); + mapper.changeEntityPersistentId(eb); } catch (PersistenceException e) { String msg = "DB error: Can't change entity's " + @@ -210,12 +228,12 @@ return DBEntitiesCache.cacheConfig; } - public List<EntityBean> getAllEntities(SqlSession sqlMap) throws InternalException + public List<EntityBean> getAllEntities(EntityMapper mapper) throws InternalException { lock.writeLock(); try { - return sqlMap.selectList("getAllEntities"); + return mapper.getAllEntities(); } catch (PersistenceException e1) { String msg = "DB error: Can't retrieve entities"; @@ -228,7 +246,7 @@ } } - IdentityBean getIdentity4Id(int id, SqlSession sqlMap) throws InternalException, InvalidValueException + IdentityBean getIdentity4Id(int id, EntityMapper mapper) throws InternalException, InvalidValueException { lock.writeLock(); try @@ -236,8 +254,7 @@ IdentityBean res; try { - res = (IdentityBean) sqlMap.selectOne("getIdentity4Id", - Integer.valueOf(id)); + res = mapper.getIdentity4Id(Integer.valueOf(id)); } catch (PersistenceException e) { String msg = "DB error: Can't get identity for id" + id; Modified: uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBGroupResolver.java =================================================================== --- uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBGroupResolver.java 2012-09-27 16:38:36 UTC (rev 14426) +++ uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBGroupResolver.java 2012-09-27 20:29:46 UTC (rev 14427) @@ -20,6 +20,7 @@ import pl.edu.icm.unicore.uvos.api.Group; import pl.edu.icm.unicore.uvos.api.exceptions.GroupNotKnownException; import pl.edu.icm.unicore.uvos.api.exceptions.InternalException; +import pl.edu.icm.unicore.uvos.db.mapper.GroupMapper; import pl.edu.icm.unicore.uvos.model.GroupBean; import pl.edu.icm.unicore.uvos.util.Configuration; @@ -36,8 +37,14 @@ { this.lock = lock; } + + GroupBean resolveGroup4Id(int id, SqlSession session) + throws InternalException, GroupNotKnownException + { + return resolveGroup4Id(id, session.getMapper(GroupMapper.class)); + } - GroupBean resolveGroup4Id(int id, SqlSession sqlMap) + GroupBean resolveGroup4Id(int id, GroupMapper mapper) throws InternalException, GroupNotKnownException { lock.writeLock(); @@ -46,7 +53,7 @@ GroupBean res = null; try { - res = (GroupBean)sqlMap.selectOne("resolveGroup4Id", id); + res = mapper.resolveGroup4Id(id); } catch (PersistenceException e) { String msg = "DB error: Can't resolve group name for id " + id; @@ -66,7 +73,7 @@ } } - public GroupBean resolveGroup(String name, int parentId, SqlSession sqlMap) + public GroupBean resolveGroup(String name, int parentId, GroupMapper mapper) throws InternalException, GroupNotKnownException { GroupBean res = null; @@ -76,9 +83,9 @@ try { if (parentId == -1) - res = (GroupBean)sqlMap.selectOne("resolveTopGroup", name); + res = mapper.resolveTopGroup(name); else - res = (GroupBean)sqlMap.selectOne("resolveGroup", param); + res = mapper.resolveGroup(param); } catch (PersistenceException e) { String msg = "DB error: Can't resolve group " + name + @@ -91,8 +98,13 @@ return res; } - public GroupBean resolveGroup(Group g, SqlSession sqlMap) throws InternalException, GroupNotKnownException + public GroupBean resolveGroup(Group g, SqlSession sqlSes) throws InternalException, GroupNotKnownException { + return resolveGroup(g, sqlSes.getMapper(GroupMapper.class)); + } + + public GroupBean resolveGroup(Group g, GroupMapper mapper) throws InternalException, GroupNotKnownException + { lock.writeLock(); try { @@ -103,7 +115,7 @@ b.setParent(-1); for (int i=0; i<path.length; i++) { - b = resolveGroup(path[i], p, sqlMap); + b = resolveGroup(path[i], p, mapper); p = b.getId(); } return b; @@ -114,15 +126,20 @@ } } - public Group resolveGroupBean(GroupBean g, SqlSession sqlMap) throws InternalException, GroupNotKnownException + public Group resolveGroupBean(GroupBean g, SqlSession session) throws InternalException, GroupNotKnownException { + return resolveGroupBean(g, session.getMapper(GroupMapper.class)); + } + + public Group resolveGroupBean(GroupBean g, GroupMapper mapper) throws InternalException, GroupNotKnownException + { lock.writeLock(); try { String path = g.getName(); while (g.getParent() != -1) { - g = resolveGroup4Id(g.getParent(), sqlMap); + g = resolveGroup4Id(g.getParent(), mapper); path = g.getName() + "/" + path; } path = "/" + path; @@ -134,7 +151,7 @@ } } - public List<GroupBean> getParentGroupBeans(GroupBean g, SqlSession sqlMap) throws InternalException, GroupNotKnownException + public List<GroupBean> getParentGroupBeans(GroupBean g, GroupMapper mapper) throws InternalException, GroupNotKnownException { List<GroupBean> ret = new ArrayList<GroupBean>(); lock.writeLock(); @@ -142,7 +159,7 @@ { while (g.getParent() != -1) { - g = resolveGroup4Id(g.getParent(), sqlMap); + g = resolveGroup4Id(g.getParent(), mapper); ret.add(g); } return ret; Modified: uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBGroups.java =================================================================== --- uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBGroups.java 2012-09-27 16:38:36 UTC (rev 14426) +++ uvos/uvos-server/trunk/src/main/java/pl/edu/icm/unicore/uvos/db/DBGroups.java 2012-09-27 20:29:46 UTC (rev 14427) @@ -40,6 +40,7 @@ import pl.edu.icm.unicore.uvos.api.exceptions.InvalidValueException; import pl.edu.icm.unicore.uvos.api.exceptions.SecurityException; import pl.edu.icm.unicore.uvos.api.exceptions.UnsupportedTypeException; +import pl.edu.icm.unicore.uvos.db.mapper.GroupMapper; import pl.edu.icm.unicore.uvos.engine.InternalAuthorization; import pl.edu.icm.unicore.uvos.model.AttributeBean; import pl.edu.icm.unicore.uvos.model.AuthzBean; @@ -95,22 +96,24 @@ lock.writeLock(); try { + GroupMapper mapper = sqlMap.getMapper(GroupMapper.class); int parentId = -1; if (parent != null) { - GroupBean pb = groupResolver.resolveGroup(parent, sqlMap); + GroupBean pb = groupResolver.resolveGroup(parent, mapper); parentId = pb.getId(); } Group result = new Group(parent == null ? new String[0] : parent.getPath(), name); try { - groupResolver.resolveGroup(result, sqlMap); + groupResolver.resolveGroup(result, mapper); throw new ElementAlreadyExistsException(new Element(result, null)); } catch(GroupNotKnownException e){/*ok*/} - createGroup(parentId, name, sqlMap); + createGroup(parentId, name, mapper, sqlMap); - GroupBean res = groupResolver.resolveGroup(name, parentId, sqlMap); + //FIXME - is this line needed? + groupResolver.resolveGroup(name, parentId, mapper); return result; } finally @@ -137,13 +140,14 @@ throws InternalException, GroupNotKnownException, GroupNotEmptyException { lock.writeLock(); + GroupMapper mapper = sqlMap.getMapper(GroupMapper.class); try { - GroupBean gb = groupResolver.resolveGroup(toRemove, sqlMap); + GroupBean gb = groupResolver.resolveGroup(toRemove, mapper); if (gb.getId() == -1) throw new GroupNotKnownException(toRemove); Timestamp ts = new Timestamp(new Date().getTime()); - removeGroupRecursive(gb.getId(), recursive, ts, sqlMap); + removeGroupRecursive(gb.getId(), recursive, ts, mapper, sqlMap); } finally { @@ -170,11 +174,12 @@ InternalException, ElementAlreadyExistsException, InvalidValueException { lock.writeLock(); + GroupMapper mapper = sqlMap.getMapper(GroupMapper.class); try { if (srcGb.getId() == -1) throw new InvalidValueException("Can't copy root"); - GroupBean newPGB = groupResolver.resolveGroup(newParent, sqlMap); + GroupBean newPGB = groupResolver.resolveGroup(newParent, mapper); if (newPGB.getId() == srcGb.getId()) throw new InvalidValueException("Can't copy group to itself"); if (srcGb.getParent() == newPGB.getId() && newName.equals(srcGb.getName())) @@ -182,7 +187,7 @@ Group res; try { - res = copyGroupInt(srcGb, newParent, newName, removeOriginal, sqlMap); + res = copyGroupInt(srcGb, newParent, newName, removeOriginal, sqlMap, mapper); } catch (GroupNotEmptyException e) { log.fatal("BUG: GroupNotEmptyExc during recursive remove", e); @@ -198,29 +203,28 @@ } private Group copyGroupInt(GroupBean srcGb, Group newParent, String newName, - boolean removeOriginal, SqlSession sqlMap) + boolean removeOriginal, SqlSession sqlMap, GroupMapper mapper) throws GroupNotKnownException, InternalException, ElementAlreadyExistsException, GroupNotEmptyException { //create target Group result = addGroup(newParent, newName, sqlMap); - GroupBean dstGb = groupResolver.resolveGroup(result, sqlMap); + GroupBean dstGb = groupResolver.resolveGroup(result, mapper); //copy of everything except subgroups - copyMembers(srcGb.getId(), dstGb.getId(), sqlMap); - copyGroupAttributes(srcGb.getId(), dstGb.getId(), sqlMap); + copyMembers(srcGb.getId(), dstGb.getId(), sqlMap, mapper); + copyGroupAttributes(srcGb.getId(), dstGb.getId(), mapper); copyAuthz(srcGb, dstGb.getId(), sqlMap); //do recursive copy of the subgroups (without delete!) - List subGroups = getGroupSubgroupsFullRaw(srcGb.getId(), sqlMap); - for (Object o: subGroups) + List<GroupBean> subGroups = getGroupSubgroupsFullRaw(srcGb.getId(), mapper); + for (GroupBean gb: subGroups) { - GroupBean gb = (GroupBean)o; - copyGroupInt(gb, result, gb.getName(), false, sqlMap); + copyGroupInt(gb, result, gb.getName(), false, sqlMap, mapper); } //delete recursively orginal if needed if (removeOriginal) { Timestamp ts = new Timestamp(new Date().getTime()); - removeGroupRecursive(srcGb.getId(), true, ts, sqlMap); + removeGroupRecursive(srcGb.getId(), true, ts, mapper, sqlMap); } return result; } @@ -248,14 +252,13 @@ } } - private void copyMembers(int srcG, int dstG, SqlSession sqlMap) throws InternalException + private void copyMembers(int srcG, int dstG, SqlSession sqlMap, GroupMapper mapper) throws InternalException { - List ids = getGroupIdentitiesFullRaw(srcG, sqlMap); + List<IdentityBean> ids = getGroupIdentitiesFullRaw(srcG, mapper); GroupBean idInsParam = new GroupBean(); idInsParam.setId(dstG); - for (Object id: ids) + for (IdentityBean ib: ids) { - IdentityBean ib = (IdentityBean) id; EntityBean eb = null; try { @@ -264,7 +267,7 @@ } catch (IdentityNotKnownException e){} try { - sqlMap.insert("addToGroup", idInsParam); + mapper.addToGroup(idInsParam); } catch (PersistenceException e) { String msg = "DB error: Can't add to group id " + @@ -275,12 +278,12... [truncated message content] |