@Override public void setContext(GraphRewrite event) { this.javaClassService = new JavaClassService(event.getGraphContext()); } }
private void extractMetadata(GraphRewrite event, JavaTypeReferenceModel typeReference) { JavaClassService javaClassService = new JavaClassService(event.getGraphContext()); JavaClassModel implementationClass = getJavaClass(typeReference); // first, find out if it implements an interface. // TODO: handle the interface only case, where clients exist but no implementation if (!implementationClass.getInterfaces().iterator().hasNext()) { return; } LOG.info("Processing: " + typeReference); typeReference.getFile().setGenerateSourceReport(true); JavaAnnotationTypeReferenceModel jaxWsAnnotationTypeReference = (JavaAnnotationTypeReferenceModel) typeReference; String endpointInterfaceQualifiedName = getAnnotationLiteralValue(jaxWsAnnotationTypeReference, "endpointInterface"); JavaClassModel endpointInterface = null; if (StringUtils.isNotBlank(endpointInterfaceQualifiedName)) { endpointInterface = javaClassService.getOrCreatePhantom(endpointInterfaceQualifiedName); for (AbstractJavaSourceModel source : javaClassService.getJavaSource(endpointInterface.getQualifiedName())) source.setGenerateSourceReport(true); } JaxWSWebServiceModelService service = new JaxWSWebServiceModelService(event.getGraphContext()); service.getOrCreate(typeReference.getFile().getApplication(), endpointInterface, implementationClass); }
try JavaClassModel model = getUniqueByProperty(JavaClassModel.QUALIFIED_NAME, qualifiedClassName); return model; Iterable<JavaClassModel> candidates = findAllByProperty( JavaClassModel.QUALIFIED_NAME, qualifiedClassName); getGraphContext(), AmbiguousJavaClassModel.class); ambiguousModel = ambiguousJavaClassModelService.create();
@Override public String[] resolve(String wildcardImportPackageName) { JavaClassService javaClassService = new JavaClassService(getContext()); Iterable<JavaClassModel> classModels = javaClassService.findByJavaPackage(wildcardImportPackageName); List<String> results = new ArrayList<>(); for (JavaClassModel classModel : classModels) { results.add(classModel.getQualifiedName()); } return results.toArray(new String[results.size()]); }
/** * Gets an existing {@link JavaClassModel}, however if none currently exists, then create a {@link PhantomJavaClassModel}.<br/> * * This is intended to indicate that we know about a class by reference (for example another class subclasses it, or it is referenced in an XML * file), but we do not yet have a location on the disk for the class (or source) file itself. * * To create a class (possibly converting a {@link PhantomJavaClassModel} to concrete in the process), use {@link JavaClassService#create(String)} * instead. */ public synchronized JavaClassModel getOrCreatePhantom(String qualifiedName) { JavaClassModel result = resolveByQualifiedName(qualifiedName); if (result == null) { // create a phantom result = new GraphService<>(getGraphContext(), PhantomJavaClassModel.class).create(); setPropertiesFromName(result, qualifiedName); } return result; }
/** * Indicates that we have found a .class or .java file for the given qualified name. This will either create a new {@link JavaClassModel} or * convert an existing {@link PhantomJavaClassModel} if one exists. */ public synchronized JavaClassModel create(String qualifiedName) { // if a phantom exists, just convert it PhantomJavaClassModel phantom = new GraphService<>(getGraphContext(), PhantomJavaClassModel.class).getUniqueByProperty( JavaClassModel.QUALIFIED_NAME, qualifiedName); if (phantom != null) { GraphService.removeTypeFromModel(getGraphContext(), phantom, PhantomJavaClassModel.class); return phantom; } JavaClassModel javaClassModel = super.create(); setPropertiesFromName(javaClassModel, qualifiedName); return javaClassModel; }
@Override public void perform(GraphRewrite event, EvaluationContext context, XmlFileModel payload) JavaClassService javaClassService = new JavaClassService(event.getGraphContext()); XmlFileService xmlFileService = new XmlFileService(event.getGraphContext()); TechnologyTagService technologyTagService = new TechnologyTagService(event.getGraphContext()); JavaClassModel classReference = javaClassService.getOrCreatePhantom(clz); springBeanRef.setJavaClass(classReference);
final JavaClassService javaClassService = new JavaClassService(event.getGraphContext()); final JavaClassModel javaClassModel = javaClassService.create(qualifiedName); int majorVersion = bcelJavaClass.getMajor(); int minorVersion = bcelJavaClass.getMinor(); JavaClassModel interfaceModel = javaClassService.getOrCreatePhantom(interfaceName); javaClassService.addInterface(javaClassModel, interfaceModel); javaClassModel.setExtends(javaClassService.getOrCreatePhantom(superclassName));
JavaClassService javaClassService = new JavaClassService(context); JavaClassModel javaClassModel = javaClassService.create(qualifiedName); javaClassModel.setOriginalSource(sourceFileModel); javaClassModel.setSimpleName(simpleName); JavaClassModel interfaceModel = javaClassService.getOrCreatePhantom(iface); javaClassModel.addImplements(interfaceModel); String superclassName = extendable.getSuperType(); if (Strings.isNullOrEmpty(superclassName)) javaClassModel.setExtends(javaClassService.getOrCreatePhantom(superclassName));
payload.setPackageName(packageName); final JavaClassService javaClassService = new JavaClassService(event.getGraphContext()); final JavaClassModel javaClassModel = javaClassService.create(qualifiedName); javaClassModel.setSimpleName(simpleName); javaClassModel.setPackageName(packageName); JavaClassModel interfaceModel = javaClassService.getOrCreatePhantom(iface); javaClassModel.addImplements(interfaceModel); javaClassModel.setExtends(javaClassService.getOrCreatePhantom(superclassName)); javaClassService.addJavaMethod(javaClassModel, method.getName(), toJavaClasses(javaClassService, method.getArgumentTypes()));
JavaClassService javaClassService = new JavaClassService(graphContext); Iterable<JavaClassModel> models = javaClassService.findAllByProperty(JavaClassModel.QUALIFIED_NAME, candidateQualifiedName); if (models.iterator().hasNext())
private JavaClassModel[] toJavaClasses(final JavaClassService javaClassService, final Type[] types) { JavaClassModel[] clz = new JavaClassModel[types.length]; for (int i = 0, j = types.length; i < j; i++) { Type t = types[i]; clz[i] = javaClassService.getOrCreatePhantom(t.toString()); } return clz; }
private void extractMetadata(GraphRewrite event, JavaTypeReferenceModel typeReference) { // get the rmi interface class from the graph JavaClassModel javaClassModel = getJavaClass(typeReference); if (!isRemoteInterface(javaClassModel)) { LOG.warning("Is not remote: " + javaClassModel.getQualifiedName()); return; } LOG.info("Processing: " + typeReference); // Make sure we create a source report for the interface source typeReference.getFile().setGenerateSourceReport(true); RMIServiceModelService rmiService = new RMIServiceModelService(event.getGraphContext()); if (javaClassModel != null) { RMIServiceModel rmiServiceModel = rmiService.getOrCreate(typeReference.getFile().getApplication(), javaClassModel); // Create the source report for the RMI Implementation. JavaClassService javaClassService = new JavaClassService(event.getGraphContext()); if (rmiServiceModel != null && rmiServiceModel.getImplementationClass() != null) { for (AbstractJavaSourceModel source : javaClassService.getJavaSource(rmiServiceModel.getImplementationClass().getQualifiedName())) { source.setGenerateSourceReport(true); } } } }
public JavaMethodModel addJavaMethod(JavaClassModel jcm, String methodName, JavaClassModel[] params) { ExecutionStatistics.get().begin("JavaClassService.addJavaMethod(jcm, methodName, params)"); JavaMethodModel javaMethodModel = getGraphContext().getFramed().addFramedVertex(JavaMethodModel.class); javaMethodModel.setMethodName(methodName); for (int i = 0; i < params.length; i++) { JavaClassModel param = params[i]; JavaParameterModel paramModel = getGraphContext().getFramed().addFramedVertex(JavaParameterModel.class); paramModel.setJavaType(param); paramModel.setPosition(i); javaMethodModel.addMethodParameter(paramModel); } jcm.addJavaMethod(javaMethodModel); ExecutionStatistics.get().end("JavaClassService.addJavaMethod(jcm, methodName, params)"); return javaMethodModel; }
@Override public Object exec(@SuppressWarnings("rawtypes") List arguments) throws TemplateModelException { if (arguments.size() != 1) { throw new TemplateModelException("Error, method expects one argument (String)"); } SimpleScalar arg = (SimpleScalar) arguments.get(0); String qualifedClassName = arg.getAsString(); JavaClassModel classModel = javaClassService.getByName(qualifedClassName); List<AbstractJavaSourceModel> results = new ArrayList<>(); if (classModel instanceof AmbiguousJavaClassModel) { AmbiguousJavaClassModel ambiguousJavaClassModel = (AmbiguousJavaClassModel) classModel; for (JavaClassModel referencedClass : ambiguousJavaClassModel.getReferences()) { addSourceFilesToResult(results, referencedClass); } } else { addSourceFilesToResult(results, classModel); } return results; }
public Iterable<JavaClassModel> findByJavaPackage(String packageName) { ExecutionStatistics.get().begin("JavaClassService.findByJavaPackage(packageName)"); Iterable<JavaClassModel> result = getGraphContext().getQuery().type(JavaClassModel.class) .has(JavaClassModel.PACKAGE_NAME, packageName).vertices(getType()); ExecutionStatistics.get().end("JavaClassService.findByJavaPackage(packageName)"); return result; }
/** * Find a {@link JavaClassModel} by the qualified name, returning a single result. If more than one result is available, a * {@link AmbiguousJavaClassModel} reference will be returned. */ public JavaClassModel getByName(String qualifiedName) throws NonUniqueResultException { ExecutionStatistics.get().begin("getUniqueByName(qualifiedName)"); JavaClassModel result = resolveByQualifiedName(qualifiedName); ExecutionStatistics.get().end("getUniqueByName(qualifiedName)"); return result; }
private void processJavaClassModel(Writer writer, String cssClass, ProjectModel project, JavaClassModel clz, String defaultText) throws IOException { Iterator<AbstractJavaSourceModel> results = javaClassService.getJavaSource(clz.getQualifiedName()).iterator(); if (!results.hasNext()) { writer.write(clz.getQualifiedName()); return; } String linkText = StringUtils.isBlank(defaultText) ? clz.getQualifiedName() : defaultText; int i = 2; while (results.hasNext()) { AbstractJavaSourceModel source = results.next(); SourceReportModel result = sourceReportService.getSourceReportForFileModel(source); if (result == null) writer.write(linkText); else renderLink(writer, cssClass, project, result.getReportFilename(), null, linkText); linkText = " (" + i++ + ")"; } }
Iterable<JavaClassModel> models = javaClassService.findAllByProperty( JavaClassModel.QUALIFIED_NAME, candidateQualifiedName); if (models.iterator().hasNext())
@Override public boolean visit(ImportDeclaration node) { String name = node.getName().toString(); if (node.isOnDemand()) { wildcardImports.add(name); Iterable<JavaClassModel> classModels = javaClassService.findByJavaPackage(name); for (JavaClassModel classModel : classModels) { processImport(classModel.getQualifiedName(), cu.getLineNumber(node.getName().getStartPosition()), cu.getColumnNumber(node.getName().getStartPosition()), node.getName().getLength()); } } else { String clzName = StringUtils.substringAfterLast(name, "."); classNameLookedUp.add(clzName); classNameToFQCN.put(clzName, name); processImport(node.getName().toString(), cu.getLineNumber(node.getName().getStartPosition()), cu.getColumnNumber(node.getName().getStartPosition()), node.getName().getLength()); } return super.visit(node); }