@NotNull public Map<Integer, Void> map(final FileContent inputData) { final Map<Integer, Void> map = new HashMap<Integer, Void>(); NanoXmlUtil.parse( new StringReader(inputData.getContentAsText().toString()), new NanoXmlUtil.IXMLBuilderAdapter() { private boolean isFirstElement = true; public void startElement( final String elemName, final String nsPrefix, final String nsURI, final String systemID, final int lineNr) throws Exception { if (isFirstElement) { if (!"project".equalsIgnoreCase(elemName)) { stop(); } isFirstElement = false; } else { if ("import".equalsIgnoreCase(elemName) || "include".equalsIgnoreCase(elemName)) { map.put(ANT_FILES_WITH_IMPORTS_KEY, null); stop(); } } } public void addAttribute( final String key, final String nsPrefix, final String nsURI, final String value, final String type) throws Exception { // if (myAttributes != null) { // myAttributes.add(key); // } } public void elementAttributesProcessed( final String name, final String nsPrefix, final String nsURI) throws Exception { // if (myAttributes != null) { // if (!(myAttributes.contains("name") && myAttributes.contains("default"))) { // stop(); // } // myAttributes = null; // } } }); return map; }
@Nullable private static String getControllerClassName(String content) { if (!content.contains(JavaFxNamespaceDataProvider.JAVAFX_NAMESPACE)) { return null; } final String[] className = new String[] {null}; class StopException extends RuntimeException {} try { NanoXmlUtil.parse( new StringReader(content), new NanoXmlUtil.IXMLBuilderAdapter() { private boolean myFxRootUsed = false; @Override public void addAttribute( String key, String nsPrefix, String nsURI, String value, String type) throws Exception { if (value != null && (FxmlConstants.FX_CONTROLLER.equals(nsPrefix + ":" + key) || FxmlConstants.TYPE.equals(key) && myFxRootUsed)) { className[0] = value; } } @Override public void elementAttributesProcessed(String name, String nsPrefix, String nsURI) throws Exception { throw new StopException(); } @Override public void startElement( String name, String nsPrefix, String nsURI, String systemID, int lineNr) throws Exception { myFxRootUsed = FxmlConstants.FX_ROOT.equals(nsPrefix + ":" + name); } }); } catch (StopException ignore) { } return className[0]; }