use of com.spectralogic.ds3autogen.docspec.Ds3DocSpecEmptyImpl in project ds3_autogen by SpectraLogic.
the class CCodeGenerator_Test method testFreeStructPrototype.
@Test
public void testFreeStructPrototype() throws IOException, ParseException, TemplateModelException {
final String inputSpecFile = "/input/SimpleTypedefStruct.xml";
final TestFileUtilsImpl fileUtils = new TestFileUtilsImpl();
final Ds3SpecParser parser = new Ds3SpecParserImpl();
final Ds3ApiSpec spec = parser.getSpec(CCodeGenerator_Test.class.getResourceAsStream(inputSpecFile));
final Header header = new Header(CCodeGenerator.getAllEnums(spec), CCodeGenerator.getAllStructs(spec, ImmutableSet.of(), ImmutableSet.of(), ImmutableSet.of(), ImmutableSet.of(), ImmutableSet.of()), CCodeGenerator.getAllRequests(spec, new Ds3DocSpecEmptyImpl()), ImmutableSet.of());
final CCodeGenerator codeGenerator = new CCodeGenerator();
codeGenerator.processTemplate(header, "header-templates/ds3_h.ftl", fileUtils.getOutputStream());
final ByteArrayOutputStream bstream = (ByteArrayOutputStream) fileUtils.getOutputStream();
final String output = new String(bstream.toByteArray());
assertTrue(output.contains("void ds3_bucket_response_free(ds3_bucket_response* response_data);"));
}
use of com.spectralogic.ds3autogen.docspec.Ds3DocSpecEmptyImpl in project ds3_autogen by SpectraLogic.
the class CCodeGenerator_Test method testComplexFreeTypedefStructWithEnum.
@Test
public void testComplexFreeTypedefStructWithEnum() throws IOException, ParseException, TemplateModelException {
final String inputSpecFile = "/input/ComplexTypedefStructWithEnum.xml";
final TestFileUtilsImpl fileUtils = new TestFileUtilsImpl();
final Ds3SpecParser parser = new Ds3SpecParserImpl();
final Ds3ApiSpec spec = parser.getSpec(CCodeGenerator_Test.class.getResourceAsStream(inputSpecFile));
final ImmutableList<Request> allRequests = CCodeGenerator.getAllRequests(spec, new Ds3DocSpecEmptyImpl());
final ImmutableList<Enum> allEnums = CCodeGenerator.getAllEnums(spec);
final ImmutableSet<String> enumNames = EnumHelper.getEnumNamesSet(allEnums);
final ImmutableSet<String> arrayMemberTypes = CCodeGenerator.getArrayMemberTypes(spec, enumNames);
final ImmutableSet<String> responseTypes = RequestHelper.getResponseTypes(allRequests);
final ImmutableList<Struct> allStructs = CCodeGenerator.getAllStructs(spec, enumNames, responseTypes, arrayMemberTypes, ImmutableSet.of(), ImmutableSet.of());
final ImmutableList<Struct> allOrderedStructs = StructHelper.getStructsOrderedList(allStructs, enumNames);
final Source source = SourceConverter.toSource(allEnums, allOrderedStructs, CCodeGenerator.getAllRequests(spec, new Ds3DocSpecEmptyImpl()));
final CCodeGenerator codeGenerator = new CCodeGenerator();
codeGenerator.processTemplate(source, "source-templates/ds3_c.ftl", fileUtils.getOutputStream());
final ByteArrayOutputStream bstream = (ByteArrayOutputStream) fileUtils.getOutputStream();
final String output = new String(bstream.toByteArray());
assertTrue(output.contains("void ds3_blob_response_free(ds3_blob_response* response) {"));
assertTrue(output.contains(" if (response == NULL) {"));
assertTrue(output.contains(" return;"));
assertTrue(output.contains(" }"));
assertTrue(output.contains(" ds3_str_free(response->checksum);"));
assertTrue(output.contains(" ds3_str_free(response->id);"));
assertTrue(output.contains(" ds3_str_free(response->object_id);"));
assertTrue(output.contains(" g_free(response);"));
assertTrue(output.contains("}"));
}
use of com.spectralogic.ds3autogen.docspec.Ds3DocSpecEmptyImpl in project ds3_autogen by SpectraLogic.
the class CCodeGenerator_Test method testComplexFreeTypedefStruct.
@Test
public void testComplexFreeTypedefStruct() throws IOException, ParseException, TemplateModelException {
final String inputSpecFile = "/input/ComplexTypedefStruct.xml";
final TestFileUtilsImpl fileUtils = new TestFileUtilsImpl();
final Ds3SpecParser parser = new Ds3SpecParserImpl();
final Ds3ApiSpec spec = parser.getSpec(CCodeGenerator_Test.class.getResourceAsStream(inputSpecFile));
final ImmutableList<Request> allRequests = CCodeGenerator.getAllRequests(spec, new Ds3DocSpecEmptyImpl());
final ImmutableList<Enum> allEnums = CCodeGenerator.getAllEnums(spec);
final ImmutableSet<String> enumNames = EnumHelper.getEnumNamesSet(allEnums);
final ImmutableSet<String> arrayMemberTypes = CCodeGenerator.getArrayMemberTypes(spec, enumNames);
final ImmutableSet<String> responseTypes = RequestHelper.getResponseTypes(allRequests);
final ImmutableList<Struct> allStructs = CCodeGenerator.getAllStructs(spec, enumNames, responseTypes, arrayMemberTypes, ImmutableSet.of(), ImmutableSet.of());
final ImmutableList<Struct> allOrderedStructs = StructHelper.getStructsOrderedList(allStructs, enumNames);
final Source source = SourceConverter.toSource(allEnums, allOrderedStructs, allRequests);
final CCodeGenerator codeGenerator = new CCodeGenerator();
codeGenerator.processTemplate(source, "source-templates/ds3_c.ftl", fileUtils.getOutputStream());
final ByteArrayOutputStream bstream = (ByteArrayOutputStream) fileUtils.getOutputStream();
final String output = new String(bstream.toByteArray());
assertTrue(output.contains("void ds3_list_all_my_buckets_result_response_free(ds3_list_all_my_buckets_result_response* response) {"));
assertTrue(output.contains(" if (response == NULL) {"));
assertTrue(output.contains(" return;"));
assertTrue(output.contains(" }"));
assertTrue(output.contains(" for (index = 0; index < response->num_buckets; index++) {"));
assertTrue(output.contains(" ds3_bucket_details_response_free(response->buckets[index]);"));
assertTrue(output.contains(" }"));
assertTrue(output.contains(" g_free(response->buckets);"));
assertTrue(output.contains(" ds3_user_response_free(response->owner);"));
assertTrue(output.contains(" g_free(response);"));
assertTrue(output.contains("}"));
}
use of com.spectralogic.ds3autogen.docspec.Ds3DocSpecEmptyImpl in project ds3_autogen by SpectraLogic.
the class Main method run.
public void run() throws Exception {
final Ds3SpecParser parser = new Ds3SpecParserImpl();
System.out.println("Generating " + args.getType().toString() + " ds3 sdk code for the spec " + args.getInputSpec());
//TODO make the input file also accept a url that we can read from
final Ds3ApiSpec spec = parser.getSpec(Files.newInputStream(Paths.get(args.getInputSpec())), args.generateInternal());
final CodeGenerator generator;
switch(args.getType()) {
case C:
generator = new CCodeGenerator();
break;
case JAVA:
generator = new JavaCodeGenerator();
break;
case NET:
generator = new NetCodeGenerator();
break;
case PYTHON:
generator = new PythonCodeGenerator();
break;
case PYTHON3:
generator = new Python3CodeGenerator();
break;
case GO:
generator = new GoCodeGenerator();
break;
default:
throw new IllegalArgumentException("Unknown generator typeName " + args.getType().toString());
}
final FileUtils fileUtils = new FileUtilsImpl();
final Ds3DocSpec docSpec;
if (args.isNoDoc()) {
docSpec = new Ds3DocSpecEmptyImpl();
} else {
final Ds3DocSpecParser docSpecParser = new Ds3DocSpecParserImpl(new NameMapper());
docSpec = docSpecParser.getDocSpec();
}
generator.generate(spec, fileUtils, Paths.get(args.getTargetDir()), docSpec);
}
use of com.spectralogic.ds3autogen.docspec.Ds3DocSpecEmptyImpl in project ds3_autogen by SpectraLogic.
the class RequestConverter_Test method testGetRequestParameterListNoResponseType.
@Test
public void testGetRequestParameterListNoResponseType() throws IOException {
final ImmutableList<Parameter> paramList = RequestConverter.getParamList("", new Ds3DocSpecEmptyImpl());
assertEquals(paramList.size(), 2);
assertEquals(RequestHelper.paramListToString(paramList), "const ds3_client* client, const ds3_request* request");
}
Aggregations