001 package org.nanocontainer.script;
002
003 import org.picocontainer.PicoException;
004
005 /**
006 * Indicates that a given file extension has no corresponding builder. The
007 * message will also indicate all supported builders.
008 * @author Michael Rimov
009 * @version 1.0
010 */
011 public class UnsupportedScriptTypeException extends PicoException {
012
013 private final String specifiedFileExtension;
014
015 private final String[] allSupportedFileExtensions;
016
017 public UnsupportedScriptTypeException(String specifiedFileExtension, String[] allSupportedFileExtensions) {
018 super();
019 this.specifiedFileExtension = specifiedFileExtension;
020 this.allSupportedFileExtensions = allSupportedFileExtensions;
021 }
022
023
024
025 /**
026 * Transforms the constructor arguments into a real exption
027 * @param specifiedFileExtension String
028 * @param allSupportedFileExtensions String[]
029 * @return String
030 */
031 private String buildExceptionMessage() {
032 StringBuffer message = new StringBuffer(48);
033 message.append("Unsupported file extension '");
034 message.append(specifiedFileExtension);
035 message.append("'. Supported extensions are: [");
036
037 if (allSupportedFileExtensions != null) {
038 boolean needPipe = false;
039 for (int i = 0; i < allSupportedFileExtensions.length; i++) {
040 if (needPipe) {
041 message.append("|");
042 } else {
043 needPipe = true;
044 }
045
046 message.append(allSupportedFileExtensions[i]);
047 }
048
049 message.append("].");
050 } else {
051 message.append(" null ");
052 }
053
054 return message.toString();
055 }
056
057 public String getMessage() {
058 return buildExceptionMessage();
059 }
060
061 public String[] getSystemSupportedExtensions() {
062 return allSupportedFileExtensions;
063 }
064
065 public String getRequestedExtension() {
066 return specifiedFileExtension;
067 }
068
069 }