Java 类javax.lang.model.element.QualifiedNameable 实例源码
项目:incubator-netbeans
文件:ImmutableTreeTranslator.java
public Tree visitMemberSelect(MemberSelectTree tree, Object p) {
if (tree instanceof QualIdentTree) {
QualIdentTree qit = (QualIdentTree) tree;
Element el = qit.sym;
if (el == null) {
el = overlay.resolve(model, elements, qit.getFQN());
} else {
if (el.getKind().isClass() || el.getKind().isInterface() || el.getKind() == ElementKind.PACKAGE) {
el = overlay.resolve(model, elements, ((QualifiedNameable) el).getQualifiedName().toString(), elements.getModuleOf(el));
}
}
return importAnalysis.resolveImport(tree, el);
} else {
return rewriteChildren(tree);
}
}
项目:incubator-netbeans
文件:ElementOverlay.java
private String fqnFor(Tree t) {
Element el = ASTService.getElementImpl(t);
if (el != null) {
if (el.getKind().isClass() || el.getKind().isInterface() || el.getKind() == ElementKind.PACKAGE) {
return ((QualifiedNameable) el).getQualifiedName().toString();
} else {
Logger.getLogger(ElementOverlay.class.getName()).log(Level.SEVERE, "Not a QualifiedNameable: {0}", el);
return null;
}
} else if (t instanceof QualIdentTree) {
return ((QualIdentTree) t).getFQN();
} else if (t.getKind() == Kind.PARAMETERIZED_TYPE) {
return fqnFor(((ParameterizedTypeTree) t).getType());
} else {
Logger.getLogger(ElementOverlay.class.getName()).log(Level.FINE, "No element and no QualIdent");
return null;
}
}
项目:neo4j-sproc-compiler
文件:DsvSerializer.java
private void serialize( Path root, DsvConfiguration configuration, Collection<MethodPartition> partitions,
Function<ExecutableElement,QualifiedNameable> keyFunction )
{
partitions.forEach( partition ->
{
String fileSuffix = partition.getFileSuffix();
partition.getMethods().stream().collect( Collectors.groupingBy( keyFunction ) ).entrySet().forEach( kv ->
{
Either<DsvExportError,List<String>> headerParsingResult =
fieldExporter.exportHeaders( configuration.getFieldDelimiter(), configuration.getRawHeaders() );
headerParsingResult.consume( messagePrinter::print, ( headers ) ->
{
File file = new File( root.toFile(),
String.format( "%s%s.csv", kv.getKey().getQualifiedName(), fileSuffix ) );
serializeWithHeaders( file, configuration, kv.getValue(), headers );
} );
} );
} );
}
项目:buck
文件:TreeBackedTypeResolutionSimulator.java
@Override
protected TreeBackedResolvedType resolvePackage(
TreePath referencingPath,
PackageElement referencedPackage,
QualifiedNameable canonicalPackage) {
// PackageElements are not considered to be enclosed by their parent elements, but
// our logic is a lot simpler if we can pretend they are.
TreeBackedResolvedType enclosingElement = null;
String qualifiedName = canonicalPackage.getQualifiedName().toString();
int lastDot = qualifiedName.lastIndexOf('.');
if (lastDot > 0) {
String enclosingPackageQualifiedName = qualifiedName.substring(0, lastDot);
PackageElement enclosingPackage =
Preconditions.checkNotNull(elements.getPackageElement(enclosingPackageQualifiedName));
enclosingElement = resolveEnclosingElement(enclosingPackage);
}
return new TreeBackedResolvedType(referencingPath, canonicalPackage, enclosingElement);
}
项目:buck
文件:InterfaceScannerTest.java
@Override
public void onImport(
boolean isStatic,
boolean isStarImport,
TreePath leafmostElementPath,
QualifiedNameable leafmostElement,
Name memberName) {
if (!isStatic) {
if (isStarImport) {
starImportedElements.add(leafmostElement);
} else {
importedTypes.add((TypeElement) leafmostElement);
}
} else if (!isStarImport) {
staticImportOwners.put(memberName.toString(), (TypeElement) leafmostElement);
} else {
staticStarImports.add((TypeElement) leafmostElement);
}
}
项目:damapping
文件:ProcessingEnvironmentWrapper.java
@Nullable
private AnnotationMirror getAnnotationMirror(final Class<? extends Annotation> annotationClass,
final Element element) {
Optional<? extends AnnotationMirror> annotationMirror = FluentIterable
.from(element.getAnnotationMirrors())
.filter(new Predicate<AnnotationMirror>() {
@Override
public boolean apply(@Nullable AnnotationMirror o) {
String qualifiedName = ((QualifiedNameable) (o.getAnnotationType().asElement())).getQualifiedName()
.toString();
return qualifiedName.equals(annotationClass.getName());
}
}
).first();
if (annotationMirror.isPresent()) {
return annotationMirror.get();
}
return null;
}
项目:neo4j-sproc-compiler
文件:DsvSerializer.java
private Function<ExecutableElement,QualifiedNameable> groupByFileBasename( DsvGroupingStrategy grouping )
{
switch ( grouping )
{
case SINGLE:
return ( ignored ) -> new ConstantQualifiedNameable( "documentation" );
case PACKAGE:
return elements::getPackageOf;
case CLASS:
return method -> enclosingTypeVisitor.visit( method.getEnclosingElement() );
}
throw new IllegalArgumentException( "Unknown grouping strategy: " + grouping );
}
项目:Databind
文件:Emulation.java
public static boolean isEmulated(QualifiedNameable nameable) {
String name = nameable.getQualifiedName().toString();
for(String emul : emuls) {
if (name.startsWith(emul)) {
return true;
}
}
return false;
}
项目:Pore
文件:EventProcessor.java
private static String getQualifiedName(Element element) {
switch (element.getKind()) {
case CLASS:
// Mirror API sucks, return proper qualified name for inner classes
if (element.getEnclosingElement().getKind() == ElementKind.CLASS) {
return getQualifiedName(element.getEnclosingElement()) + '$' + element.getSimpleName();
} else {
return ((QualifiedNameable) element).getQualifiedName().toString();
}
case METHOD:
return getQualifiedName(element.getEnclosingElement()) + ':' + element.getSimpleName().toString();
default:
throw new UnsupportedOperationException(element.getClass().toString());
}
}
项目:buck
文件:TreeBackedTypeResolutionSimulator.java
@Override
protected TreeBackedResolvedType resolveType(
TreePath referencingPath, TypeElement referencedType, QualifiedNameable canonicalType) {
if (canonicalType == null) {
canonicalType = referencedType;
}
return new TreeBackedResolvedType(
referencingPath,
canonicalType,
resolveEnclosingElement((QualifiedNameable) canonicalType.getEnclosingElement()));
}
项目:buck
文件:TreeBackedElements.java
private Name getFullyQualifiedName(
@Nullable QualifiedNameable enclosingElement, Name simpleName) {
for (int i = 0; i < simpleName.length(); i++) {
if (simpleName.charAt(i) == '.') {
throw new IllegalArgumentException(String.format("%s is not a simple name", simpleName));
}
}
if (enclosingElement == null || enclosingElement.getQualifiedName().length() == 0) {
return simpleName;
} else {
return getName(String.format("%s.%s", enclosingElement.getQualifiedName(), simpleName));
}
}
项目:buck
文件:ImportsTrackerTestHelper.java
private static void handleImport(Trees trees, ImportsTracker imports, TreePath importTreePath) {
ImportTree importTree = (ImportTree) importTreePath.getLeaf();
MemberSelectTree importedExpression = (MemberSelectTree) importTree.getQualifiedIdentifier();
TreePath importedExpressionPath = new TreePath(importTreePath, importedExpression);
Name simpleName = importedExpression.getIdentifier();
boolean isStarImport = simpleName.contentEquals("*");
if (!isStarImport && !importTree.isStatic()) {
TypeElement importedType = (TypeElement) trees.getElement(importedExpressionPath);
imports.importType(importedType, importedExpressionPath);
} else {
ExpressionTree containingElementExpression = importedExpression.getExpression();
TreePath containingElementExpressionPath =
new TreePath(importedExpressionPath, containingElementExpression);
QualifiedNameable containingElement =
(QualifiedNameable) trees.getElement(containingElementExpressionPath);
if (importTree.isStatic()) {
TypeElement containingType = (TypeElement) containingElement;
if (isStarImport) {
imports.importStaticMembers((TypeElement) containingElement);
} else {
imports.importStatic(containingType, simpleName);
}
} else {
// Normal star import
imports.importMembers(containingElement, containingElementExpressionPath);
}
}
}
项目:incubator-netbeans
文件:ElementOverlay.java
public void registerClass(String parent, String clazz, ClassTree tree, boolean modified) {
if (clazz == null) return;
Element myself = ASTService.getElementImpl(tree);
boolean newOrModified = myself == null
|| (!myself.getKind().isClass() && !myself.getKind().isInterface())
|| !((QualifiedNameable) myself).getQualifiedName().contentEquals(clazz);
if (newOrModified || class2Enclosed.containsKey(parent)) {
List<String> c = class2Enclosed.get(parent);
if (c == null) {
class2Enclosed.put(parent, c = new ArrayList<String>());
}
c.add(clazz);
}
if (modified) {
class2Enclosed.put(clazz, new ArrayList<String>());
}
Set<String> superFQNs = superFQNs(tree);
boolean hadObject = superFQNs.remove("java.lang.Object");
Set<String> original;
if (!newOrModified) {
original = new LinkedHashSet<String>();
TypeElement tel = (TypeElement) myself;
if (tel.getSuperclass() != null && tel.getSuperclass().getKind() == TypeKind.DECLARED) {
original.add(((TypeElement) ((DeclaredType) tel.getSuperclass()).asElement()).getQualifiedName().toString());
}
for (TypeMirror intf : tel.getInterfaces()) {
original.add(((TypeElement) ((DeclaredType) intf).asElement()).getQualifiedName().toString());
}
original.remove("java.lang.Object");
} else {
original = null;
}
if (!superFQNs.equals(original)) {
if (hadObject) superFQNs.add("java.lang.Object");
Set<Modifier> mods = EnumSet.noneOf(Modifier.class);
mods.addAll(tree.getModifiers().getFlags());
classes.put(clazz, mods);
class2SuperElementTrees.put(clazz, superFQNs);
}
}
项目:incubator-netbeans
文件:ElementOverlay.java
@Override
public Element getEnclosingElement() {
return ElementOverlay.this.resolve(ast, elements, ((QualifiedNameable/*XXX*/) delegateTo.getEnclosingElement()).getQualifiedName().toString(), moduleOf(elements, delegateTo));
}
项目:jasperreports
文件:PropertyProcessor.java
protected CompiledPropertyMetadata toPropertyMetadata(VariableElement element, AnnotationMirror propertyAnnotation)
{
Map<? extends ExecutableElement, ? extends AnnotationValue> annotationValues = processingEnv.getElementUtils().getElementValuesWithDefaults(propertyAnnotation);
CompiledPropertyMetadata property = new CompiledPropertyMetadata();
String propName = (String) annotationValue(annotationValues, "name").getValue();
if (propName == null || propName.isEmpty())
{
propName = (String) element.getConstantValue();
if (propName == null)
{
processingEnv.getMessager().printMessage(Kind.WARNING, "Failed to read constant value for " + element,
element);
return null;
}
}
property.setName(propName);
boolean deprecated = processingEnv.getElementUtils().isDeprecated(element);
property.setDeprecated(deprecated);
QualifiedNameable enclosingElement = (QualifiedNameable) element.getEnclosingElement();
property.setConstantDeclarationClass(enclosingElement.getQualifiedName().toString());
property.setConstantFieldName(element.getSimpleName().toString());
property.setCategory((String) annotationValue(annotationValues, "category").getValue());
property.setDefaultValue((String) annotationValue(annotationValues, "defaultValue").getValue());
property.setSinceVersion((String) annotationValue(annotationValues, "sinceVersion").getValue());
property.setValueType(((TypeMirror) annotationValue(annotationValues, "valueType").getValue()).toString());
@SuppressWarnings("unchecked")
List<? extends AnnotationValue> scopeValues = (List<? extends AnnotationValue>) annotationValue(annotationValues, "scopes").getValue();
List<PropertyScope> propertyScopes = new ArrayList<>(scopeValues.size());
for (AnnotationValue scopeValue : scopeValues)
{
PropertyScope scope = Enum.valueOf(PropertyScope.class, ((VariableElement) scopeValue.getValue()).getSimpleName().toString());
propertyScopes.add(scope);
}
//automatically adding Global if Context is present
int contextIndex = propertyScopes.indexOf(PropertyScope.CONTEXT);
if (contextIndex >= 0 && !propertyScopes.contains(PropertyScope.GLOBAL))
{
propertyScopes.add(contextIndex, PropertyScope.GLOBAL);
}
property.setScopes(propertyScopes);
@SuppressWarnings("unchecked")
List<? extends AnnotationValue> scopeQualificationValues = (List<? extends AnnotationValue>) annotationValue(annotationValues, "scopeQualifications").getValue();
List<String> scopeQualifications = new ArrayList<>(scopeValues.size());
for (AnnotationValue qualificationValue : scopeQualificationValues)
{
String qualification = (String) qualificationValue.getValue();
scopeQualifications.add(qualification);
}
property.setScopeQualifications(scopeQualifications);
return property;
}
项目:buck
文件:InterfaceValidator.java
@Override
public void onImport(
boolean isStatic,
boolean isStarImport,
TreePath leafmostElementPath,
QualifiedNameable leafmostElement,
@Nullable Name memberName) {
if (leafmostElement.getKind() != ElementKind.PACKAGE) {
if (isStatic) {
CompletedType completedType = completer.complete(leafmostElement, true);
if (completedType != null
&& (completedType.kind == CompletedTypeKind.CRASH
|| completedType.kind == CompletedTypeKind.PARTIALLY_COMPLETED_TYPE)) {
reportMissingDeps(completedType, leafmostElementPath);
}
} else {
ResolvedType compilerResolvedType = compilerResolver.resolve(leafmostElementPath);
if (compilerResolvedType != null && compilerResolvedType.kind == ResolvedTypeKind.CRASH) {
reportMissingDeps(compilerResolvedType, leafmostElementPath);
} else {
TreeBackedResolvedType treeBackedResolvedType =
treeBackedResolver.resolve(leafmostElementPath);
if (!treeBackedResolvedType.isCorrect()) {
if (treeBackedResolvedType.isCorrectable()) {
treeBackedResolvedType.reportErrors(messageKind);
} else {
reportMissingDeps(compilerResolvedType, leafmostElementPath);
}
}
}
}
}
if (!isStatic) {
if (!isStarImport) {
imports.importType((TypeElement) leafmostElement, leafmostElementPath);
} else {
imports.importMembers(leafmostElement, leafmostElementPath);
}
} else if (!isStarImport) {
imports.importStatic((TypeElement) leafmostElement, Preconditions.checkNotNull(memberName));
} else {
imports.importStaticMembers((TypeElement) leafmostElement);
}
}
项目:buck
文件:ImportsTracker.java
public void importMembers(QualifiedNameable typeOrPackage, @Nullable TreePath location) {
importedOwners.put(typeOrPackage, location);
}
项目:neo4j-sproc-compiler
文件:DsvSerializer.java
/**
* Serializes processed extensions according to the input configuration.
* The actual write operations are handled by {@link DsvFileWriter}.
* <p>
* The main added value of this indirection is to properly reorganize the data
* so it complies to the user configuration, may it be in terms of grouping strategies
* (see {@link DsvGroupingStrategy}), splitting strategy (see {@link DsvSplitStrategy}),
* custom field delimiter and/or exported header selection.
* <p>
* All of these combinable settings are specified by {@link DsvConfiguration}, based on
* the options passed to the annotation processor {@link DsvProcessor}.
*
* @param root root folder that is going to contain the generated files
* @param configuration file grouping/item splitting options, exported headers
* @param procedures processed user-defined procedures
* @param functions processed user-defined functions
*/
public void serialize( Path root, DsvConfiguration configuration, Collection<ExecutableElement> procedures,
Collection<ExecutableElement> functions )
{
DsvSplitStrategy splitStrategy = configuration.getSplitStrategy();
configuration.getGroupingStrategies().forEach( grouping ->
{
Collection<MethodPartition> partitions = splitStrategy.partition( procedures, functions );
Function<ExecutableElement,QualifiedNameable> keyFunction = groupByFileBasename( grouping );
serialize( root, configuration, partitions, keyFunction );
} );
}
项目:buck
文件:InterfaceScanner.java
/**
* An import statement was encountered.
*
* @param isStatic true for static imports
* @param isStarImport true for star imports
* @param leafmostElementPath the path of the leafmost known element in the imported type
* expression
* @param leafmostElement the leafmost known element in the imported type expression. For
* single-type imports, this is the imported type. For the rest, this is the type or package
* enclosing the imported element(s).
* @param memberName for named static imports, the name of the static members to import.
* Otherwise null.
*/
void onImport(
boolean isStatic,
boolean isStarImport,
TreePath leafmostElementPath,
QualifiedNameable leafmostElement,
@Nullable Name memberName);