@SuppressWarnings("deprecation") protected static void checkSettingsEqual( JDOMExternalizable expected, JDOMExternalizable settings, String message) throws Exception { if (expected == null || settings == null) return; Element oldS = new Element("temp"); expected.writeExternal(oldS); Element newS = new Element("temp"); settings.writeExternal(newS); String newString = JDOMUtil.writeElement(newS, "\n"); String oldString = JDOMUtil.writeElement(oldS, "\n"); Assert.assertEquals(message, oldString, newString); }
@Nullable public static Configuration load(final InputStream is) throws IOException, JDOMException { try { final Document document = JDOMUtil.loadDocument(is); final ArrayList<Element> elements = new ArrayList<Element>(); elements.add(document.getRootElement()); elements.addAll(document.getRootElement().getChildren("component")); final Element element = ContainerUtil.find( elements, new Condition<Element>() { public boolean value(final Element element) { return "component".equals(element.getName()) && COMPONENT_NAME.equals(element.getAttributeValue("name")); } }); if (element != null) { final Configuration cfg = new Configuration(); cfg.loadState(element, false); return cfg; } return null; } finally { is.close(); } }
static { // Radar #5755208: Command line Java applications need a way to launch without a Dock icon. System.setProperty("apple.awt.UIElement", "true"); try { CodeInsightSettings defaultSettings = new CodeInsightSettings(); Element oldS = new Element("temp"); defaultSettings.writeExternal(oldS); DEFAULT_SETTINGS_EXTERNALIZED = JDOMUtil.writeElement(oldS, "\n"); } catch (Exception e) { throw new RuntimeException(e); } }
@Nullable static IdeaPluginDescriptorImpl loadDescriptorFromJar(File file, @NonNls String fileName) { try { URI fileURL = file.toURI(); URL jarURL = new URL( "jar:" + StringUtil.replace(fileURL.toASCIIString(), "!", "%21") + "!/META-INF/" + fileName); IdeaPluginDescriptorImpl descriptor = new IdeaPluginDescriptorImpl(file); FileInputStream in = new FileInputStream(file); ZipInputStream zipStream = new ZipInputStream(in); try { ZipEntry entry = zipStream.getNextEntry(); if (entry.getName().equals(JarMemoryLoader.SIZE_ENTRY)) { entry = zipStream.getNextEntry(); if (entry.getName().equals("META-INF/" + fileName)) { byte[] content = FileUtil.loadBytes(zipStream, (int) entry.getSize()); Document document = JDOMUtil.loadDocument(new ByteArrayInputStream(content)); descriptor.readExternal(document, jarURL); return descriptor; } } } finally { zipStream.close(); in.close(); } descriptor.readExternal(jarURL); return descriptor; } catch (XmlSerializationException e) { getLogger().info("Cannot load " + file, e); prepareLoadingPluginsErrorMessage( "Plugin file " + file.getName() + " contains invalid plugin descriptor file."); } catch (FileNotFoundException e) { return null; } catch (Exception e) { getLogger().info("Cannot load " + file, e); } catch (Throwable e) { getLogger().info("Cannot load " + file, e); } return null; }
public static CompositeException doCheckForSettingsDamage( @NotNull CodeStyleSettings oldCodeStyleSettings, @NotNull CodeStyleSettings currentCodeStyleSettings) throws Exception { CompositeException result = new CompositeException(); final CodeInsightSettings settings = CodeInsightSettings.getInstance(); try { Element newS = new Element("temp"); settings.writeExternal(newS); Assert.assertEquals( "Code insight settings damaged", DEFAULT_SETTINGS_EXTERNALIZED, JDOMUtil.writeElement(newS, "\n")); } catch (AssertionError error) { CodeInsightSettings clean = new CodeInsightSettings(); Element temp = new Element("temp"); clean.writeExternal(temp); settings.loadState(temp); result.add(error); } currentCodeStyleSettings.getIndentOptions(StdFileTypes.JAVA); try { checkSettingsEqual( oldCodeStyleSettings, currentCodeStyleSettings, "Code style settings damaged"); } catch (AssertionError e) { result.add(e); } finally { currentCodeStyleSettings.clearCodeStyleSettings(); } try { InplaceRefactoring.checkCleared(); } catch (AssertionError e) { result.add(e); } try { StartMarkAction.checkCleared(); } catch (AssertionError e) { result.add(e); } return result; }