Search in sources :

Example 1 with Method

use of com.github.davidmoten.odata.client.generator.model.Method in project odata-client by davidmoten.

the class Generator method writeSchemaInfo.

private void writeSchemaInfo(Schema schema) {
    names.getDirectorySchema(schema).mkdirs();
    String simpleClassName = names.getSimpleClassNameSchema(schema);
    Imports imports = new Imports(names.getFullClassNameSchema(schema));
    Indent indent = new Indent();
    try {
        StringWriter w = new StringWriter();
        try (PrintWriter p = new PrintWriter(w)) {
            p.format("package %s;\n\n", names.getPackageSchema(schema));
            p.format(IMPORTSHERE);
            p.format("public enum %s implements %s {\n\n", simpleClassName, imports.add(SchemaInfo.class));
            // add enum
            p.format("%sINSTANCE;\n\n", indent.right());
            // add fields for entities map
            // 
            p.format(// 
            "%sprivate final %s<%s, %s<? extends %s>> classes = new %s<>();\n\n", // 
            indent, // 
            imports.add(Map.class), // 
            imports.add(String.class), // 
            imports.add(Class.class), // 
            imports.add(ODataType.class), imports.add(HashMap.class));
            // add private constructor
            p.format("%sprivate %s() {\n", indent, simpleClassName);
            indent.right();
            // write all schemas classes into map not just the current one
            // TODO use one SchemasInfo.class
            // 
            names.getSchemas().stream().flatMap(// 
            sch -> Util.filter(sch.getComplexTypeOrEntityTypeOrTypeDefinition(), TEntityType.class)).forEach(x -> {
                Schema sch = names.getSchema(x);
                p.format("%sclasses.put(\"%s\", %s.class);\n", indent, names.getFullTypeFromSimpleType(sch, x.getName()), imports.add(names.getFullClassNameEntity(sch, x.getName())));
            });
            // 
            names.getSchemas().stream().flatMap(sch -> Util.filter(sch.getComplexTypeOrEntityTypeOrTypeDefinition(), // 
            TComplexType.class)).forEach(x -> {
                Schema sch = names.getSchema(x);
                p.format("%sclasses.put(\"%s\", %s.class);\n", indent, names.getFullTypeFromSimpleType(sch, x.getName()), imports.add(names.getFullClassNameComplexType(sch, x.getName())));
            });
            indent.left();
            p.format("%s}\n\n", indent);
            // add method
            p.format("%s@%s\n", indent, imports.add(Override.class));
            // 
            p.format(// 
            "%spublic %s<? extends %s> getClassFromTypeWithNamespace(%s name) {\n", // 
            indent, // 
            imports.add(Class.class), // 
            imports.add(ODataType.class), imports.add(String.class));
            p.format("%sreturn classes.get(name);\n", indent.right());
            p.format("%s}\n\n", indent.left());
            // close class
            p.format("}\n");
        }
        byte[] bytes = w.toString().replace(IMPORTSHERE, imports.toString()).getBytes(StandardCharsets.UTF_8);
        Files.write(names.getClassFileSchema(schema).toPath(), bytes);
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    }
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) StreamProvider(com.github.davidmoten.odata.client.StreamProvider) Arrays(java.util.Arrays) HasNameJavaHasNullable(com.github.davidmoten.odata.client.generator.model.HasNameJavaHasNullable) HasContext(com.github.davidmoten.odata.client.HasContext) HttpService(com.github.davidmoten.odata.client.HttpService) TEnumType(org.oasisopen.odata.csdl.v4.TEnumType) Map(java.util.Map) Parameter(com.github.davidmoten.odata.client.generator.model.Action.Parameter) PrintWriter(java.io.PrintWriter) FunctionRequestReturningNonCollection(com.github.davidmoten.odata.client.FunctionRequestReturningNonCollection) SchemaAndType(com.github.davidmoten.odata.client.generator.Names.SchemaAndType) JacksonInject(com.fasterxml.jackson.annotation.JacksonInject) TEntitySet(org.oasisopen.odata.csdl.v4.TEntitySet) NameValue(com.github.davidmoten.odata.client.NameValue) RequestHelper(com.github.davidmoten.odata.client.internal.RequestHelper) Set(java.util.Set) ODataType(com.github.davidmoten.odata.client.ODataType) StandardCharsets(java.nio.charset.StandardCharsets) UncheckedIOException(java.io.UncheckedIOException) Stream(java.util.stream.Stream) Lists(com.github.davidmoten.guavamini.Lists) CollectionPageEntityRequest(com.github.davidmoten.odata.client.CollectionPageEntityRequest) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) SchemaInfo(com.github.davidmoten.odata.client.SchemaInfo) TProperty(org.oasisopen.odata.csdl.v4.TProperty) Checks(com.github.davidmoten.odata.client.internal.Checks) Files(java.nio.file.Files) TNavigationProperty(org.oasisopen.odata.csdl.v4.TNavigationProperty) Function(com.github.davidmoten.odata.client.generator.model.Function) StringWriter(java.io.StringWriter) TSingleton(org.oasisopen.odata.csdl.v4.TSingleton) HttpMethod(com.github.davidmoten.odata.client.HttpMethod) IOException(java.io.IOException) Include(com.fasterxml.jackson.annotation.JsonInclude.Include) ContainerBuilder(com.github.davidmoten.odata.client.TestingService.ContainerBuilder) File(java.io.File) ChangedFields(com.github.davidmoten.odata.client.internal.ChangedFields) NavigationProperty(com.github.davidmoten.odata.client.annotation.NavigationProperty) TNavigationPropertyBinding(org.oasisopen.odata.csdl.v4.TNavigationPropertyBinding) RequestOptions(com.github.davidmoten.odata.client.RequestOptions) ParameterMap(com.github.davidmoten.odata.client.internal.ParameterMap) TEnumTypeMember(org.oasisopen.odata.csdl.v4.TEnumTypeMember) HttpRequestOptions(com.github.davidmoten.odata.client.HttpRequestOptions) CollectionPage(com.github.davidmoten.odata.client.CollectionPage) FieldName(com.github.davidmoten.odata.client.generator.model.Structure.FieldName) ActionRequestNoReturn(com.github.davidmoten.odata.client.ActionRequestNoReturn) Action(com.github.davidmoten.odata.client.generator.model.Action) Field(com.github.davidmoten.odata.client.generator.model.Field) UploadStrategy(com.github.davidmoten.odata.client.UploadStrategy) TComplexType(org.oasisopen.odata.csdl.v4.TComplexType) JsonAnyGetter(com.fasterxml.jackson.annotation.JsonAnyGetter) ActionRequestReturningNonCollection(com.github.davidmoten.odata.client.ActionRequestReturningNonCollection) ReturnType(com.github.davidmoten.odata.client.generator.model.Action.ReturnType) UnmappedFields(com.github.davidmoten.odata.client.UnmappedFields) Collectors(java.util.stream.Collectors) EntityType(com.github.davidmoten.odata.client.generator.model.EntityType) JsonAnySetter(com.fasterxml.jackson.annotation.JsonAnySetter) Context(com.github.davidmoten.odata.client.Context) List(java.util.List) KeyElement(com.github.davidmoten.odata.client.generator.model.KeyElement) Method(com.github.davidmoten.odata.client.generator.model.Method) PropertyRef(com.github.davidmoten.odata.client.generator.model.PropertyRef) Structure(com.github.davidmoten.odata.client.generator.model.Structure) StreamUploaderChunked(com.github.davidmoten.odata.client.StreamUploaderChunked) Optional(java.util.Optional) ClientException(com.github.davidmoten.odata.client.ClientException) ContextPath(com.github.davidmoten.odata.client.ContextPath) JsonPropertyOrder(com.fasterxml.jackson.annotation.JsonPropertyOrder) ComplexType(com.github.davidmoten.odata.client.generator.model.ComplexType) Preconditions(com.github.davidmoten.guavamini.Preconditions) TypedObject(com.github.davidmoten.odata.client.internal.TypedObject) HashMap(java.util.HashMap) TActionFunctionParameter(org.oasisopen.odata.csdl.v4.TActionFunctionParameter) HashSet(java.util.HashSet) TActionFunctionReturnType(org.oasisopen.odata.csdl.v4.TActionFunctionReturnType) TFunction(org.oasisopen.odata.csdl.v4.TFunction) EntityRequest(com.github.davidmoten.odata.client.EntityRequest) JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore) TAction(org.oasisopen.odata.csdl.v4.TAction) Path(com.github.davidmoten.odata.client.Path) Schema(org.oasisopen.odata.csdl.v4.Schema) StreamUploaderSingleCall(com.github.davidmoten.odata.client.StreamUploaderSingleCall) EntitySet(com.github.davidmoten.odata.client.generator.model.EntitySet) ODataEntityType(com.github.davidmoten.odata.client.ODataEntityType) BuilderBase(com.github.davidmoten.odata.client.TestingService.BuilderBase) ActionRequestReturningNonCollectionUnwrapped(com.github.davidmoten.odata.client.ActionRequestReturningNonCollectionUnwrapped) TEntityContainer(org.oasisopen.odata.csdl.v4.TEntityContainer) UnmappedFieldsImpl(com.github.davidmoten.odata.client.internal.UnmappedFieldsImpl) StreamUploader(com.github.davidmoten.odata.client.StreamUploader) JsonInclude(com.fasterxml.jackson.annotation.JsonInclude) FunctionRequestReturningStream(com.github.davidmoten.odata.client.FunctionRequestReturningStream) JsonIgnoreType(com.fasterxml.jackson.annotation.JsonIgnoreType) CollectionPageNonEntityRequest(com.github.davidmoten.odata.client.CollectionPageNonEntityRequest) FunctionRequestReturningNonCollectionUnwrapped(com.github.davidmoten.odata.client.FunctionRequestReturningNonCollectionUnwrapped) Property(com.github.davidmoten.odata.client.annotation.Property) Collections(java.util.Collections) TEntityType(org.oasisopen.odata.csdl.v4.TEntityType) LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) Schema(org.oasisopen.odata.csdl.v4.Schema) ODataType(com.github.davidmoten.odata.client.ODataType) UncheckedIOException(java.io.UncheckedIOException) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) StringWriter(java.io.StringWriter) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) ParameterMap(com.github.davidmoten.odata.client.internal.ParameterMap) HashMap(java.util.HashMap) PrintWriter(java.io.PrintWriter) SchemaInfo(com.github.davidmoten.odata.client.SchemaInfo)

Example 2 with Method

use of com.github.davidmoten.odata.client.generator.model.Method in project odata-client by davidmoten.

the class Generator method writeContainer.

private void writeContainer(Schema schema, TEntityContainer t) {
    names.getDirectoryContainer(schema).mkdirs();
    String simpleClassName = names.getSimpleClassNameContainer(schema, t.getName());
    Imports imports = new Imports(names.getFullClassNameContainer(schema, t.getName()));
    Indent indent = new Indent();
    StringWriter w = new StringWriter();
    try (PrintWriter p = new PrintWriter(w)) {
        p.format("package %s;\n\n", names.getPackageContainer(schema));
        p.format(IMPORTSHERE);
        final String extension;
        if (t.getExtends() != null) {
            extension = " extends " + imports.add(names.getFullClassNameFromTypeWithNamespace(t.getExtends()));
        } else {
            extension = "";
        }
        p.format("public final class %s%s implements %s {\n\n", simpleClassName, extension, imports.add(HasContext.class));
        // TODO handle container extension
        // write fields
        p.format("%sprivate final %s contextPath;\n\n", indent.right(), imports.add(ContextPath.class));
        // write constructor
        p.format("%spublic %s(%s context) {\n", indent, simpleClassName, imports.add(Context.class));
        p.format("%sthis.contextPath = new %s(context, context.service().getBasePath());\n", indent.right(), imports.add(ContextPath.class));
        p.format("%s}\n", indent.left());
        p.format("\n%s@%s\n", indent, imports.add(Override.class));
        p.format("%spublic %s _context() {\n", indent, imports.add(Context.class));
        p.format("%sreturn contextPath.context();\n", indent.right());
        p.format("%s}\n", indent.left());
        p.format("\n%spublic %s _service() {\n", indent, imports.add(HttpService.class));
        p.format("%sreturn contextPath.context().service();\n", indent.right());
        p.format("%s}\n", indent.left());
        // write static testing method
        p.format("\n%sstatic final class ContainerBuilderImpl extends %s<%s> {\n", indent, imports.add(ContainerBuilder.class), simpleClassName);
        p.format("\n%s@%s\n", indent.right(), imports.add(Override.class));
        p.format("%spublic %s _create(%s context) {\n", indent, simpleClassName, imports.add(Context.class));
        p.format("%sreturn new %s(context);\n", indent.right(), simpleClassName);
        p.format("%s}\n", indent.left());
        p.format("%s}\n", indent.left());
        p.format("\n%spublic static %s<%s<%s>, %s> test() {\n", indent, imports.add(BuilderBase.class), imports.add(ContainerBuilder.class), simpleClassName, simpleClassName);
        p.format("%sreturn new ContainerBuilderImpl();\n", indent.right());
        p.format("%s}\n", indent.left());
        // write get methods from properties
        // 
        Util.filter(t.getEntitySetOrActionImportOrFunctionImport(), TEntitySet.class).forEach(x -> {
            Schema sch = names.getSchema(x.getEntityType());
            boolean addedWithEmptyKeys = false;
            if (names.isEntityWithNamespace(x.getEntityType())) {
                String entityRequestType = names.getFullClassNameEntityRequestFromTypeWithNamespace(sch, x.getEntityType());
                EntityType et = names.getEntityType(x.getEntityType());
                KeyInfo k = getKeyInfo(et, imports);
                p.format("\n%spublic %s %s(%s) {\n", indent, imports.add(entityRequestType), Names.getIdentifier(x.getName()), k.typedParams);
                p.format("%sreturn new %s(contextPath.addSegment(\"%s\")%s, %s.empty());\n", indent.right(), imports.add(entityRequestType), x.getName(), k.addKeys, imports.add(Optional.class));
                p.format("%s}\n", indent.left());
                addedWithEmptyKeys = k.isEmpty();
            }
            if (!addedWithEmptyKeys) {
                // don't add a collection method if there were no keys for the entity
                EntitySet es = new EntitySet(schema, t, x, names);
                p.format("\n%spublic %s %s() {\n", indent, imports.add(es.getFullClassNameEntitySet()), Names.getIdentifier(x.getName()));
                p.format("%sreturn new %s(\n", indent.right(), imports.add(es.getFullClassNameEntitySet()));
                p.format("%scontextPath.addSegment(\"%s\"));\n", indent.right().right().right().right(), x.getName());
                p.format("%s}\n", indent.left().left().left().left().left());
            }
        });
        // 
        Util.filter(t.getEntitySetOrActionImportOrFunctionImport(), // 
        TSingleton.class).forEach(x -> {
            String importedType = toClassName(x, imports);
            p.format("\n%spublic %s %s() {\n", indent, importedType, Names.getIdentifier(x.getName()));
            p.format("%sreturn new %s(contextPath.addSegment(\"%s\"), %s.empty());\n", indent.right(), importedType, x.getName(), imports.add(Optional.class));
            p.format("%s}\n", indent.left());
        });
        // write unbound actions
        Set<String> methodNames = new HashSet<>();
        // 
        Util.types(schema, // 
        TAction.class).filter(x -> !x.isIsBound()).forEach(x -> writeAction(imports, indent, p, new Action(x, names), methodNames));
        // 
        Util.types(schema, // 
        TFunction.class).filter(x -> !x.isIsBound()).forEach(x -> writeFunction(imports, indent, p, new Function(x, names), methodNames));
        p.format("\n}\n");
        File classFile = names.getClassFileContainer(schema, t.getName());
        writeToFile(imports, w, classFile);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) StreamProvider(com.github.davidmoten.odata.client.StreamProvider) Arrays(java.util.Arrays) HasNameJavaHasNullable(com.github.davidmoten.odata.client.generator.model.HasNameJavaHasNullable) HasContext(com.github.davidmoten.odata.client.HasContext) HttpService(com.github.davidmoten.odata.client.HttpService) TEnumType(org.oasisopen.odata.csdl.v4.TEnumType) Map(java.util.Map) Parameter(com.github.davidmoten.odata.client.generator.model.Action.Parameter) PrintWriter(java.io.PrintWriter) FunctionRequestReturningNonCollection(com.github.davidmoten.odata.client.FunctionRequestReturningNonCollection) SchemaAndType(com.github.davidmoten.odata.client.generator.Names.SchemaAndType) JacksonInject(com.fasterxml.jackson.annotation.JacksonInject) TEntitySet(org.oasisopen.odata.csdl.v4.TEntitySet) NameValue(com.github.davidmoten.odata.client.NameValue) RequestHelper(com.github.davidmoten.odata.client.internal.RequestHelper) Set(java.util.Set) ODataType(com.github.davidmoten.odata.client.ODataType) StandardCharsets(java.nio.charset.StandardCharsets) UncheckedIOException(java.io.UncheckedIOException) Stream(java.util.stream.Stream) Lists(com.github.davidmoten.guavamini.Lists) CollectionPageEntityRequest(com.github.davidmoten.odata.client.CollectionPageEntityRequest) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) SchemaInfo(com.github.davidmoten.odata.client.SchemaInfo) TProperty(org.oasisopen.odata.csdl.v4.TProperty) Checks(com.github.davidmoten.odata.client.internal.Checks) Files(java.nio.file.Files) TNavigationProperty(org.oasisopen.odata.csdl.v4.TNavigationProperty) Function(com.github.davidmoten.odata.client.generator.model.Function) StringWriter(java.io.StringWriter) TSingleton(org.oasisopen.odata.csdl.v4.TSingleton) HttpMethod(com.github.davidmoten.odata.client.HttpMethod) IOException(java.io.IOException) Include(com.fasterxml.jackson.annotation.JsonInclude.Include) ContainerBuilder(com.github.davidmoten.odata.client.TestingService.ContainerBuilder) File(java.io.File) ChangedFields(com.github.davidmoten.odata.client.internal.ChangedFields) NavigationProperty(com.github.davidmoten.odata.client.annotation.NavigationProperty) TNavigationPropertyBinding(org.oasisopen.odata.csdl.v4.TNavigationPropertyBinding) RequestOptions(com.github.davidmoten.odata.client.RequestOptions) ParameterMap(com.github.davidmoten.odata.client.internal.ParameterMap) TEnumTypeMember(org.oasisopen.odata.csdl.v4.TEnumTypeMember) HttpRequestOptions(com.github.davidmoten.odata.client.HttpRequestOptions) CollectionPage(com.github.davidmoten.odata.client.CollectionPage) FieldName(com.github.davidmoten.odata.client.generator.model.Structure.FieldName) ActionRequestNoReturn(com.github.davidmoten.odata.client.ActionRequestNoReturn) Action(com.github.davidmoten.odata.client.generator.model.Action) Field(com.github.davidmoten.odata.client.generator.model.Field) UploadStrategy(com.github.davidmoten.odata.client.UploadStrategy) TComplexType(org.oasisopen.odata.csdl.v4.TComplexType) JsonAnyGetter(com.fasterxml.jackson.annotation.JsonAnyGetter) ActionRequestReturningNonCollection(com.github.davidmoten.odata.client.ActionRequestReturningNonCollection) ReturnType(com.github.davidmoten.odata.client.generator.model.Action.ReturnType) UnmappedFields(com.github.davidmoten.odata.client.UnmappedFields) Collectors(java.util.stream.Collectors) EntityType(com.github.davidmoten.odata.client.generator.model.EntityType) JsonAnySetter(com.fasterxml.jackson.annotation.JsonAnySetter) Context(com.github.davidmoten.odata.client.Context) List(java.util.List) KeyElement(com.github.davidmoten.odata.client.generator.model.KeyElement) Method(com.github.davidmoten.odata.client.generator.model.Method) PropertyRef(com.github.davidmoten.odata.client.generator.model.PropertyRef) Structure(com.github.davidmoten.odata.client.generator.model.Structure) StreamUploaderChunked(com.github.davidmoten.odata.client.StreamUploaderChunked) Optional(java.util.Optional) ClientException(com.github.davidmoten.odata.client.ClientException) ContextPath(com.github.davidmoten.odata.client.ContextPath) JsonPropertyOrder(com.fasterxml.jackson.annotation.JsonPropertyOrder) ComplexType(com.github.davidmoten.odata.client.generator.model.ComplexType) Preconditions(com.github.davidmoten.guavamini.Preconditions) TypedObject(com.github.davidmoten.odata.client.internal.TypedObject) HashMap(java.util.HashMap) TActionFunctionParameter(org.oasisopen.odata.csdl.v4.TActionFunctionParameter) HashSet(java.util.HashSet) TActionFunctionReturnType(org.oasisopen.odata.csdl.v4.TActionFunctionReturnType) TFunction(org.oasisopen.odata.csdl.v4.TFunction) EntityRequest(com.github.davidmoten.odata.client.EntityRequest) JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore) TAction(org.oasisopen.odata.csdl.v4.TAction) Path(com.github.davidmoten.odata.client.Path) Schema(org.oasisopen.odata.csdl.v4.Schema) StreamUploaderSingleCall(com.github.davidmoten.odata.client.StreamUploaderSingleCall) EntitySet(com.github.davidmoten.odata.client.generator.model.EntitySet) ODataEntityType(com.github.davidmoten.odata.client.ODataEntityType) BuilderBase(com.github.davidmoten.odata.client.TestingService.BuilderBase) ActionRequestReturningNonCollectionUnwrapped(com.github.davidmoten.odata.client.ActionRequestReturningNonCollectionUnwrapped) TEntityContainer(org.oasisopen.odata.csdl.v4.TEntityContainer) UnmappedFieldsImpl(com.github.davidmoten.odata.client.internal.UnmappedFieldsImpl) StreamUploader(com.github.davidmoten.odata.client.StreamUploader) JsonInclude(com.fasterxml.jackson.annotation.JsonInclude) FunctionRequestReturningStream(com.github.davidmoten.odata.client.FunctionRequestReturningStream) JsonIgnoreType(com.fasterxml.jackson.annotation.JsonIgnoreType) CollectionPageNonEntityRequest(com.github.davidmoten.odata.client.CollectionPageNonEntityRequest) FunctionRequestReturningNonCollectionUnwrapped(com.github.davidmoten.odata.client.FunctionRequestReturningNonCollectionUnwrapped) Property(com.github.davidmoten.odata.client.annotation.Property) Collections(java.util.Collections) TEntityType(org.oasisopen.odata.csdl.v4.TEntityType) Action(com.github.davidmoten.odata.client.generator.model.Action) TAction(org.oasisopen.odata.csdl.v4.TAction) Schema(org.oasisopen.odata.csdl.v4.Schema) Function(com.github.davidmoten.odata.client.generator.model.Function) TFunction(org.oasisopen.odata.csdl.v4.TFunction) ContextPath(com.github.davidmoten.odata.client.ContextPath) TEntitySet(org.oasisopen.odata.csdl.v4.TEntitySet) EntitySet(com.github.davidmoten.odata.client.generator.model.EntitySet) ContainerBuilder(com.github.davidmoten.odata.client.TestingService.ContainerBuilder) StringWriter(java.io.StringWriter) PrintWriter(java.io.PrintWriter) HashSet(java.util.HashSet) HasContext(com.github.davidmoten.odata.client.HasContext) Context(com.github.davidmoten.odata.client.Context) TSingleton(org.oasisopen.odata.csdl.v4.TSingleton) Optional(java.util.Optional) BuilderBase(com.github.davidmoten.odata.client.TestingService.BuilderBase) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) TEntitySet(org.oasisopen.odata.csdl.v4.TEntitySet) EntityType(com.github.davidmoten.odata.client.generator.model.EntityType) ODataEntityType(com.github.davidmoten.odata.client.ODataEntityType) TEntityType(org.oasisopen.odata.csdl.v4.TEntityType) HttpService(com.github.davidmoten.odata.client.HttpService) HasContext(com.github.davidmoten.odata.client.HasContext) File(java.io.File)

Example 3 with Method

use of com.github.davidmoten.odata.client.generator.model.Method in project odata-client by davidmoten.

the class Generator method writeEntityRequest.

private void writeEntityRequest(Schema schema, TEntityType entityType, Map<String, List<Action>> typeActions, Map<String, List<Function>> typeFunctions) {
    EntityType t = new EntityType(entityType, names);
    names.getDirectoryEntityRequest(schema).mkdirs();
    // TODO only write out those requests needed
    String simpleClassName = t.getSimpleClassNameEntityRequest();
    Imports imports = new Imports(t.getFullClassNameEntityRequest());
    Indent indent = new Indent();
    StringWriter w = new StringWriter();
    try (PrintWriter p = new PrintWriter(w)) {
        p.format("package %s;\n\n", t.getPackageEntityRequest());
        p.format(IMPORTSHERE);
        p.format("@%s\n", imports.add(JsonIgnoreType.class));
        // don't make class final because can get extended by EntitySet
        p.format("public class %s extends %s {\n\n", simpleClassName, imports.add(EntityRequest.class) + "<" + imports.add(t.getFullClassNameEntity()) + ">");
        indent.right();
        // add constructor
        // 
        p.format(// 
        "%spublic %s(%s contextPath, %s<%s> value) {\n", // 
        indent, // 
        simpleClassName, // 
        imports.add(ContextPath.class), imports.add(Optional.class), imports.add(Object.class));
        // 
        p.format(// 
        "%ssuper(%s.class, contextPath, value, %s);\n", // 
        indent.right(), // 
        imports.add(t.getFullClassNameEntity()), t.isMediaEntityOrHasStreamProperty());
        p.format("%s}\n", indent.left());
        indent.left();
        if (t.hasStream()) {
            p.format("\n%s/**\n", indent);
            p.format("%s * If returning a stream without using object metadata is not supported then", indent);
            p.format("%s * returns {@code Optional.empty()}. Otherwise, returns a stream provider\n", indent);
            p.format("%s * where the location of the stream is assumed to be the current path + {@code /$value}.\n", indent);
            p.format("%s *\n", indent);
            p.format("%s * @return StreamProvider if suitable metadata found otherwise returns\n", indent);
            p.format("%s *         {@code Optional.empty()}\n", indent);
            p.format("%s */\n", indent);
            p.format("%s@%s\n", indent, imports.add(JsonIgnore.class));
            p.format("%spublic %s<%s> getStreamCurrentPath() {\n", indent, imports.add(Optional.class), imports.add(StreamProvider.class));
            p.format("%sreturn %s.createStream(contextPath, null);\n", indent.right(), imports.add(RequestHelper.class));
            p.format("%s}\n", indent.left());
        }
        // TODO also support navigation properties with complexTypes?
        // 
        t.getNavigationProperties().stream().filter(x -> {
            boolean isEntity = names.isEntityWithNamespace(names.getInnerType(names.getType(x)));
            if (!isEntity) {
                log("Unexpected entity with non-entity navigation property type: " + simpleClassName + "." + x.getName() + ". If you get this message then raise an issue on the github project for odata-client.");
            }
            return isEntity;
        }).forEach(x -> {
            indent.right();
            final String returnClass;
            String y = x.getType().get(0);
            Schema sch = names.getSchema(names.getInnerType(y));
            if (Names.isCollection(y)) {
                returnClass = toClassName(x, imports);
            } else {
                returnClass = imports.add(names.getFullClassNameEntityRequestFromTypeWithNamespace(sch, y));
            }
            // if collection then add with id method (if has ids)
            if (Names.isCollection(y)) {
                // TODO use actual key name from metadata
                String inner = names.getInnerType(y);
                // TODO remove redundant check
                if (names.isEntityWithNamespace(inner)) {
                    String entityRequestType = names.getFullClassNameEntityRequestFromTypeWithNamespace(sch, inner);
                    EntityType et = names.getEntityType(inner);
                    KeyInfo k = getKeyInfo(et, imports);
                    if (!k.isEmpty()) {
                        p.format("\n%spublic %s %s(%s) {\n", indent, imports.add(entityRequestType), Names.getIdentifier(x.getName()), k.typedParams);
                        p.format("%sreturn new %s(contextPath.addSegment(\"%s\")%s, %s.empty());\n", indent.right(), imports.add(entityRequestType), x.getName(), k.addKeys, imports.add(Optional.class));
                        p.format("%s}\n", indent.left());
                    }
                }
            }
            // 
            p.format(// 
            "\n%spublic %s %s() {\n", // 
            indent, // 
            returnClass, Names.getGetterMethodWithoutGet(x.getName()));
            if (isCollection(x)) {
                p.format("%sreturn new %s(\n", indent.right(), toClassName(x, imports));
                p.format("%scontextPath.addSegment(\"%s\"), %s.empty());\n", indent.right().right().right().right(), x.getName(), imports.add(Optional.class));
                indent.left().left().left().left();
            } else {
                p.format("%sreturn new %s(contextPath.addSegment(\"%s\"), %s.empty());\n", indent.right(), returnClass, x.getName(), imports.add(Optional.class));
            }
            p.format("%s}\n", indent.left());
            indent.left();
        });
        indent.right();
        Set<String> methodNames = new HashSet<>();
        writeBoundActionMethods(t, typeActions, imports, indent, p, methodNames);
        writeBoundFunctionMethods(t, typeFunctions, imports, indent, p, methodNames);
        indent.left();
        p.format("\n}\n");
        writeToFile(imports, w, t.getClassFileEntityRequest());
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) StreamProvider(com.github.davidmoten.odata.client.StreamProvider) Arrays(java.util.Arrays) HasNameJavaHasNullable(com.github.davidmoten.odata.client.generator.model.HasNameJavaHasNullable) HasContext(com.github.davidmoten.odata.client.HasContext) HttpService(com.github.davidmoten.odata.client.HttpService) TEnumType(org.oasisopen.odata.csdl.v4.TEnumType) Map(java.util.Map) Parameter(com.github.davidmoten.odata.client.generator.model.Action.Parameter) PrintWriter(java.io.PrintWriter) FunctionRequestReturningNonCollection(com.github.davidmoten.odata.client.FunctionRequestReturningNonCollection) SchemaAndType(com.github.davidmoten.odata.client.generator.Names.SchemaAndType) JacksonInject(com.fasterxml.jackson.annotation.JacksonInject) TEntitySet(org.oasisopen.odata.csdl.v4.TEntitySet) NameValue(com.github.davidmoten.odata.client.NameValue) RequestHelper(com.github.davidmoten.odata.client.internal.RequestHelper) Set(java.util.Set) ODataType(com.github.davidmoten.odata.client.ODataType) StandardCharsets(java.nio.charset.StandardCharsets) UncheckedIOException(java.io.UncheckedIOException) Stream(java.util.stream.Stream) Lists(com.github.davidmoten.guavamini.Lists) CollectionPageEntityRequest(com.github.davidmoten.odata.client.CollectionPageEntityRequest) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) SchemaInfo(com.github.davidmoten.odata.client.SchemaInfo) TProperty(org.oasisopen.odata.csdl.v4.TProperty) Checks(com.github.davidmoten.odata.client.internal.Checks) Files(java.nio.file.Files) TNavigationProperty(org.oasisopen.odata.csdl.v4.TNavigationProperty) Function(com.github.davidmoten.odata.client.generator.model.Function) StringWriter(java.io.StringWriter) TSingleton(org.oasisopen.odata.csdl.v4.TSingleton) HttpMethod(com.github.davidmoten.odata.client.HttpMethod) IOException(java.io.IOException) Include(com.fasterxml.jackson.annotation.JsonInclude.Include) ContainerBuilder(com.github.davidmoten.odata.client.TestingService.ContainerBuilder) File(java.io.File) ChangedFields(com.github.davidmoten.odata.client.internal.ChangedFields) NavigationProperty(com.github.davidmoten.odata.client.annotation.NavigationProperty) TNavigationPropertyBinding(org.oasisopen.odata.csdl.v4.TNavigationPropertyBinding) RequestOptions(com.github.davidmoten.odata.client.RequestOptions) ParameterMap(com.github.davidmoten.odata.client.internal.ParameterMap) TEnumTypeMember(org.oasisopen.odata.csdl.v4.TEnumTypeMember) HttpRequestOptions(com.github.davidmoten.odata.client.HttpRequestOptions) CollectionPage(com.github.davidmoten.odata.client.CollectionPage) FieldName(com.github.davidmoten.odata.client.generator.model.Structure.FieldName) ActionRequestNoReturn(com.github.davidmoten.odata.client.ActionRequestNoReturn) Action(com.github.davidmoten.odata.client.generator.model.Action) Field(com.github.davidmoten.odata.client.generator.model.Field) UploadStrategy(com.github.davidmoten.odata.client.UploadStrategy) TComplexType(org.oasisopen.odata.csdl.v4.TComplexType) JsonAnyGetter(com.fasterxml.jackson.annotation.JsonAnyGetter) ActionRequestReturningNonCollection(com.github.davidmoten.odata.client.ActionRequestReturningNonCollection) ReturnType(com.github.davidmoten.odata.client.generator.model.Action.ReturnType) UnmappedFields(com.github.davidmoten.odata.client.UnmappedFields) Collectors(java.util.stream.Collectors) EntityType(com.github.davidmoten.odata.client.generator.model.EntityType) JsonAnySetter(com.fasterxml.jackson.annotation.JsonAnySetter) Context(com.github.davidmoten.odata.client.Context) List(java.util.List) KeyElement(com.github.davidmoten.odata.client.generator.model.KeyElement) Method(com.github.davidmoten.odata.client.generator.model.Method) PropertyRef(com.github.davidmoten.odata.client.generator.model.PropertyRef) Structure(com.github.davidmoten.odata.client.generator.model.Structure) StreamUploaderChunked(com.github.davidmoten.odata.client.StreamUploaderChunked) Optional(java.util.Optional) ClientException(com.github.davidmoten.odata.client.ClientException) ContextPath(com.github.davidmoten.odata.client.ContextPath) JsonPropertyOrder(com.fasterxml.jackson.annotation.JsonPropertyOrder) ComplexType(com.github.davidmoten.odata.client.generator.model.ComplexType) Preconditions(com.github.davidmoten.guavamini.Preconditions) TypedObject(com.github.davidmoten.odata.client.internal.TypedObject) HashMap(java.util.HashMap) TActionFunctionParameter(org.oasisopen.odata.csdl.v4.TActionFunctionParameter) HashSet(java.util.HashSet) TActionFunctionReturnType(org.oasisopen.odata.csdl.v4.TActionFunctionReturnType) TFunction(org.oasisopen.odata.csdl.v4.TFunction) EntityRequest(com.github.davidmoten.odata.client.EntityRequest) JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore) TAction(org.oasisopen.odata.csdl.v4.TAction) Path(com.github.davidmoten.odata.client.Path) Schema(org.oasisopen.odata.csdl.v4.Schema) StreamUploaderSingleCall(com.github.davidmoten.odata.client.StreamUploaderSingleCall) EntitySet(com.github.davidmoten.odata.client.generator.model.EntitySet) ODataEntityType(com.github.davidmoten.odata.client.ODataEntityType) BuilderBase(com.github.davidmoten.odata.client.TestingService.BuilderBase) ActionRequestReturningNonCollectionUnwrapped(com.github.davidmoten.odata.client.ActionRequestReturningNonCollectionUnwrapped) TEntityContainer(org.oasisopen.odata.csdl.v4.TEntityContainer) UnmappedFieldsImpl(com.github.davidmoten.odata.client.internal.UnmappedFieldsImpl) StreamUploader(com.github.davidmoten.odata.client.StreamUploader) JsonInclude(com.fasterxml.jackson.annotation.JsonInclude) FunctionRequestReturningStream(com.github.davidmoten.odata.client.FunctionRequestReturningStream) JsonIgnoreType(com.fasterxml.jackson.annotation.JsonIgnoreType) CollectionPageNonEntityRequest(com.github.davidmoten.odata.client.CollectionPageNonEntityRequest) FunctionRequestReturningNonCollectionUnwrapped(com.github.davidmoten.odata.client.FunctionRequestReturningNonCollectionUnwrapped) Property(com.github.davidmoten.odata.client.annotation.Property) Collections(java.util.Collections) TEntityType(org.oasisopen.odata.csdl.v4.TEntityType) StreamProvider(com.github.davidmoten.odata.client.StreamProvider) JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore) Optional(java.util.Optional) JsonIgnoreType(com.fasterxml.jackson.annotation.JsonIgnoreType) Schema(org.oasisopen.odata.csdl.v4.Schema) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) EntityType(com.github.davidmoten.odata.client.generator.model.EntityType) ODataEntityType(com.github.davidmoten.odata.client.ODataEntityType) TEntityType(org.oasisopen.odata.csdl.v4.TEntityType) ContextPath(com.github.davidmoten.odata.client.ContextPath) StringWriter(java.io.StringWriter) RequestHelper(com.github.davidmoten.odata.client.internal.RequestHelper) TypedObject(com.github.davidmoten.odata.client.internal.TypedObject) PrintWriter(java.io.PrintWriter) HashSet(java.util.HashSet)

Example 4 with Method

use of com.github.davidmoten.odata.client.generator.model.Method in project odata-client by davidmoten.

the class Generator method writeEntity.

private void writeEntity(TEntityType entityType, Map<String, List<Action>> typeActions, Map<String, List<Function>> typeFunctions) {
    EntityType t = new EntityType(entityType, names);
    t.getDirectoryEntity().mkdirs();
    String simpleClassName = t.getSimpleClassName();
    Imports imports = new Imports(t.getFullClassNameEntity());
    Indent indent = new Indent();
    StringWriter w = new StringWriter();
    try (PrintWriter p = new PrintWriter(w)) {
        p.format("package %s;\n\n", t.getPackage());
        p.format(IMPORTSHERE);
        t.printJavadoc(p, indent);
        printPropertyOrder(imports, p, t.getProperties());
        printJsonIncludesNonNull(indent, imports, p);
        p.format("public class %s%s implements %s {\n", simpleClassName, t.getExtendsClause(imports), imports.add(ODataEntityType.class));
        indent.right();
        if (!t.hasBaseType()) {
            addContextPathInjectableField(imports, indent, p);
            addUnmappedFieldsField(imports, indent, p);
            addChangedFieldsField(imports, indent, p);
        }
        p.format("\n%s@%s\n", indent, imports.add(Override.class));
        p.format("%spublic String odataTypeName() {\n", indent);
        p.format("%sreturn \"%s\";\n", indent.right(), t.getFullType());
        p.format("%s}\n", indent.left());
        // add other fields
        printPropertyFields(imports, indent, p, t.getProperties(), t.hasBaseType());
        // write constructor
        writeNoArgsConstructor(simpleClassName, indent, p, t.hasBaseType());
        writeBuilder(t, simpleClassName, imports, indent, p);
        p.format("\n%s@%s\n", indent, imports.add(Override.class));
        p.format("%s@%s\n", indent, imports.add(JsonIgnore.class));
        p.format("%spublic %s getChangedFields() {\n", indent, imports.add(ChangedFields.class));
        p.format("%sreturn changedFields;\n", indent.right());
        p.format("%s}\n", indent.left());
        String nullCheck = // 
        fieldNames(t).stream().map(// 
        f -> f + " != null").collect(Collectors.joining(" && "));
        if (!nullCheck.isEmpty()) {
            nullCheck = " && " + nullCheck;
        }
        p.format("\n%s@%s\n", indent, imports.add(Override.class));
        p.format("%spublic void postInject(boolean addKeysToContextPath) {\n", indent);
        p.format("%sif (addKeysToContextPath%s) {\n", indent.right(), nullCheck);
        p.format("%scontextPath = contextPath.clearQueries()%s;\n", indent.right(), getAddKeys(t, imports));
        p.format("%s}\n", indent.left());
        p.format("%s}\n", indent.left());
        Set<String> methodNames = new HashSet<>();
        // write property getter and setters
        printPropertyGetterAndSetters(t, imports, indent, p, simpleClassName, t.getFullType(), t.getProperties(), true, methodNames);
        addInheritedPropertyNames(t, methodNames);
        printNavigationPropertyGetters(t, imports, indent, p, t.getNavigationProperties(), methodNames);
        addUnmappedFieldsSetterAndGetter(imports, indent, p, methodNames);
        if (t.hasStream()) {
            p.format("\n%s/**\n", indent);
            p.format("%s * If suitable metadata found a StreamProvider is returned otherwise returns\n", indent);
            p.format("%s * {@code Optional.empty()}. Normally for a stream to be available this entity\n", indent);
            p.format("%s * needs to have been hydrated with full metadata. Consider calling the builder\n", indent);
            p.format("%s * method {@code .metadataFull()} when getting this instance (either directly or\n", indent);
            p.format("%s * as part of a collection).\n", indent);
            p.format("%s *\n", indent);
            p.format("%s * @return StreamProvider if suitable metadata found otherwise returns\n", indent);
            p.format("%s *         {@code Optional.empty()}\n", indent);
            p.format("%s */\n", indent);
            p.format("%s@%s\n", indent, imports.add(JsonIgnore.class));
            p.format("%spublic %s<%s> getStream() {\n", indent, imports.add(Optional.class), imports.add(StreamProvider.class));
            p.format("%sreturn %s.createStream(contextPath, this);\n", indent.right(), imports.add(RequestHelper.class));
            p.format("%s}\n", indent.left());
        }
        // write Patched class
        writePatchAndPutMethods(t, simpleClassName, imports, indent, p);
        writeCopyMethod(t, simpleClassName, imports, indent, p, true);
        writeBoundActionMethods(t, typeActions, imports, indent, p, methodNames);
        writeBoundFunctionMethods(t, typeFunctions, imports, indent, p, methodNames);
        // write toString
        writeToString(t, simpleClassName, imports, indent, p);
        p.format("%s}\n", indent.left());
        writeToFile(imports, w, t.getClassFile());
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) StreamProvider(com.github.davidmoten.odata.client.StreamProvider) Arrays(java.util.Arrays) HasNameJavaHasNullable(com.github.davidmoten.odata.client.generator.model.HasNameJavaHasNullable) HasContext(com.github.davidmoten.odata.client.HasContext) HttpService(com.github.davidmoten.odata.client.HttpService) TEnumType(org.oasisopen.odata.csdl.v4.TEnumType) Map(java.util.Map) Parameter(com.github.davidmoten.odata.client.generator.model.Action.Parameter) PrintWriter(java.io.PrintWriter) FunctionRequestReturningNonCollection(com.github.davidmoten.odata.client.FunctionRequestReturningNonCollection) SchemaAndType(com.github.davidmoten.odata.client.generator.Names.SchemaAndType) JacksonInject(com.fasterxml.jackson.annotation.JacksonInject) TEntitySet(org.oasisopen.odata.csdl.v4.TEntitySet) NameValue(com.github.davidmoten.odata.client.NameValue) RequestHelper(com.github.davidmoten.odata.client.internal.RequestHelper) Set(java.util.Set) ODataType(com.github.davidmoten.odata.client.ODataType) StandardCharsets(java.nio.charset.StandardCharsets) UncheckedIOException(java.io.UncheckedIOException) Stream(java.util.stream.Stream) Lists(com.github.davidmoten.guavamini.Lists) CollectionPageEntityRequest(com.github.davidmoten.odata.client.CollectionPageEntityRequest) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) SchemaInfo(com.github.davidmoten.odata.client.SchemaInfo) TProperty(org.oasisopen.odata.csdl.v4.TProperty) Checks(com.github.davidmoten.odata.client.internal.Checks) Files(java.nio.file.Files) TNavigationProperty(org.oasisopen.odata.csdl.v4.TNavigationProperty) Function(com.github.davidmoten.odata.client.generator.model.Function) StringWriter(java.io.StringWriter) TSingleton(org.oasisopen.odata.csdl.v4.TSingleton) HttpMethod(com.github.davidmoten.odata.client.HttpMethod) IOException(java.io.IOException) Include(com.fasterxml.jackson.annotation.JsonInclude.Include) ContainerBuilder(com.github.davidmoten.odata.client.TestingService.ContainerBuilder) File(java.io.File) ChangedFields(com.github.davidmoten.odata.client.internal.ChangedFields) NavigationProperty(com.github.davidmoten.odata.client.annotation.NavigationProperty) TNavigationPropertyBinding(org.oasisopen.odata.csdl.v4.TNavigationPropertyBinding) RequestOptions(com.github.davidmoten.odata.client.RequestOptions) ParameterMap(com.github.davidmoten.odata.client.internal.ParameterMap) TEnumTypeMember(org.oasisopen.odata.csdl.v4.TEnumTypeMember) HttpRequestOptions(com.github.davidmoten.odata.client.HttpRequestOptions) CollectionPage(com.github.davidmoten.odata.client.CollectionPage) FieldName(com.github.davidmoten.odata.client.generator.model.Structure.FieldName) ActionRequestNoReturn(com.github.davidmoten.odata.client.ActionRequestNoReturn) Action(com.github.davidmoten.odata.client.generator.model.Action) Field(com.github.davidmoten.odata.client.generator.model.Field) UploadStrategy(com.github.davidmoten.odata.client.UploadStrategy) TComplexType(org.oasisopen.odata.csdl.v4.TComplexType) JsonAnyGetter(com.fasterxml.jackson.annotation.JsonAnyGetter) ActionRequestReturningNonCollection(com.github.davidmoten.odata.client.ActionRequestReturningNonCollection) ReturnType(com.github.davidmoten.odata.client.generator.model.Action.ReturnType) UnmappedFields(com.github.davidmoten.odata.client.UnmappedFields) Collectors(java.util.stream.Collectors) EntityType(com.github.davidmoten.odata.client.generator.model.EntityType) JsonAnySetter(com.fasterxml.jackson.annotation.JsonAnySetter) Context(com.github.davidmoten.odata.client.Context) List(java.util.List) KeyElement(com.github.davidmoten.odata.client.generator.model.KeyElement) Method(com.github.davidmoten.odata.client.generator.model.Method) PropertyRef(com.github.davidmoten.odata.client.generator.model.PropertyRef) Structure(com.github.davidmoten.odata.client.generator.model.Structure) StreamUploaderChunked(com.github.davidmoten.odata.client.StreamUploaderChunked) Optional(java.util.Optional) ClientException(com.github.davidmoten.odata.client.ClientException) ContextPath(com.github.davidmoten.odata.client.ContextPath) JsonPropertyOrder(com.fasterxml.jackson.annotation.JsonPropertyOrder) ComplexType(com.github.davidmoten.odata.client.generator.model.ComplexType) Preconditions(com.github.davidmoten.guavamini.Preconditions) TypedObject(com.github.davidmoten.odata.client.internal.TypedObject) HashMap(java.util.HashMap) TActionFunctionParameter(org.oasisopen.odata.csdl.v4.TActionFunctionParameter) HashSet(java.util.HashSet) TActionFunctionReturnType(org.oasisopen.odata.csdl.v4.TActionFunctionReturnType) TFunction(org.oasisopen.odata.csdl.v4.TFunction) EntityRequest(com.github.davidmoten.odata.client.EntityRequest) JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore) TAction(org.oasisopen.odata.csdl.v4.TAction) Path(com.github.davidmoten.odata.client.Path) Schema(org.oasisopen.odata.csdl.v4.Schema) StreamUploaderSingleCall(com.github.davidmoten.odata.client.StreamUploaderSingleCall) EntitySet(com.github.davidmoten.odata.client.generator.model.EntitySet) ODataEntityType(com.github.davidmoten.odata.client.ODataEntityType) BuilderBase(com.github.davidmoten.odata.client.TestingService.BuilderBase) ActionRequestReturningNonCollectionUnwrapped(com.github.davidmoten.odata.client.ActionRequestReturningNonCollectionUnwrapped) TEntityContainer(org.oasisopen.odata.csdl.v4.TEntityContainer) UnmappedFieldsImpl(com.github.davidmoten.odata.client.internal.UnmappedFieldsImpl) StreamUploader(com.github.davidmoten.odata.client.StreamUploader) JsonInclude(com.fasterxml.jackson.annotation.JsonInclude) FunctionRequestReturningStream(com.github.davidmoten.odata.client.FunctionRequestReturningStream) JsonIgnoreType(com.fasterxml.jackson.annotation.JsonIgnoreType) CollectionPageNonEntityRequest(com.github.davidmoten.odata.client.CollectionPageNonEntityRequest) FunctionRequestReturningNonCollectionUnwrapped(com.github.davidmoten.odata.client.FunctionRequestReturningNonCollectionUnwrapped) Property(com.github.davidmoten.odata.client.annotation.Property) Collections(java.util.Collections) TEntityType(org.oasisopen.odata.csdl.v4.TEntityType) StreamProvider(com.github.davidmoten.odata.client.StreamProvider) JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore) Optional(java.util.Optional) ChangedFields(com.github.davidmoten.odata.client.internal.ChangedFields) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) ODataEntityType(com.github.davidmoten.odata.client.ODataEntityType) EntityType(com.github.davidmoten.odata.client.generator.model.EntityType) ODataEntityType(com.github.davidmoten.odata.client.ODataEntityType) TEntityType(org.oasisopen.odata.csdl.v4.TEntityType) StringWriter(java.io.StringWriter) RequestHelper(com.github.davidmoten.odata.client.internal.RequestHelper) PrintWriter(java.io.PrintWriter) HashSet(java.util.HashSet)

Aggregations

JacksonInject (com.fasterxml.jackson.annotation.JacksonInject)4 JsonAnyGetter (com.fasterxml.jackson.annotation.JsonAnyGetter)4 JsonAnySetter (com.fasterxml.jackson.annotation.JsonAnySetter)4 JsonIgnore (com.fasterxml.jackson.annotation.JsonIgnore)4 JsonIgnoreType (com.fasterxml.jackson.annotation.JsonIgnoreType)4 JsonInclude (com.fasterxml.jackson.annotation.JsonInclude)4 Include (com.fasterxml.jackson.annotation.JsonInclude.Include)4 JsonProperty (com.fasterxml.jackson.annotation.JsonProperty)4 JsonPropertyOrder (com.fasterxml.jackson.annotation.JsonPropertyOrder)4 Lists (com.github.davidmoten.guavamini.Lists)4 Preconditions (com.github.davidmoten.guavamini.Preconditions)4 ActionRequestNoReturn (com.github.davidmoten.odata.client.ActionRequestNoReturn)4 ActionRequestReturningNonCollection (com.github.davidmoten.odata.client.ActionRequestReturningNonCollection)4 ActionRequestReturningNonCollectionUnwrapped (com.github.davidmoten.odata.client.ActionRequestReturningNonCollectionUnwrapped)4 ClientException (com.github.davidmoten.odata.client.ClientException)4 CollectionPage (com.github.davidmoten.odata.client.CollectionPage)4 CollectionPageEntityRequest (com.github.davidmoten.odata.client.CollectionPageEntityRequest)4 CollectionPageNonEntityRequest (com.github.davidmoten.odata.client.CollectionPageNonEntityRequest)4 Context (com.github.davidmoten.odata.client.Context)4 ContextPath (com.github.davidmoten.odata.client.ContextPath)4