/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*******************************************************************************/
package org.ebayopensource.turmeric.policyservice.provider;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.persistence.EntityManagerFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import org.ebayopensource.turmeric.common.v1.types.AckValue;
import org.ebayopensource.turmeric.policyservice.exceptions.PolicyCreationException;
import org.ebayopensource.turmeric.policyservice.exceptions.PolicyDeleteException;
import org.ebayopensource.turmeric.policyservice.exceptions.PolicyFinderException;
import org.ebayopensource.turmeric.policyservice.exceptions.PolicyProviderException;
import org.ebayopensource.turmeric.policyservice.exceptions.PolicyProviderException.Category;
import org.ebayopensource.turmeric.policyservice.exceptions.PolicyUpdateException;
import org.ebayopensource.turmeric.policyservice.model.AuditHistory;
import org.ebayopensource.turmeric.policyservice.model.BasicAuth;
import org.ebayopensource.turmeric.policyservice.model.SubjectDAO;
import org.ebayopensource.turmeric.policyservice.model.SubjectDAOImpl;
import org.ebayopensource.turmeric.policyservice.provider.common.SubjectGroupEditObject;
import org.ebayopensource.turmeric.policyservice.provider.utils.PolicyServiceUtils;
import org.ebayopensource.turmeric.runtime.common.exceptions.ServiceException;
import org.ebayopensource.turmeric.security.v1.services.EntityHistory;
import org.ebayopensource.turmeric.security.v1.services.GroupCalculatorInfo;
import org.ebayopensource.turmeric.security.v1.services.KeyValuePair;
import org.ebayopensource.turmeric.security.v1.services.Subject;
import org.ebayopensource.turmeric.security.v1.services.SubjectGroup;
import org.ebayopensource.turmeric.security.v1.services.SubjectGroupKey;
import org.ebayopensource.turmeric.security.v1.services.SubjectGroupType;
import org.ebayopensource.turmeric.security.v1.services.SubjectKey;
import org.ebayopensource.turmeric.security.v1.services.SubjectTypeInfo;
import org.ebayopensource.turmeric.services.policyservice.provider.config.PolicyServiceProviderFactory;
import org.ebayopensource.turmeric.utils.jpa.JPAAroundAdvice;
import org.ebayopensource.turmeric.utils.jpa.PersistenceContext;
import org.ebayopensource.turmeric.utils.jpa.model.AuditContext;
/**
* The Class SubjectBase.
*/
public abstract class SubjectBase implements SubjectTypeProvider {
private final EntityManagerFactory factory;
private final SubjectTypeProvider impl;
/**
* Gets the subject type.
*
* @return the subject type
*/
protected abstract String getSubjectType();
/**
* Instantiates a new subject base.
*/
public SubjectBase() {
factory = PersistenceContext
.createEntityManagerFactory("policyservice");
ClassLoader classLoader = SubjectTypeProvider.class.getClassLoader();
Class[] interfaces = { SubjectTypeProvider.class };
SubjectTypeProvider target = new SubjectBaseImpl(getSubjectType());
impl = (SubjectTypeProvider) Proxy.newProxyInstance(classLoader,
interfaces, new JPAAroundAdvice(factory, target));
}
private class SubjectBaseImpl implements SubjectTypeProvider {
private final SubjectDAO subjectDAO;
private final String subjectType;
private CalculatedGroupMembershipProvider calcProvider;
public SubjectBaseImpl(String subjectType) {
this.subjectType = subjectType;
this.subjectDAO = new SubjectDAOImpl();
}
@Override
public Map<Long, Subject> getSubjectById(Long id)
throws PolicyFinderException {
Map<Long, Subject> result = new HashMap<Long, Subject>();
org.ebayopensource.turmeric.policyservice.model.Subject jpaSubject = subjectDAO
.findSubjectById(id);
if (jpaSubject != null) {
result.put(jpaSubject.getId(),
SubjectDAOImpl.convert(jpaSubject));
}
return result;
}
@Override
public Map<Long, Subject> getSubjectByName(String name)
throws PolicyFinderException {
Map<Long, Subject> result = new HashMap<Long, Subject>();
List<org.ebayopensource.turmeric.policyservice.model.Subject> jpaSubjects = subjectDAO
.findAllSubjectByName(name, subjectType);
if (jpaSubjects != null) {
for (org.ebayopensource.turmeric.policyservice.model.Subject jpaSubject : jpaSubjects) {
result.put(jpaSubject.getId(),
SubjectDAOImpl.convert(jpaSubject));
}
}
return result;
}
@Override
public Map<Long, Subject> getSubjectByType()
throws PolicyFinderException {
Map<Long, Subject> result = new HashMap<Long, Subject>();
List<org.ebayopensource.turmeric.policyservice.model.Subject> jpaSubjectList = subjectDAO
.findSubjectByType(subjectType);
if (jpaSubjectList != null && !jpaSubjectList.isEmpty()) {
for (org.ebayopensource.turmeric.policyservice.model.Subject jpaSubject : jpaSubjectList) {
result.put(jpaSubject.getId(),
SubjectDAOImpl.convert(jpaSubject));
}
}
return result;
}
@Override
public SubjectKey createSubject(Subject subject, SubjectKey createdBy)
throws PolicyCreationException {
if (createdBy != null) {
AuditContext.setUser(createdBy.getSubjectName());
}
try {
org.ebayopensource.turmeric.policyservice.model.Subject jpaSubject = SubjectDAOImpl
.convert(subject);
subjectDAO.persistSubject(jpaSubject);
SubjectKey subjectKey = new SubjectKey();
subjectKey.setSubjectId(jpaSubject.getId());
subjectKey.setSubjectName(subject.getSubjectName());
subjectKey.setSubjectType(subject.getSubjectType());
return subjectKey;
} catch (Exception ex) {
throw new PolicyCreationException(Category.SUBJECT,
subjectType, null, subject.getSubjectName(),
"Failed to create subject", ex);
} finally {
AuditContext.clear();
}
}
@Override
public void deleteSubject(Long subjectId) throws PolicyDeleteException {
subjectDAO.removeSubject(subjectId);
}
@Override
public Map<Long, SubjectGroup> findSubjectGroupInfoBySubject(
Long subjectId) throws PolicyFinderException {
Map<Long, SubjectGroup> result = new HashMap<Long, SubjectGroup>();
org.ebayopensource.turmeric.policyservice.model.Subject subject = subjectDAO
.findSubjectById(subjectId);
List<org.ebayopensource.turmeric.policyservice.model.SubjectGroup> jpaSubjectGroupList = subjectDAO
.findSubjectGroupBySubjectName(subject.getSubjectName(),
subjectType);
if (jpaSubjectGroupList != null && !jpaSubjectGroupList.isEmpty()) {
for (org.ebayopensource.turmeric.policyservice.model.SubjectGroup jpaSubjectGroup : jpaSubjectGroupList) {
result.put(jpaSubjectGroup.getId(),
SubjectDAOImpl.convert(jpaSubjectGroup));
}
}
return result;
}
@Override
public Map<Long, SubjectGroup> getSubjectGroupInfoById(Long id)
throws PolicyFinderException {
Map<Long, SubjectGroup> result = new HashMap<Long, SubjectGroup>();
org.ebayopensource.turmeric.policyservice.model.SubjectGroup jpaSubjectGroup = subjectDAO
.findSubjectGroupById(id);
if (jpaSubjectGroup != null) {
result.put(jpaSubjectGroup.getId(),
SubjectDAOImpl.convert(jpaSubjectGroup));
}
return result;
}
@Override
public Map<Long, SubjectGroup> getSubjectGroupInfoByName(String name)
throws PolicyFinderException {
Map<Long, SubjectGroup> result = new HashMap<Long, SubjectGroup>();
List<org.ebayopensource.turmeric.policyservice.model.SubjectGroup> jpaSubjectGroups = subjectDAO
.findAllSubjectGroupByName(name, subjectType);
if (jpaSubjectGroups != null) {
for (org.ebayopensource.turmeric.policyservice.model.SubjectGroup jpaSubjectGroup : jpaSubjectGroups) {
result.put(jpaSubjectGroup.getId(),
SubjectDAOImpl.convert(jpaSubjectGroup));
}
}
return result;
}
@Override
public Map<Long, SubjectGroup> getSubjectGroupInfoByType()
throws PolicyFinderException {
Map<Long, SubjectGroup> result = new HashMap<Long, SubjectGroup>();
List<org.ebayopensource.turmeric.policyservice.model.SubjectGroup> jpaSubjectGroupList = subjectDAO
.findSubjectGroupByType(subjectType);
if (jpaSubjectGroupList != null && !jpaSubjectGroupList.isEmpty()) {
for (org.ebayopensource.turmeric.policyservice.model.SubjectGroup jpaSubjectGroup : jpaSubjectGroupList) {
result.put(jpaSubjectGroup.getId(),
SubjectDAOImpl.convert(jpaSubjectGroup));
}
}
return result;
}
@Override
public boolean isExternalSubjectType() throws PolicyProviderException {
return false;
}
@Override
public Set<Subject> getExternalSubjectByName(String name)
throws PolicyFinderException {
Set<Subject> result = new HashSet<Subject>();
List<BasicAuth> externalSubjects = subjectDAO
.findExternalSubjectsByName(name);
if (externalSubjects != null) {
for (BasicAuth basicAuth : externalSubjects) {
result.add(SubjectDAOImpl.convert(basicAuth));
}
}
return result;
}
@Override
public Subject getExternalSubjectById(Long id)
throws PolicyFinderException {
return null;
}
@Override
public Map<Long, Subject> getSubjectAssignmentOfSubjectGroup(
Long subjectGroupId) throws PolicyFinderException {
Map<Long, Subject> result = new HashMap<Long, Subject>();
org.ebayopensource.turmeric.policyservice.model.SubjectGroup jpaSubjectGroup = subjectDAO
.findSubjectGroupById(subjectGroupId);
List<org.ebayopensource.turmeric.policyservice.model.Subject> jpaSubjectList = jpaSubjectGroup
.getSubjects();
if (jpaSubjectList != null && !jpaSubjectList.isEmpty()) {
for (org.ebayopensource.turmeric.policyservice.model.Subject jpaSubject : jpaSubjectList) {
result.put(jpaSubject.getId(),
SubjectDAOImpl.convert(jpaSubject));
}
}
return result;
}
@Override
public SubjectGroupKey createSubjectGroup(SubjectGroup subjectGroup,
SubjectGroupEditObject subjectGroupEditObject,
SubjectKey createdBy) throws PolicyCreationException,
PolicyUpdateException {
if (createdBy != null) {
AuditContext.setUser(createdBy.getSubjectName());
}
try {
org.ebayopensource.turmeric.policyservice.model.SubjectGroup jpaSubjectGroup = SubjectDAOImpl
.convert(subjectGroup);
List<org.ebayopensource.turmeric.policyservice.model.Subject> jpaSubjectList = jpaSubjectGroup
.getSubjects();
for (Long addId : subjectGroupEditObject.getAddSubjectList()) {
org.ebayopensource.turmeric.policyservice.model.Subject subject = subjectDAO
.findSubjectById(addId);
if (subject != null) {
jpaSubjectList.add(subject);
}
}
subjectDAO.persistSubjectGroup(jpaSubjectGroup);
SubjectGroupKey subjectGroupKey = new SubjectGroupKey();
subjectGroupKey.setSubjectGroupId(jpaSubjectGroup.getId());
subjectGroupKey.setSubjectGroupName(jpaSubjectGroup
.getSubjectGroupName());
subjectGroupKey
.setSubjectType(jpaSubjectGroup.getSubjectType());
return subjectGroupKey;
} catch (Exception ex) {
throw new PolicyCreationException(Category.SUBJECTGROUP,
subjectType, null, subjectGroup.getSubjectGroupName(),
"Failed to create subject group", ex);
} finally {
AuditContext.clear();
}
}
@Override
public SubjectGroupKey updateSubjectGroup(SubjectGroup subjectGroup,
SubjectGroupEditObject subjectGroupEditObject,
SubjectKey createdBy) throws PolicyUpdateException {
if (createdBy != null) {
AuditContext.setUser(createdBy.getSubjectName());
}
try {
Long id = PolicyServiceUtils.getSubjectGroupId(subjectGroup);
org.ebayopensource.turmeric.policyservice.model.SubjectGroup jpaSubjectGroup = null;
if (id == null) {
jpaSubjectGroup = subjectDAO
.findSubjectGroupByName(subjectGroup
.getSubjectGroupName());
} else {
jpaSubjectGroup = subjectDAO.findSubjectGroupById(id);
}
if (subjectGroup.getSubjectType() != null) {
jpaSubjectGroup.setSubjectType(subjectGroup
.getSubjectType());
}
if (subjectGroup.getSubjectGroupName() != null) {
jpaSubjectGroup.setSubjectGroupName(subjectGroup
.getSubjectGroupName());
}
if (subjectGroup.getDescription() != null) {
jpaSubjectGroup.setDescription(subjectGroup
.getDescription());
}
if (subjectGroup.getSubjectGroupCalculator() != null) {
jpaSubjectGroup.setSubjectGroupCalculator(subjectGroup
.getSubjectGroupCalculator());
}
jpaSubjectGroup.setApplyToEach(subjectGroup.isApplyToEach());
jpaSubjectGroup.setApplyToAll(subjectGroup.isApplyToAll());
List<org.ebayopensource.turmeric.policyservice.model.Subject> jpaSubjectList = jpaSubjectGroup
.getSubjects();
for (Long removeId : subjectGroupEditObject
.getRemoveSubjectList()) {
org.ebayopensource.turmeric.policyservice.model.Subject subject = subjectDAO
.findSubjectById(removeId);
if (subject != null) {
jpaSubjectList.remove(subject);
}
}
for (Long addId : subjectGroupEditObject.getAddSubjectList()) {
org.ebayopensource.turmeric.policyservice.model.Subject subject = subjectDAO
.findSubjectById(addId);
if (subject != null) {
jpaSubjectList.add(subject);
}
}
SubjectGroupKey subjectGroupKey = new SubjectGroupKey();
subjectGroupKey.setSubjectGroupId(jpaSubjectGroup.getId());
subjectGroupKey.setSubjectGroupName(jpaSubjectGroup
.getSubjectGroupName());
subjectGroupKey
.setSubjectType(jpaSubjectGroup.getSubjectType());
return subjectGroupKey;
} catch (Exception ex) {
throw new PolicyUpdateException(Category.SUBJECTGROUP,
subjectType, null, subjectGroup.getSubjectGroupName(),
"Failed to update subject group", ex);
}
}
@Override
public void deleteSubjectGroup(Long subjectGroupId)
throws PolicyDeleteException, PolicyUpdateException,
PolicyFinderException {
subjectDAO.removeSubjectGroup(subjectGroupId);
}
@Override
public GroupCalculatorInfo getGroupCalculator(String calculator)
throws PolicyProviderException {
GroupCalculatorInfo calculatorInfo = null;
SubjectGroupType subjectGroupType = new SubjectGroupType();
subjectGroupType.setCalculator(calculator);
subjectGroupType.setDomain(getSubjectType());
try {
calcProvider = PolicyServiceProviderFactory.getCalculatedGroupMembershipProvider();
} catch (Exception e) {
throw new PolicyFinderException(Category.SUBJECTGROUP,
getSubjectType(), "calculator initialization error ", e);
}
SubjectGroupType calculatedSG = calcProvider
.getCalculatedSG(subjectGroupType);
if (calculatedSG != null
&& calculatedSG.getDomain().equalsIgnoreCase(
getSubjectType())) {
calculatorInfo = new GroupCalculatorInfo();
calculatorInfo.setName(calculatedSG.getName());
calculatorInfo.setSubjectTypeName(calculatedSG.getDomain());
}
return calculatorInfo;
}
@Override
public List<GroupCalculatorInfo> getGroupCalculators()
throws PolicyFinderException {
List<GroupCalculatorInfo> calcGroupInfos = new ArrayList<GroupCalculatorInfo>();
try {
calcProvider = PolicyServiceProviderFactory.getCalculatedGroupMembershipProvider();
} catch (Exception e) {
throw new PolicyFinderException(Category.SUBJECTGROUP,
getSubjectType(), "calculator initialization error ", e);
}
Collection<SubjectGroupType> allCalculatedSGs = null;
try{
allCalculatedSGs = calcProvider
.getAllCalculatedSGs();
}catch (PolicyProviderException e) {
throw new PolicyFinderException(Category.SUBJECTGROUP,
getSubjectType(), "error in provider ", e);
}
if (allCalculatedSGs != null && allCalculatedSGs.isEmpty() == false) {
for (SubjectGroupType subjectGroupType : allCalculatedSGs) {
if (subjectGroupType.getDomain().equalsIgnoreCase(
getSubjectType())) {
GroupCalculatorInfo gcInfo = new GroupCalculatorInfo();
gcInfo.setName(subjectGroupType.getName());
gcInfo.setSubjectTypeName(subjectGroupType.getDomain());
calcGroupInfos.add(gcInfo);
}
}
}
return calcGroupInfos;
}
@Override
public SubjectTypeInfo getSubjectTypeInfo()
throws PolicyProviderException {
org.ebayopensource.turmeric.policyservice.model.SubjectType jpaSubjectType = subjectDAO
.findSubjectTypeByName(subjectType);
SubjectTypeInfo ret = new SubjectTypeInfo();
ret.setExternal(isExternalSubjectType());
if (jpaSubjectType != null) {
ret.setId(jpaSubjectType.getId());
}
ret.setName(subjectType);
return ret;
}
@Override
public List<EntityHistory> getAuditHistory(
SubjectGroupKey subjectGroupKey,
XMLGregorianCalendar startDate, XMLGregorianCalendar endDate)
throws PolicyFinderException {
String subjectType = subjectGroupKey.getSubjectType();
if (subjectType != null) {
return getAuditHistoryBySubjectGroupType(startDate, endDate,
subjectType);
}
return getAuditHistoryByIdOrName(subjectGroupKey, startDate, endDate);
}
private List<EntityHistory> getAuditHistoryByIdOrName(
SubjectGroupKey subjectGroupKey, XMLGregorianCalendar startDate,
XMLGregorianCalendar endDate) {
List<EntityHistory> entityHistory = new ArrayList<EntityHistory>();
Long subjectGroupId = subjectGroupKey.getSubjectGroupId();
if (subjectGroupId == null) {
org.ebayopensource.turmeric.policyservice.model.SubjectGroup subjectGroup = subjectDAO
.findSubjectGroupByName(subjectGroupKey
.getSubjectGroupName());
if (subjectGroup != null) {
subjectGroupId = subjectGroup.getId();
}
}
if (subjectGroupId != null) {
List<AuditHistory> auditHistory = subjectDAO
.getSubjectGroupHistory(subjectGroupId.longValue(),
startDate.toGregorianCalendar().getTime(),
endDate.toGregorianCalendar().getTime());
for (AuditHistory entry : auditHistory) {
entityHistory.add(AuditHistory.convert(entry));
}
}
return entityHistory;
}
private List<EntityHistory> getAuditHistoryBySubjectGroupType(
XMLGregorianCalendar startDate, XMLGregorianCalendar endDate, String subjectType) {
List<EntityHistory> entityHistory = new ArrayList<EntityHistory>();
List<AuditHistory> auditHistory = subjectDAO.getSubjectGroupHistory(
subjectType,
startDate.toGregorianCalendar().getTime(),
endDate.toGregorianCalendar().getTime());
for (AuditHistory entry : auditHistory) {
entityHistory.add(AuditHistory.convert(entry));
}
return entityHistory;
}
@Override
public List<EntityHistory> getAuditHistory(SubjectKey subjectKey,
XMLGregorianCalendar startDate, XMLGregorianCalendar endDate)
throws PolicyFinderException {
String subjectType = subjectKey.getSubjectType();
if (subjectType != null) {
return getAuditHistoryBySubjectType(startDate, endDate,
subjectType);
}
return getAuditHistoryByIdOrName(subjectKey, startDate, endDate);
}
private List<EntityHistory> getAuditHistoryBySubjectType(
XMLGregorianCalendar startDate, XMLGregorianCalendar endDate, String subjectType) {
List<EntityHistory> entityHistory = new ArrayList<EntityHistory>();
List<AuditHistory> auditHistory = subjectDAO.getSubjectHistory(
subjectType,
startDate.toGregorianCalendar().getTime(),
endDate.toGregorianCalendar().getTime());
for (AuditHistory entry : auditHistory) {
entityHistory.add(AuditHistory.convert(entry));
}
return entityHistory;
}
private List<EntityHistory> getAuditHistoryByIdOrName(
SubjectKey subjectKey, XMLGregorianCalendar startDate,
XMLGregorianCalendar endDate) {
List<EntityHistory> entityHistory = new ArrayList<EntityHistory>();
Long subjectId = subjectKey.getSubjectId();
if (subjectId == null) {
org.ebayopensource.turmeric.policyservice.model.Subject subject = subjectDAO
.findSubjectByName(subjectKey.getSubjectName());
if (subject != null) {
subjectId = subject.getId();
}
}
if (subjectId != null) {
List<AuditHistory> auditHistory = subjectDAO.getSubjectHistory(
subjectId.longValue(), startDate.toGregorianCalendar()
.getTime(), endDate.toGregorianCalendar()
.getTime());
for (AuditHistory entry : auditHistory) {
entityHistory.add(AuditHistory.convert(entry));
}
}
return entityHistory;
}
@Override
public void audit(SubjectKey subjectKey, String operationType,
SubjectKey loginSubject) throws PolicyFinderException {
subjectDAO.audit(subjectKey, operationType, loginSubject);
}
@Override
public void audit(SubjectGroupKey subjectGroupKey,
String operationType, SubjectKey loginSubject)
throws PolicyFinderException {
subjectDAO.audit(subjectGroupKey, operationType, loginSubject);
}
@Override
public List<KeyValuePair> getMetaData(String queryValue)
throws PolicyFinderException {
if (queryValue.equals("Type")) {
List<KeyValuePair> ret = new ArrayList<KeyValuePair>();
KeyValuePair valuePair = new KeyValuePair();
valuePair.setKey(subjectType);
try {
valuePair.setValue(isExternalSubjectType() ? "1" : "0");
} catch (PolicyProviderException ex) {
throw new PolicyFinderException(Category.SUBJECT,
subjectType, ex);
}
ret.add(valuePair);
return ret;
}
if (queryValue.equals("SubjectGroupCalculator")) {
List<GroupCalculatorInfo> calcList = getGroupCalculators();
if (calcList == null || calcList.size() == 0)
return null;
List<KeyValuePair> ret = new ArrayList<KeyValuePair>();
for (GroupCalculatorInfo info : calcList) {
KeyValuePair valuePair = new KeyValuePair();
valuePair.setKey(info.getName());
valuePair.setValue(info.getSubjectTypeName());
ret.add(valuePair);
}
return ret;
}
return null;
}
}
// The following methods are needed to allow wrapping this class with JPA
// transaction wrapper
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getSubjectById(java.lang.Long)
*/
@Override
public Map<Long, Subject> getSubjectById(Long id)
throws PolicyFinderException {
return impl.getSubjectById(id);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getSubjectByName(java.lang.String)
*/
@Override
public Map<Long, Subject> getSubjectByName(String name)
throws PolicyFinderException {
return impl.getSubjectByName(name);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getSubjectByType()
*/
@Override
public Map<Long, Subject> getSubjectByType() throws PolicyFinderException {
return impl.getSubjectByType();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#createSubject(org.ebayopensource.turmeric.security.v1.services.Subject, org.ebayopensource.turmeric.security.v1.services.SubjectKey)
*/
@Override
public SubjectKey createSubject(Subject subject, SubjectKey createdBy)
throws PolicyCreationException {
return impl.createSubject(subject, createdBy);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#deleteSubject(java.lang.Long)
*/
@Override
public void deleteSubject(Long subjectId) throws PolicyDeleteException {
impl.deleteSubject(subjectId);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#findSubjectGroupInfoBySubject(java.lang.Long)
*/
@Override
public Map<Long, SubjectGroup> findSubjectGroupInfoBySubject(Long subjectId)
throws PolicyFinderException {
return impl.findSubjectGroupInfoBySubject(subjectId);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getSubjectGroupInfoById(java.lang.Long)
*/
@Override
public Map<Long, SubjectGroup> getSubjectGroupInfoById(Long id)
throws PolicyFinderException {
return impl.getSubjectGroupInfoById(id);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getSubjectGroupInfoByName(java.lang.String)
*/
@Override
public Map<Long, SubjectGroup> getSubjectGroupInfoByName(String name)
throws PolicyFinderException {
return impl.getSubjectGroupInfoByName(name);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getSubjectGroupInfoByType()
*/
@Override
public Map<Long, SubjectGroup> getSubjectGroupInfoByType()
throws PolicyFinderException {
return impl.getSubjectGroupInfoByType();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#isExternalSubjectType()
*/
@Override
public boolean isExternalSubjectType() throws PolicyProviderException {
return false;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getExternalSubjectByName(java.lang.String)
*/
@Override
public Set<Subject> getExternalSubjectByName(String name)
throws PolicyFinderException {
return impl.getExternalSubjectByName(name);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getExternalSubjectById(java.lang.Long)
*/
@Override
public Subject getExternalSubjectById(Long id) throws PolicyFinderException {
return null;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getSubjectAssignmentOfSubjectGroup(java.lang.Long)
*/
@Override
public Map<Long, Subject> getSubjectAssignmentOfSubjectGroup(
Long subjectGroupId) throws PolicyFinderException {
return impl.getSubjectAssignmentOfSubjectGroup(subjectGroupId);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#createSubjectGroup(org.ebayopensource.turmeric.security.v1.services.SubjectGroup, org.ebayopensource.turmeric.policyservice.provider.common.SubjectGroupEditObject, org.ebayopensource.turmeric.security.v1.services.SubjectKey)
*/
@Override
public SubjectGroupKey createSubjectGroup(SubjectGroup subjectGroup,
SubjectGroupEditObject subjectGroupEditObject, SubjectKey createdBy)
throws PolicyCreationException, PolicyUpdateException {
return impl.createSubjectGroup(subjectGroup, subjectGroupEditObject,
createdBy);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#updateSubjectGroup(org.ebayopensource.turmeric.security.v1.services.SubjectGroup, org.ebayopensource.turmeric.policyservice.provider.common.SubjectGroupEditObject, org.ebayopensource.turmeric.security.v1.services.SubjectKey)
*/
@Override
public SubjectGroupKey updateSubjectGroup(SubjectGroup subjectGroup,
SubjectGroupEditObject subjectGroupEditObject, SubjectKey createdBy)
throws PolicyUpdateException {
return impl.updateSubjectGroup(subjectGroup, subjectGroupEditObject,
createdBy);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#deleteSubjectGroup(java.lang.Long)
*/
@Override
public void deleteSubjectGroup(Long subjectGroupId)
throws PolicyDeleteException, PolicyUpdateException,
PolicyFinderException {
impl.deleteSubjectGroup(subjectGroupId);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getGroupCalculator(java.lang.String)
*/
@Override
public GroupCalculatorInfo getGroupCalculator(String calculator)
throws PolicyProviderException {
return impl.getGroupCalculator(calculator);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getSubjectTypeInfo()
*/
@Override
public SubjectTypeInfo getSubjectTypeInfo() throws PolicyProviderException {
return impl.getSubjectTypeInfo();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getAuditHistory(org.ebayopensource.turmeric.security.v1.services.SubjectGroupKey, javax.xml.datatype.XMLGregorianCalendar, javax.xml.datatype.XMLGregorianCalendar)
*/
@Override
public List<EntityHistory> getAuditHistory(SubjectGroupKey subjectGroupKey,
XMLGregorianCalendar startDate, XMLGregorianCalendar endDate)
throws PolicyFinderException {
return impl.getAuditHistory(subjectGroupKey, startDate, endDate);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getAuditHistory(org.ebayopensource.turmeric.security.v1.services.SubjectKey, javax.xml.datatype.XMLGregorianCalendar, javax.xml.datatype.XMLGregorianCalendar)
*/
@Override
public List<EntityHistory> getAuditHistory(SubjectKey subjectKey,
XMLGregorianCalendar startDate, XMLGregorianCalendar endDate)
throws PolicyFinderException {
return impl.getAuditHistory(subjectKey, startDate, endDate);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#audit(org.ebayopensource.turmeric.security.v1.services.SubjectKey, java.lang.String, org.ebayopensource.turmeric.security.v1.services.SubjectKey)
*/
@Override
public void audit(SubjectKey subjectKey, String operationType,
SubjectKey loginSubject) throws PolicyFinderException {
impl.audit(subjectKey, operationType, loginSubject);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#audit(org.ebayopensource.turmeric.security.v1.services.SubjectGroupKey, java.lang.String, org.ebayopensource.turmeric.security.v1.services.SubjectKey)
*/
@Override
public void audit(SubjectGroupKey subjectGroupKey, String operationType,
SubjectKey loginSubject) throws PolicyFinderException {
impl.audit(subjectGroupKey, operationType, loginSubject);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getGroupCalculators()
*/
@Override
public List<GroupCalculatorInfo> getGroupCalculators()
throws PolicyFinderException {
return impl.getGroupCalculators();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policyservice.provider.SubjectTypeProvider#getMetaData(java.lang.String)
*/
@Override
public List<KeyValuePair> getMetaData(String queryValue)
throws PolicyFinderException {
return impl.getMetaData(queryValue);
}
}