001 /** 002 * Copyright 2005-2012 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.rice.kim.impl.jaxb; 017 018 import java.io.InputStream; 019 import java.io.OutputStream; 020 import java.util.List; 021 022 import javax.xml.bind.JAXBContext; 023 import javax.xml.bind.JAXBException; 024 import javax.xml.bind.Marshaller; 025 import javax.xml.bind.Unmarshaller; 026 027 import org.kuali.rice.core.impl.jaxb.DataXmlDTO; 028 029 /** 030 * Helper class for importing and exporting KIM XML. 031 * 032 * <p>TODO: Should this be converted into a service instead? 033 * 034 * @author Kuali Rice Team (rice.collab@kuali.org) 035 */ 036 public final class KimXmlUtil { 037 // Do not allow outside code to instantiate this class. 038 private KimXmlUtil() {} 039 040 /** 041 * Parses permissions and/or roles from XML. 042 * 043 * @param inputStream The input stream to read the XML from. 044 */ 045 public static void parseKimXml(InputStream inputStream) { 046 try { 047 JAXBContext jaxbContext = JAXBContext.newInstance(DataXmlDTO.class); 048 Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); 049 unmarshaller.unmarshal(inputStream); 050 } catch (JAXBException e) { 051 throw new RuntimeException(e); 052 } 053 } 054 055 /** 056 * Exports one or more sets of KIM objects to XML. 057 * 058 * @param outputStream The output stream to write the XML to. 059 * @param permissions The KIM permissions to export; set to a null or empty list to prevent exportation of a <permissionData> element. 060 * @param roles The KIM roles to export; set to a null or empty list to prevent exportation of a <roleData> element. 061 */ 062 public static void exportKimXml(OutputStream outputStream, List<? extends Object> permissions, List<? extends Object> roles) { 063 PermissionDataXmlDTO permissionData = (permissions != null && !permissions.isEmpty()) ? 064 new PermissionDataXmlDTO(new PermissionsXmlDTO(permissions)) : null; 065 RoleDataXmlDTO roleData = (roles != null && !roles.isEmpty()) ? 066 new RoleDataXmlDTO(new RolesXmlDTO(roles)) : null; 067 try { 068 JAXBContext jaxbContext = JAXBContext.newInstance(DataXmlDTO.class); 069 Marshaller marshaller = jaxbContext.createMarshaller(); 070 marshaller.marshal(new DataXmlDTO(permissionData, roleData), outputStream); 071 } catch (JAXBException e) { 072 throw new RuntimeException(e); 073 } 074 } 075 }