001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.verifier.factory;
023:
024: /*
025: * Class org.jboss.verifier.factory.DefaultEventFactory
026: * Copyright (C) 2000 Juha Lindfors
027: *
028: * This library is free software; you can redistribute it and/or
029: * modify it under the terms of the GNU Lesser General Public
030: * License as published by the Free Software Foundation; either
031: * version 2 of the License, or (at your option) any later version
032: *
033: * This library is distributed in the hope that it will be useful,
034: * but WITHOUT ANY WARRANTY; without even the implied warranty of
035: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
036: * Lesser General Public License for more details.
037: *
038: * You should have received a copy of the GNU Lesser General Public
039: * License along with this library; if not, write to the Free Software
040: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
041: *
042: * This package and its source code is available at www.jboss.org
043: * $Id: DefaultEventFactory.java 57209 2006-09-26 12:21:57Z dimitris@jboss.org $
044: */
045:
046: // standard imports
047: import org.jboss.verifier.Section;
048: import org.jboss.verifier.event.VerificationEvent;
049: import org.jboss.verifier.event.VerificationEventGenerator;
050:
051: import java.io.IOException;
052: import java.io.InputStream;
053: import java.util.Map;
054: import java.util.MissingResourceException;
055: import java.util.Properties;
056:
057: /**
058: *
059: * @author Juha Lindfors (jplindfo@helsinki.fi)
060: * @version $Revision: 57209 $
061: * @since JDK 1.3
062: */
063: public class DefaultEventFactory implements VerificationEventFactory {
064: public final static String DEFAULT_MESSAGE_BUNDLE = "/org/jboss/verifier/DefaultMessages.properties";
065:
066: private Map msgTable;
067: private String msgBundle;
068:
069: /**
070: * Default constructor using the DEFAULT_MESSAGE_BUNDLE message
071: * file.
072: *
073: * @deprecated Use the other constructor with a specific Message
074: * Bundle for your own verification logic!
075: */
076: public DefaultEventFactory() {
077: this .msgBundle = DEFAULT_MESSAGE_BUNDLE;
078: msgTable = loadErrorMessages();
079: }
080:
081: /**
082: * Create a DefaultEventFactory using the specified message bundle
083: * for creating the Specification Violation Events
084: */
085: public DefaultEventFactory(String msgBundle) {
086: this .msgBundle = "/org/jboss/verifier/" + msgBundle;
087: msgTable = loadErrorMessages();
088: }
089:
090: public VerificationEvent createSpecViolationEvent(
091: VerificationEventGenerator source, Section section) {
092: VerificationEvent event = new VerificationEvent(source);
093:
094: event.setState(VerificationEvent.WARNING);
095: event.setSection(section);
096: event.setMessage((String) msgTable.get(section.getSection()));
097:
098: return event;
099: }
100:
101: public VerificationEvent createBeanVerifiedEvent(
102: VerificationEventGenerator source) {
103: VerificationEvent event = new VerificationEvent(source);
104:
105: event.setState(VerificationEvent.OK);
106: event.setMessage("Verified.");
107:
108: return event;
109: }
110:
111: public String getMessageBundle() {
112: return msgBundle;
113: }
114:
115: /*
116: *****************************************************************************
117: *
118: * PRIVATE INSTANCE METHODS
119: *
120: *****************************************************************************
121: */
122:
123: /*
124: * loads messages from a property file
125: */
126: private Map loadErrorMessages() {
127: try {
128: InputStream in = getClass().getResourceAsStream(msgBundle);
129: Properties props = new Properties();
130: props.load(in);
131:
132: return props;
133: } catch (IOException e) {
134: throw new MissingResourceException("I/O failure: "
135: + e.getMessage(), msgBundle, "");
136: } catch (NullPointerException e) {
137: throw new MissingResourceException("Resource not found.",
138: msgBundle, "");
139: }
140: }
141:
142: }
143:
144: /*
145: vim:ts=3:sw=3:et
146: */
|