use of org.ballerinalang.composer.service.ballerina.parser.service.model.lang.ModelPackage in project ballerina by ballerina-lang.
the class SwaggerConverterUtils method getTopLevelNodeFromBallerinaFile.
/**
* Generate ballerina fine from the String definition.
*
* @param bFile ballerina string definition
* @return ballerina file created from ballerina string definition
* @throws IOException IO exception
*/
public static BLangCompilationUnit getTopLevelNodeFromBallerinaFile(BFile bFile) throws IOException {
String filePath = bFile.getFilePath();
String fileName = bFile.getFileName();
String content = bFile.getContent();
Path fileRoot = Paths.get(filePath);
org.wso2.ballerinalang.compiler.tree.BLangPackage model;
// Sometimes we are getting Ballerina content without a file in the file-system.
if (!Files.exists(Paths.get(filePath, fileName))) {
BallerinaFile ballerinaFile = ParserUtils.getBallerinaFileForContent(fileRoot, fileName, content, CompilerPhase.CODE_ANALYZE);
model = ballerinaFile.getBLangPackage();
} else {
BallerinaFile ballerinaFile = ParserUtils.getBallerinaFile(filePath, fileName);
model = ballerinaFile.getBLangPackage();
}
final Map<String, ModelPackage> modelPackage = new HashMap<>();
ParserUtils.loadPackageMap(Constants.CURRENT_PACKAGE_NAME, model, modelPackage);
Optional<BLangCompilationUnit> compilationUnit = model.getCompilationUnits().stream().filter(compUnit -> fileName.equals(compUnit.getName())).findFirst();
return compilationUnit.orElse(null);
}
use of org.ballerinalang.composer.service.ballerina.parser.service.model.lang.ModelPackage in project ballerina by ballerina-lang.
the class ParserUtils method extractFunction.
/**
* Extract Functions from ballerina lang.
*
* @param packages packages to send.
* @param packagePath package path
* @param function function.
*/
private static void extractFunction(Map<String, ModelPackage> packages, String packagePath, BLangFunction function) {
String fileName = function.getPosition().getSource().getCompilationUnitName();
if (packages.containsKey(packagePath)) {
ModelPackage modelPackage = packages.get(packagePath);
List<Parameter> parameters = new ArrayList<>();
addParameters(parameters, function.getParameters());
List<Parameter> returnParameters = new ArrayList<>();
addParameters(returnParameters, function.getReturnParameters());
List<AnnotationAttachment> annotations = new ArrayList<>();
addAnnotations(annotations, function.getAnnotationAttachments());
String receiverType = getReceiverType(function.getReceiver());
// Check if the function is public or not
boolean isPublic = function.getFlags().contains(Flag.PUBLIC);
modelPackage.addFunctionsItem(createNewFunction(function.getName().getValue(), annotations, parameters, returnParameters, receiverType, isPublic, fileName));
} else {
ModelPackage modelPackage = new ModelPackage();
modelPackage.setName(packagePath);
List<Parameter> parameters = new ArrayList<>();
addParameters(parameters, function.getParameters());
List<Parameter> returnParameters = new ArrayList<>();
addParameters(returnParameters, function.getReturnParameters());
List<AnnotationAttachment> annotations = new ArrayList<>();
addAnnotations(annotations, function.getAnnotationAttachments());
String receiverType = getReceiverType(function.getReceiver());
// Check if the function is public or not
boolean isPublic = function.getFlags().contains(Flag.PUBLIC);
modelPackage.addFunctionsItem(createNewFunction(function.getName().getValue(), annotations, parameters, returnParameters, receiverType, isPublic, fileName));
packages.put(packagePath, modelPackage);
}
}
use of org.ballerinalang.composer.service.ballerina.parser.service.model.lang.ModelPackage in project ballerina by ballerina-lang.
the class ParserUtils method extractAnnotation.
/**
* Extract annotations from ballerina lang.
*
* @param packages packages to send
* @param annotation annotation
*/
private static void extractAnnotation(Map<String, ModelPackage> packages, String packagePath, BLangAnnotation annotation) {
if (packages.containsKey(packagePath)) {
ModelPackage modelPackage = packages.get(packagePath);
modelPackage.addAnnotationsItem(AnnotationDef.convertToPackageModel(annotation));
} else {
ModelPackage modelPackage = new ModelPackage();
modelPackage.setName(packagePath);
modelPackage.addAnnotationsItem(AnnotationDef.convertToPackageModel(annotation));
packages.put(packagePath, modelPackage);
}
}
use of org.ballerinalang.composer.service.ballerina.parser.service.model.lang.ModelPackage in project ballerina by ballerina-lang.
the class ParserUtils method extractConnector.
/**
* Extract connectors from ballerina lang.
*
* @param packages packages to send
* @param connector connector
*/
private static void extractConnector(Map<String, ModelPackage> packages, String packagePath, BLangConnector connector) {
String fileName = connector.getPosition().getSource().getCompilationUnitName();
if (packages.containsKey(packagePath)) {
ModelPackage modelPackage = packages.get(packagePath);
List<Parameter> parameters = new ArrayList<>();
addParameters(parameters, connector.getParameters());
List<AnnotationAttachment> annotations = new ArrayList<>();
addAnnotations(annotations, connector.getAnnotationAttachments());
List<Action> actions = new ArrayList<>();
addActions(actions, connector.getActions());
modelPackage.addConnectorsItem(createNewConnector(connector.getName().getValue(), annotations, actions, parameters, null, fileName));
} else {
ModelPackage modelPackage = new ModelPackage();
modelPackage.setName(packagePath);
List<Parameter> parameters = new ArrayList<>();
addParameters(parameters, connector.getParameters());
List<AnnotationAttachment> annotations = new ArrayList<>();
addAnnotations(annotations, connector.getAnnotationAttachments());
List<Action> actions = new ArrayList<>();
addActions(actions, connector.getActions());
modelPackage.addConnectorsItem(createNewConnector(connector.getName().getValue(), annotations, actions, parameters, null, fileName));
packages.put(packagePath, modelPackage);
}
}
Aggregations