public void testSimpleEOFs() throws Exception { // 2 spaces byte[] data = { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20 }; for (int len = 5; len <= 7; ++len) { JsonParser parser = FACTORY.createParser(ObjectReadContext.empty(), data, 0, len); try { parser.nextToken(); fail("Should not pass"); } catch (CharConversionException e) { verifyException(e, "Unexpected EOF"); verifyException(e, "of a 4-byte UTF-32 char"); } parser.close(); } }
public void testSimpleInvalidUTF32() throws Exception { // 2 characters, space, then something beyond valid Unicode set byte[] data = { 0x00, 0x00, 0x00, 0x20, (byte) 0xFE, (byte) 0xFF, 0x00, 0x01 }; JsonParser parser = FACTORY.createParser(ObjectReadContext.empty(), data); try { parser.nextToken(); fail("Should not pass"); } catch (CharConversionException e) { verifyException(e, "Invalid UTF-32 character 0xfefe0001"); } parser.close(); }
private JComponent createDetails(String text, ActionListener action) { try { text = (action == null ? "<html>" : "<html><a href=\"_blank\">") + XMLUtil.toElementContent(text); //NOI18N } catch (CharConversionException ex) { throw new IllegalArgumentException(ex); } if (null == action) { return new JLabel(text); } JButton btn = new JButton(text); btn.setFocusable(false); btn.setBorder(BorderFactory.createEmptyBorder()); btn.setBorderPainted(false); btn.setFocusPainted(false); btn.setOpaque(false); btn.setContentAreaFilled(false); btn.addActionListener(action); btn.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); Color c = UIManager.getColor("nb.html.link.foreground"); //NOI18N if (c != null) { btn.setForeground(c); } return btn; }
/** * Append part of line that is before matched text. * * @param text Buffer to append to. * @param prefixStart Line index of the first character to be displayed. * @param matchStart Line index of the matched text. * @param trim Skip leading whitespace characters. */ private void appendMarkedTextPrefix(StringBuilder text, int prefixStart, int matchStart, boolean trim) throws CharConversionException { int first = 0; // index of first non-whitespace character if (trim) { CharSequence lineText = txtDetail.getLineText(); while (first < matchStart && lineText.charAt(first) <= '\u0020') { first++; } } if (prefixStart > 0 && first < prefixStart) { text.append(ELLIPSIS); } text.append(escape(txtDetail.getLineTextPart( Math.max(prefixStart, first), matchStart))); }
/** * Append part of line that contains the matched text. * * @param text Buffer to append to. * @param matchStart Line index of the first character of the matched * text. * @param matchEnd Line index after the last character of the matched * text. * @param lineLength Lenght of the line. * @param detailLength Lengt of matched part. */ private void appendMarkedTextMatch(StringBuilder text, int matchStart, int matchEnd, int lineLength, int matchedLength) throws CharConversionException { text.append("<b>"); // NOI18N if (matchedLength > DETAIL_DISPLAY_LENGTH) { int off = (DETAIL_DISPLAY_LENGTH - ELLIPSIS.length()) / 2; text.append(escape(txtDetail.getLineTextPart( matchStart, matchStart + off))); text.append("</b>"); text.append(ELLIPSIS); text.append("<b>"); text.append(escape(txtDetail.getLineTextPart( matchEnd - off, matchEnd))); } else { text.append(escape( txtDetail.getLineTextPart(matchStart, matchEnd))); } int markEnd = matchStart + txtDetail.getMarkLength(); text.append("</b>"); // NOI18N if (markEnd > lineLength) { // mark up to the text end? text.append(ELLIPSIS); } }
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { String text; if (value == UIUtil.WAIT_VALUE) { text = UIUtil.WAIT_VALUE; } else if (value == INVALID_PLATFORM) { text = INVALID_PLATFORM; renderer.setHtml(true); } else { ModuleDependency md = (ModuleDependency) value; // XXX the following is wrong; spec requires additional logic: boolean bold = boldfaceApiModules && md.getModuleEntry().getPublicPackages().length > 0; boolean deprecated = md.getModuleEntry().isDeprecated(); renderer.setHtml(bold || deprecated); String locName = md.getModuleEntry().getLocalizedName(); text = locName; if (bold || deprecated) { try { text = "<html>" + (bold ? "<b>" : "") + (deprecated ? "<s>" : "") + XMLUtil.toElementContent(locName); // NOI18N } catch (CharConversionException e) { // forget it } } } return renderer.getListCellRendererComponent(list, text, index, isSelected, cellHasFocus); }
public @Override String getHtmlDisplayName() { String htmlName = getOriginal().getHtmlDisplayName(); if (htmlName == null) { try { htmlName = XMLUtil.toElementContent(getOriginal().getDisplayName()); } catch (CharConversionException ex) { // ignore } } if (htmlName == null) { return null; } if (files != null && files.iterator().hasNext()) { try { String annotatedMagic = files.iterator().next().getFileSystem(). getDecorator().annotateNameHtml(MAGIC, files); if (annotatedMagic != null) { htmlName = annotatedMagic.replace(MAGIC, htmlName); } } catch (FileStateInvalidException e) { LOG.log(Level.INFO, null, e); } } return isMainAsync()? "<b>" + htmlName + "</b>" : htmlName; }
@Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { AnalyzerFactory a = (AnalyzerFactory) value; String text = SPIAccessor.ACCESSOR.getAnalyzerDisplayName(a); boolean isErroneous; synchronized (errors) { isErroneous = errors.containsKey(a); } if (isErroneous) { try { text = "<html><font color='ref'>" + XMLUtil.toElementContent(text); } catch (CharConversionException ex) { LOG.log(Level.FINE, null, ex); } } return super.getListCellRendererComponent(list, text, index, isSelected, cellHasFocus); }
@Messages("ERR_Coord_breaks_pom=Error: Group Id or Artifact Id would invalidate Maven POM xml file.") private boolean checkCoord(JTextField field) { String coord = field.getText(); boolean result = false; try { String escaped = XMLUtil.toAttributeValue(coord); result = escaped.length() == coord.length() && coord.indexOf(">") == -1 && coord.indexOf(" ") == -1; } catch (CharConversionException ex) { // ignore this one } if (result) { result = !containsMultiByte(coord); } else { category.setErrorMessage(ERR_Coord_breaks_pom()); } if (result) { category.setErrorMessage(null); } return result; }
@Override public String getHtmlDisplayName () { final Pair<String,JavaPlatform> platHolder = pp.getPlatform(); if (platHolder == null) { return null; } final JavaPlatform jp = platHolder.second(); if (jp == null || !jp.isValid()) { String displayName = this.getDisplayName(); try { displayName = XMLUtil.toElementContent(displayName); } catch (CharConversionException ex) { // OK, no annotation in this case return null; } return "<font color=\"#A40000\">" + displayName + "</font>"; //NOI18N } else { return null; } }
static String escape(String s) { if (s != null) { //unescape unicode sequences first (would be better if Pretty would not print them, but that might be more difficult): Matcher matcher = UNICODE_SEQUENCE.matcher(s); if (matcher.find()) { StringBuilder result = new StringBuilder(); int lastReplaceEnd = 0; do { result.append(s.substring(lastReplaceEnd, matcher.start())); int ch = Integer.parseInt(matcher.group(1), 16); result.append((char) ch); lastReplaceEnd = matcher.end(); } while (matcher.find()); result.append(s.substring(lastReplaceEnd)); s = result.toString(); } try { return XMLUtil.toAttributeValue(s); } catch (CharConversionException ex) { } } return null; }
@Override public void perform() { if (!terminal().isVisibleInContainer()) { return ; } String newTitle = terminal().getTitle(); if (terminal().isConnected() && newTitle != null) { String escaped; try { escaped = XMLUtil.toAttributeValue(newTitle); } catch (CharConversionException ex) { escaped = newTitle; } newTitle = "<html><b>" + escaped + "</b></html>"; // NOI18N } container().setTitle(terminal(), newTitle); }
@Override protected String messageHtmlName() { if (! obj.isValid()) { return null; } String name = obj.getNodeDelegate().getHtmlDisplayName(); if (name == null) { try { name = XMLUtil.toElementContent(obj.getNodeDelegate().getDisplayName()); } catch (CharConversionException ex) { return null; } } return annotateName(name, true, isModified(), !obj.getPrimaryFile().canWrite()); }
public static String target2String(TypeElement target) { final Name qualifiedName = target.getQualifiedName(); //#130759 if (qualifiedName == null) { Logger.getLogger(Utilities.class.getName()).warning("Target qualified name could not be resolved."); //NOI18N return ""; //NOI18N } else { String qnString = qualifiedName.toString(); if (qnString.length() == 0) { //probably an anonymous class qnString = target.asType().toString(); } try { qnString = XMLUtil.toElementContent(qnString); } catch (CharConversionException ex) { Logger.getLogger(Utilities.class.getName()).log(Level.FINE, null, ex); } return qnString; } }
private static void writeProperties( @NonNull final Map<String,String> props, @NonNull final Element element, @NonNull final Document doc) throws IOException { final Collection<String> sortedProps = new TreeSet<>(props.keySet()); for (String name : sortedProps) { final String val = props.get(name); try { XMLUtil.toAttributeValue(name); XMLUtil.toAttributeValue(val); final Element propElement = doc.createElement(ELM_PROPERTY); propElement.setAttribute(ATTR_NAME,name); propElement.setAttribute(ATTR_VALUE,val); element.appendChild(propElement); } catch (CharConversionException e) { LOG.log( Level.WARNING, "Cannot store property: {0} value: {1}", //NOI18N new Object[] { name, val }); } } }
@Override protected String messageToolTip() { if (isConsole()) { DatabaseConnection dc = getDatabaseConnection(); if (dc != null) { try { return String.format( "<html>%s<br>%s<br>JDBC-URL: %s</html>", XMLUtil.toAttributeValue( getDataObject().getPrimaryFile().getName()), XMLUtil.toAttributeValue(dc.getDisplayName()), XMLUtil.toAttributeValue(dc.getDatabaseURL())); } catch (CharConversionException ex) { LOGGER.log(Level.WARNING, "", ex); return getDataObject().getPrimaryFile().getName(); } } else { return getDataObject().getPrimaryFile().getName(); } } else { return super.messageToolTip(); } }
private JComponent createDetails( String text, ActionListener action ) { if( null == action ) { return new JLabel(text); } try { text = "<html><u>" + XMLUtil.toElementContent(text); //NOI18N } catch( CharConversionException ex ) { throw new IllegalArgumentException(ex); } JButton btn = new JButton(text); btn.setFocusable(false); btn.setBorder(BorderFactory.createEmptyBorder()); btn.setBorderPainted(false); btn.setFocusPainted(false); btn.setOpaque(false); btn.setContentAreaFilled(false); btn.addActionListener(action); btn.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); Color c = UIManager.getColor("nb.html.link.foreground"); //NOI18N if (c != null) { btn.setForeground(c); } return btn; }
public HudsonJobBuildNode(HudsonJobBuild build) { super(makeChildren(build), Lookups.singleton(build)); setName(Integer.toString(build.getNumber())); setDisplayName(NbBundle.getMessage(HudsonJobBuildNode.class, "HudsonJobBuildNode.displayName", build.getNumber())); Color effectiveColor; if (build.isBuilding()) { effectiveColor = build.getJob().getColor(); } else { effectiveColor = Utilities.getColorForBuild(build); } try { htmlDisplayName = effectiveColor.colorizeDisplayName(XMLUtil.toElementContent(getDisplayName())); } catch (CharConversionException x) { htmlDisplayName = null; } setIconBaseWithExtension(effectiveColor.iconBase()); this.build = build; }
/** * Writes a <code>String</code> to the client, without a carriage * return-line feed (CRLF) character at the end. * * @param s * the <code>String</code> to send to the client * @exception IOException * if an input or output exception occurred */ public void print(String s) throws IOException { if (s == null) s = "null"; int len = s.length(); for (int i = 0; i < len; i++) { char c = s.charAt(i); // // XXX NOTE: This is clearly incorrect for many strings, // but is the only consistent approach within the current // servlet framework. It must suffice until servlet output // streams properly encode their output. // if ((c & 0xff00) != 0) { // high order byte must be zero String errMsg = lStrings.getString("err.not_iso8859_1"); Object[] errArgs = new Object[1]; errArgs[0] = Character.valueOf(c); errMsg = MessageFormat.format(errMsg, errArgs); throw new CharConversionException(errMsg); } write(c); } }
/** * Writes a <code>String</code> to the client, * without a carriage return-line feed (CRLF) * character at the end. * * * @param s the <code>String</code> to send to the client * * @exception IOException if an input or output exception occurred * */ public void print(String s) throws IOException { if (s==null) s="null"; int len = s.length(); for (int i = 0; i < len; i++) { char c = s.charAt (i); // // XXX NOTE: This is clearly incorrect for many strings, // but is the only consistent approach within the current // servlet framework. It must suffice until servlet output // streams properly encode their output. // if ((c & 0xff00) != 0) { // high order byte must be zero String errMsg = lStrings.getString("err.not_iso8859_1"); Object[] errArgs = new Object[1]; errArgs[0] = Character.valueOf(c); errMsg = MessageFormat.format(errMsg, errArgs); throw new CharConversionException(errMsg); } write (c); } }
public int read(char buf [], int offset, int len) throws IOException { int i, c; if (instream == null) return -1; for (i = 0; i < len; i++) { if (start >= finish) { start = 0; finish = instream.read(buffer, 0, buffer.length); if (finish <= 0) { if (finish <= 0) this.close(); break; } } c = buffer[start++]; if ((c & 0x80) != 0) throw new CharConversionException("Illegal ASCII character, 0x" + Integer.toHexString(c & 0xff)); buf[offset + i] = (char) c; } if (i == 0 && finish <= 0) return -1; return i; }
/** * Convert a buffer of US-ASCII or ISO-8859-1-encoded bytes into * UTF-16 characters. * * <p>When readDataChunk () calls this method, the raw bytes are in * rawReadBuffer, and the final characters will appear in * readBuffer. * * @param count The number of bytes to convert. * @param mask For ASCII conversion, 0x7f; else, 0xff. * @see #readDataChunk * @see #rawReadBuffer * @see #readBuffer */ private void copyIso8859_1ReadBuffer(int count, char mask) throws IOException { int i, j; for (i = 0, j = readBufferPos; i < count; i++, j++) { char c = (char) (rawReadBuffer[i] & 0xff); if ((c & mask) != 0) { throw new CharConversionException("non-ASCII character U+" + Integer.toHexString(c)); } if (c == 0x0085 && xmlVersion == XML_11) { c = '\r'; } readBuffer[j] = c; if (c == '\r') { sawCR = true; } } readBufferLength = j; }
public static List<CountryLanguage> getAvailLangList() throws IOException, CharConversionException, InfinitiveLoopException { List<CountryLanguage> langList = new ArrayList<>(2); File i18nFolder = new File(CONF_BASEPATH); File[] langFiles = i18nFolder.listFiles((File dir, String name) -> name.endsWith(CONF_EXT) && !name.equalsIgnoreCase("encoding.ini")); Ini langIni = new Ini(); for (File langFile : langFiles) { langIni.load(langFile, Main.CONF_ENCODING); String langDesc = langIni.getKeyValue(" ??? ", "", "name"); String langFilename = langFile.getName(); langFilename = langFilename.substring(0, langFilename.indexOf('.')); langList.add(new CountryLanguage(langFilename, langDesc)); } return langList; }
private List<Redist> getRedistPatternsAndDesc(String configKey) throws CharConversionException, InfinitiveLoopException { List<Redist> redistList = new ArrayList<>(8); String[] redistTokens = ini.getKeyValue("", CONFIG_REDIST_PATTERNS, configKey).split("\"", 0); boolean FileDescToggle = true; String redistName = null; String redtsiDescription; for (String redist : redistTokens) { if (redist.length() > 0) { // Skip first and last tokens. if (FileDescToggle) { redistName = redist; } else { redtsiDescription = redist; redistList.add(new Redist(redistName, redtsiDescription)); } FileDescToggle ^= true; } } return redistList; }
public List<String> getPossibleSteamFolders() throws CharConversionException, InfinitiveLoopException { String folderList = ini.getKeyValue("/", CONFIG_STEAM_FOLDERS, CONFIG_STEAM_FOLDERS__POSSIBLE_DIRS); String[] patterns = folderList.split(Matcher.quoteReplacement(";"), 0); List<String> allSteamPaths = new ArrayList<>(80); File[] roots = File.listRoots(); String[] driveLetters = new String[roots.length]; for (int nRoot = 0; nRoot < roots.length; nRoot++) { driveLetters[nRoot] = roots[nRoot].getAbsolutePath(); } String varDriveLetter = /* Matcher.quoteReplacement( */ "{drive_letter}"/* ) */; for (String basePattern : patterns) { for (String driveLetter : driveLetters) { allSteamPaths.add(basePattern.replace(varDriveLetter, driveLetter)); } } Collections.addAll(allSteamPaths, patterns); return allSteamPaths; }
/** * Set the list of unchecked items to memorize. * * @param items the items to memorize. * @throws CharConversionException * @throws InfinitiveLoopException */ public void setCustomFolders(List<String> items) throws CharConversionException, InfinitiveLoopException { List<String> prevItems = getCustomFolders(); if (!prevItems.containsAll(items) || !items.containsAll(prevItems)) { updated = true; StringBuilder buffer = new StringBuilder(512); boolean first = true; for (String item : items) { if (first) { buffer.append(item); } else { buffer.append('\"').append(item); } first = false; } ini.setKeyValue(CONFIG_CUSTOM_FOLDERS, CONFIG_CUSTOM_FOLDERS__ITEM_LIST, buffer.toString()); } }
public List<Pattern> getDangerousFolders() throws CharConversionException, InfinitiveLoopException { List<Pattern> dangerousFolders = new ArrayList<>(16); String[] keys = ini.getKeyValue("", CONFIG_AUTOEXCLUDE_PATTERNS, CONFIG_AUTOEXCLUDE_PATTERNS__FOLDERS_LIST).split("\"", 0); for (String pattern : keys) { if (pattern.length() > 0) { try { dangerousFolders.add(Pattern.compile(pattern)); } catch (PatternSyntaxException ex) { Log.error(ex); } } } return dangerousFolders; }
/** * Set the list of unchecked items to memorize. * * @param items the items to memorize. * @throws CharConversionException * @throws InfinitiveLoopException */ public void setUncheckedItems(List<String> items) throws CharConversionException, InfinitiveLoopException { List<String> prevItems = getUncheckedItems(); if (!prevItems.containsAll(items) || !items.containsAll(prevItems)) { updated = true; StringBuilder buffer = new StringBuilder(512); boolean first = true; for (String item : items) { if (first) { buffer.append(item); } else { buffer.append('\"').append(item); } first = false; } ini.setKeyValue(CONFIG_UNCHECKED_REDIST_ITEMS, CONFIG_UNCHECKED_REDIST_ITEMS__ITEM_LIST, buffer.toString()); } }