001 /* 002 * Copyright (c) 2009 The JOMC Project 003 * Copyright (c) 2005 Christian Schulte <cs@jomc.org> 004 * All rights reserved. 005 * 006 * Redistribution and use in source and binary forms, with or without 007 * modification, are permitted provided that the following conditions 008 * are met: 009 * 010 * o Redistributions of source code must retain the above copyright 011 * notice, this list of conditions and the following disclaimer. 012 * 013 * o Redistributions in binary form must reproduce the above copyright 014 * notice, this list of conditions and the following disclaimer in 015 * the documentation and/or other materials provided with the 016 * distribution. 017 * 018 * THIS SOFTWARE IS PROVIDED BY THE JOMC PROJECT AND CONTRIBUTORS "AS IS" 019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 020 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 021 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JOMC PROJECT OR 022 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 023 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 024 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 025 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 026 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 027 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 028 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 029 * 030 * $Id: ModelObjectValidator.java 891 2009-11-02 03:40:00Z schulte2005 $ 031 * 032 */ 033 package org.jomc.model; 034 035 import javax.xml.bind.JAXBContext; 036 import javax.xml.bind.JAXBElement; 037 import javax.xml.bind.JAXBException; 038 import javax.xml.validation.Schema; 039 040 /** 041 * Validates object management and configuration model objects. 042 * 043 * @author <a href="mailto:cs@jomc.org">Christian Schulte</a> 044 * @version $Id: ModelObjectValidator.java 891 2009-11-02 03:40:00Z schulte2005 $ 045 */ 046 public interface ModelObjectValidator 047 { 048 049 /** 050 * Validates a given model object to conform to a given schema using a given context. 051 * 052 * @param modelObject The model object to validate. 053 * @param context The context to use for validating {@code modelObject}. 054 * @param schema The schema to use for validating {@code modelObect}. 055 * 056 * @return Report about the given model object. 057 * 058 * @throws NullPointerException if {@code modelObject}, {@code context} or {@code schema} is {@code null}. 059 * @throws JAXBException if validation fails. 060 * 061 * @see ModelManager#getContext(java.lang.ClassLoader) 062 * @see ModelManager#getSchema(java.lang.ClassLoader) 063 * @see ModelObjectValidationReport#isModelObjectValid() 064 */ 065 ModelObjectValidationReport validateModelObject( JAXBElement modelObject, JAXBContext context, Schema schema ) 066 throws NullPointerException, JAXBException; 067 068 /** 069 * Validates a given list of modules to conform to a given schema using a given context and to form a valid object 070 * management and configuration runtime model. 071 * 072 * @param modules The modules to validate. 073 * @param context The context to use for validating {@code modules}. 074 * @param schema The schema to use for validating {@code modules}. 075 * 076 * @return Report about the given modules. 077 * 078 * @throws NullPointerException if {@code modules}, {@code context} or {@code schema} is {@code null}. 079 * @throws JAXBException if validation fails. 080 * 081 * @see ModelManager#getContext(java.lang.ClassLoader) 082 * @see ModelManager#getSchema(java.lang.ClassLoader) 083 * @see ModelObjectValidationReport#isModelObjectValid() 084 */ 085 ModelObjectValidationReport validateModules( JAXBElement<Modules> modules, JAXBContext context, Schema schema ) 086 throws NullPointerException, JAXBException; 087 088 }