| /******************************************************************************* |
| * Copyright (c) 2006 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.xml.core.internal.validation.errorcustomization; |
| |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.wst.xml.core.internal.XMLCorePlugin; |
| import org.osgi.framework.Bundle; |
| |
| /** |
| * An error message customizer delegate is used to allow for |
| * lazy loading of error customizers. |
| * |
| */ |
| public class ErrorMessageCustomizerDelegate implements IErrorMessageCustomizer |
| { |
| protected Bundle bundle = null; |
| protected String classname = null; |
| protected IErrorMessageCustomizer customizer = null; |
| |
| public ErrorMessageCustomizerDelegate(Bundle bundle, String classname) |
| { |
| this.bundle = bundle; |
| this.classname = classname; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.wst.xml.core.internal.validation.errorcustomization.IErrorMessageCustomizer#customizeMessage(org.eclipse.wst.xml.core.internal.validation.errorcustomization.ElementInformation, java.lang.String, java.lang.Object[]) |
| */ |
| public String customizeMessage(ElementInformation elementInfo, String errorKey, Object[] arguments) |
| { |
| if(customizer == null) |
| { |
| loadCustomizer(); |
| } |
| if(customizer == null) |
| { |
| return null; |
| } |
| return customizer.customizeMessage(elementInfo, errorKey, arguments); |
| } |
| |
| /** |
| * Load the customizer class. |
| */ |
| protected void loadCustomizer() |
| { |
| try |
| { |
| Class customizerClass = bundle.loadClass(classname); |
| customizer = (IErrorMessageCustomizer)customizerClass.newInstance(); |
| } |
| catch(Exception e) |
| { |
| XMLCorePlugin.getDefault().getLog().log( |
| new Status(IStatus.WARNING, |
| XMLCorePlugin.getDefault().getBundle().getSymbolicName(), |
| IStatus.OK, |
| "The XML validator error customizer was unable to load class " + classname, e)); //$NON-NLS-1$ |
| } |
| } |
| |
| |
| } |