List of usage examples for org.springframework.boot.configurationprocessor.metadata ConfigurationMetadata getItems
public List<ItemMetadata> getItems()
From source file:com.keevosh.springframework.boot.netbeans.SpringBootConfigurationCompletionProvider.java
@Override public CompletionTask createTask(int queryType, JTextComponent jtc) { if (queryType != CompletionProvider.COMPLETION_QUERY_TYPE) { return null; }//from w ww . j a v a 2s. c om final TopComponent activeTC = TopComponent.getRegistry().getActivated(); if (null == activeTC) { return null; } final FileObject fileObject = activeTC.getLookup().lookup(FileObject.class); if (null == fileObject) { return null; } final ClassPath cp = ClassPath.getClassPath(fileObject, ClassPath.EXECUTE); if (null == cp) { return null; } try { cp.getClassLoader(false) .loadClass("org.springframework.boot.context.properties.ConfigurationProperties"); } catch (ClassNotFoundException ex) { return null; } final List<FileObject> configurationMetaFiles = cp .findAllResources("META-INF/spring-configuration-metadata.json"); final List<ConfigurationMetadata> configurationMetas = new ArrayList<ConfigurationMetadata>( configurationMetaFiles.size()); final JsonMarshaller jsonMarsaller = new JsonMarshaller(); for (FileObject configurationMetaFile : configurationMetaFiles) { try { configurationMetas.add(jsonMarsaller.read(configurationMetaFile.getInputStream())); } catch (IOException ex) { Exceptions.printStackTrace(ex); } } return new AsyncCompletionTask(new AsyncCompletionQuery() { @Override protected void query(CompletionResultSet completionResultSet, Document document, int caretOffset) { String filter = null; int startOffset = caretOffset - 1; try { final StyledDocument bDoc = (StyledDocument) document; final int lineStartOffset = getRowFirstNonWhite(bDoc, caretOffset); final char[] line = bDoc.getText(lineStartOffset, caretOffset - lineStartOffset).toCharArray(); final int whiteOffset = indexOfWhite(line); filter = new String(line, whiteOffset + 1, line.length - whiteOffset - 1); if (whiteOffset > 0) { startOffset = lineStartOffset + whiteOffset + 1; } else { startOffset = lineStartOffset; } } catch (BadLocationException ex) { Exceptions.printStackTrace(ex); } for (ConfigurationMetadata configurationMeta : configurationMetas) { for (ItemMetadata item : configurationMeta.getItems()) { if (item.isOfItemType(ItemMetadata.ItemType.PROPERTY) && !item.getName().equals("") && item.getName().startsWith(filter)) { completionResultSet.addItem( new SpringBootConfigurationCompletionItem(item, cp, startOffset, caretOffset)); } } } completionResultSet.finish(); } }, jtc); }