Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions powershell/llcsharp/model/model-class-serializer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ import { ObjectImplementation } from '../schema/object';
import { Schema } from '../code-model';
import { Schema as NewSchema } from '@azure-tools/codemodel';

import { getVirtualPropertyName } from './model-class';
import { getVirtualPropertyName, NewGetVirtualPropertyName } from './model-class';
import { VirtualProperty as NewVirtualProperty } from '../../utils/schema';

export class SerializationPartialClass extends Initializer {
constructor(protected targetClass: Class, protected targetInterface: TypeDeclaration, protected serializationType: TypeDeclaration, protected serializationFormat: string, protected schema: Schema, protected resolver: (s: Schema, req: boolean) => EnhancedTypeDeclaration, objectInitializer?: DeepPartial<SerializationPartialClass>) {
Expand Down Expand Up @@ -273,16 +274,16 @@ export class NewDeserializerPartialClass extends NewSerializationPartialClass {
return function* () {
yield '// actually deserialize ';
// skip-for-time-being
// for (const virtualProperty of values($this.allVirtualProperties)) {
// // yield `// deserialize ${virtualProperty.name} from ${$this.serializationFormat}`;
// const type = $this.resolver(<Schema>virtualProperty.property.schema, virtualProperty.property.details.default.required);
for (const virtualProperty of values(<Array<NewVirtualProperty>>$this.allVirtualProperties)) {
// yield `// deserialize ${virtualProperty.name} from ${$this.serializationFormat}`;
const type = $this.resolver(<NewSchema>virtualProperty.property.schema, virtualProperty.property.language.default.required);

// const cvt = type.convertObjectMethod;
// const t = `((${virtualProperty.originalContainingSchema.details.csharp.fullInternalInterfaceName})this)`;
// const tt = type ? `(${type.declaration})` : '';
const cvt = type.convertObjectMethod;
const t = `((${virtualProperty.originalContainingSchema.language.csharp?.fullInternalInterfaceName})this)`;
const tt = type ? `(${type.declaration})` : '';

// yield `${t}.${getVirtualPropertyName(virtualProperty)} = ${tt} ${$this.contentParameter}.GetValueForProperty("${getVirtualPropertyName(virtualProperty)}",${t}.${getVirtualPropertyName(virtualProperty)}, ${cvt});`;
// }
yield `${t}.${NewGetVirtualPropertyName(virtualProperty)} = ${tt} ${$this.contentParameter}.GetValueForProperty("${NewGetVirtualPropertyName(virtualProperty)}",${t}.${NewGetVirtualPropertyName(virtualProperty)}, ${cvt});`;
}
};
}

Expand Down
1 change: 1 addition & 0 deletions powershell/plugins/plugin-tweak-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ async function tweakModelV2(state: State): Promise<PwshModel> {
const universalId = new ObjectSchema(`${serviceName}Identity`, 'Resource Identity');
universalId.apiVersions = universalId.apiVersions || [];
state.model.schemas.objects = state.model.schemas.objects || [];
(<any>universalId.language.default).uid = 'universal-parameter-type';
state.model.schemas.objects.push(universalId);

for (const group of values(model.operationGroups)) {
Expand Down
2 changes: 1 addition & 1 deletion powershell/plugins/ps-namer-v2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ async function tweakModel(state: State): Promise<PwshModel> {

// make sure recursively that every details field has csharp
for (const { index, instance } of linq.visitor(state.model)) {
if (index === 'details' && instance.default && !instance.csharp) {
if ((index === 'details' || index === 'language') && instance.default && !instance.csharp) {
instance.csharp = linq.clone(instance.default, false, undefined, undefined, ['schema', 'origin']);
}
}
Expand Down