001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package javax.xml.bind.helpers; 018 019 import java.net.URL; 020 021 import javax.xml.bind.ValidationEventHandler; 022 import javax.xml.bind.ValidationEvent; 023 import javax.xml.bind.ValidationEventLocator; 024 025 import org.w3c.dom.Node; 026 027 public class DefaultValidationEventHandler implements ValidationEventHandler { 028 029 public boolean handleEvent(ValidationEvent event) { 030 if (event == null) { 031 throw new IllegalArgumentException(); 032 } 033 String severity = null; 034 boolean retVal = false; 035 switch(event.getSeverity()) { 036 case ValidationEvent.WARNING: 037 severity = "[WARNING]: "; 038 retVal = true; 039 break; 040 041 case ValidationEvent.ERROR: 042 severity = "[ERROR]: "; 043 retVal = false; 044 break; 045 046 case ValidationEvent.FATAL_ERROR: 047 severity = "[FATAL_ERROR]: "; 048 retVal = false; 049 break; 050 } 051 String location = getLocation(event); 052 System.out.println("DefaultValidationEventHandler " + severity + " " + event.getMessage() + "\n Location: " + location); 053 return retVal; 054 } 055 056 private String getLocation(ValidationEvent event) { 057 StringBuffer msg = new StringBuffer(); 058 ValidationEventLocator locator = event.getLocator(); 059 if (locator != null) { 060 URL url = locator.getURL(); 061 Object obj = locator.getObject(); 062 Node node = locator.getNode(); 063 int line = locator.getLineNumber(); 064 if(url != null || line != -1) { 065 msg.append("line ").append(line); 066 if(url != null) { 067 msg.append(" of ").append(url); 068 } 069 } else { 070 if (obj != null) { 071 msg.append(" obj: ").append(obj.toString()); 072 } else if(node != null) { 073 msg.append(" node: ").append(node.toString()); 074 } 075 } 076 } else { 077 msg.append("unavailable"); 078 } 079 return msg.toString(); 080 } 081 082 }