001/******************************************************************************* 002 * Copyright 2018 The MIT Internet Trust Consortium 003 * 004 * Portions copyright 2011-2013 The MITRE Corporation 005 * 006 * Licensed under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 *******************************************************************************/ 018package org.mitre.openid.connect.repository.impl; 019 020import static org.mitre.util.jpa.JpaUtil.saveOrUpdate; 021 022import java.util.Collection; 023 024import javax.persistence.EntityManager; 025import javax.persistence.PersistenceContext; 026import javax.persistence.TypedQuery; 027 028import org.mitre.openid.connect.model.WhitelistedSite; 029import org.mitre.openid.connect.repository.WhitelistedSiteRepository; 030import org.mitre.util.jpa.JpaUtil; 031import org.springframework.stereotype.Repository; 032import org.springframework.transaction.annotation.Transactional; 033 034/** 035 * JPA WhitelistedSite repository implementation 036 * 037 * @author Michael Joseph Walsh, aanganes 038 * 039 */ 040@Repository 041public class JpaWhitelistedSiteRepository implements WhitelistedSiteRepository { 042 043 @PersistenceContext(unitName="defaultPersistenceUnit") 044 private EntityManager manager; 045 046 @Override 047 @Transactional(value="defaultTransactionManager") 048 public Collection<WhitelistedSite> getAll() { 049 TypedQuery<WhitelistedSite> query = manager.createNamedQuery(WhitelistedSite.QUERY_ALL, WhitelistedSite.class); 050 return query.getResultList(); 051 } 052 053 @Override 054 @Transactional(value="defaultTransactionManager") 055 public WhitelistedSite getById(Long id) { 056 return manager.find(WhitelistedSite.class, id); 057 } 058 059 @Override 060 @Transactional(value="defaultTransactionManager") 061 public void remove(WhitelistedSite whitelistedSite) { 062 WhitelistedSite found = manager.find(WhitelistedSite.class, whitelistedSite.getId()); 063 064 if (found != null) { 065 manager.remove(found); 066 } else { 067 throw new IllegalArgumentException(); 068 } 069 } 070 071 @Override 072 @Transactional(value="defaultTransactionManager") 073 public WhitelistedSite save(WhitelistedSite whiteListedSite) { 074 return saveOrUpdate(whiteListedSite.getId(), manager, whiteListedSite); 075 } 076 077 @Override 078 @Transactional(value="defaultTransactionManager") 079 public WhitelistedSite update(WhitelistedSite oldWhitelistedSite, WhitelistedSite whitelistedSite) { 080 // sanity check 081 whitelistedSite.setId(oldWhitelistedSite.getId()); 082 083 return saveOrUpdate(oldWhitelistedSite.getId(), manager, whitelistedSite); 084 } 085 086 @Override 087 @Transactional(value="defaultTransactionManager") 088 public WhitelistedSite getByClientId(String clientId) { 089 TypedQuery<WhitelistedSite> query = manager.createNamedQuery(WhitelistedSite.QUERY_BY_CLIENT_ID, WhitelistedSite.class); 090 query.setParameter(WhitelistedSite.PARAM_CLIENT_ID, clientId); 091 return JpaUtil.getSingleResult(query.getResultList()); 092 } 093 094 @Override 095 @Transactional(value="defaultTransactionManager") 096 public Collection<WhitelistedSite> getByCreator(String creatorId) { 097 TypedQuery<WhitelistedSite> query = manager.createNamedQuery(WhitelistedSite.QUERY_BY_CREATOR, WhitelistedSite.class); 098 query.setParameter(WhitelistedSite.PARAM_USER_ID, creatorId); 099 100 return query.getResultList(); 101 } 102}