001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. 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.fcrepo.event.serialization; 019 020import static java.nio.charset.StandardCharsets.UTF_8; 021import static org.apache.jena.rdf.model.ModelFactory.createDefaultModel; 022 023import java.io.ByteArrayInputStream; 024 025import org.apache.jena.rdf.model.Model; 026import org.fcrepo.kernel.api.observer.Event; 027 028/** 029 * A basic serialization API for Fedora events 030 * @author acoburn 031 * @author dbernstein 032 */ 033public interface EventSerializer { 034 035 /** 036 * Convert an event to an Rdf Model 037 * @param evt the Fedora event 038 * @return an RDF model representing the event 039 */ 040 static Model toModel(final Event evt) { 041 final EventSerializer serializer = new JsonLDSerializer(); 042 final String json = serializer.serialize(evt); 043 final Model model = createDefaultModel(); 044 final String baseUrl = evt.getBaseUrl(); 045 model.read(new ByteArrayInputStream(json.getBytes(UTF_8)), baseUrl + evt.getPath(), "JSON-LD"); 046 return model; 047 } 048 049 /** 050 * Serialize a Event into a JSON String 051 * @param evt the Fedora event 052 * @return a JSON string 053 */ 054 String serialize(final Event evt); 055}