Object reference error when using Language Weaver plugin from standalone app

Hi,

we are automating Studio from a standalone application (e.g. running pretranslation), and the languageweaver plugin is throwing an "Object reference not set to an instance of an object" error (encapsulated into another general error about failed to create translation provider etc)

We provide the credentials for the languageweaveredge:/// uri like this:

{
"credentials": {
"Uri": "">https://xxxxxx",
"Scheme": "https",
"Host": "">https://xxxxxx",
"Port": "8000",
"UserName": null,
"Password": null,
"ApiKey": "yyyyyy"
},
"accessToken": {
"accessToken": "zzzzzz",
"TokenType": "Basic",
"RefreshToken": null,
"ValidityInSeconds": 0,
"ExpiresAt": 0,
"AccountId": null,
"AccountNickname": null,
"BaseUri": "">https://xxxxxx"
}
}

The same plugin is working properly in Studio desktop.

The exception does not contain any stacktrace. If I build the source code of the plugin myself, then it is not loaded by the studio api used in the standalone app (because it is not signed - community.rws.com/.../has-loading-unsigned-plugin-into-standalone-cmd-app-been-blocked).

I can use it in the desktop studio, but there the error does not occur. 

Can you please help me how to trace down this error? Is the credential string in the right format? (I digged it out from the plugin debugged why being used in the desktop Studio)

thank you,

Tamas

emoji
Parents Reply Children
  • Hi  

    it was successful with the console application. But it is needed to add the state variable as well, otherwise it throws nullp exception:

    var tpReference = new TranslationProviderReference(new Uri(tpUriString), state, true);

    And I realized that the Pre-translate task throws nullp exception (token is null) if the format of the token string in the AddCredential function is not correct. So, it is hard to find the reason.

    But it is working now, thank you for your help.

  • Hi  

    we made some further development, and turned out that there is still a problem with PreTranslate:

    if you use the console application  you mentioned, but you call the PreTranslate 2x:

    RunScanTaskFiles(project);
    RunAnalyzeTaskFiles(project, targetLanguage);
    RunPreTranslateFiles(project, targetLanguage);
    RunPreTranslateFiles(project, targetLanguage);

    Then the plugin gives this error:

    System.ArgumentNullException
    Value cannot be null.
       at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
       at LanguageWeaverProvider.TranslationProviderLanguageDirection.StoreSegmentMetadata(EvaluatedSegment evaluatedSegment, PairMapping pairMapping, String fileName)
       at LanguageWeaverProvider.TranslationProviderLanguageDirection.SetMetadataOnSegment(EvaluatedSegment evaluatedSegment, PairMapping pairMapping, String fileName, Int32 index, ITranslationOrigin translationOrigin)
       at LanguageWeaverProvider.TranslationProviderLanguageDirection.SearchTranslationUnitsMasked(SearchSettings settings, TranslationUnit[] translationUnits, Boolean[] mask)
       at Sdl.LanguagePlatform.TranslationMemoryApi.Cascade`1.SearchSegmentAndSubSegmentTranslationUnitsMaskedCommand.Execute(T cascadeEntry, SearchSettings searchSettings)
       at Sdl.LanguagePlatform.TranslationMemoryApi.Cascade`1.ExecuteSearchCommand(SearchCommand`1 searchCommand, SearchSettings searchSettings, Int32 searchResultsCount, IEnumerable`1& cascadeMessages)</StackTraceString

    We have a workflow where PreTranslate is called more than once and it is working fine with other plugins.

    Could you please advise on this?

    Thank you,

    Peter