Skip to content
This repository has been archived by the owner on Jun 20, 2018. It is now read-only.

Commit

Permalink
Make HostedPluginUriPostProcessor symbol global (#15)
Browse files Browse the repository at this point in the history
  • Loading branch information
mmorhun authored and benoitf committed Jun 19, 2018
1 parent 9a88727 commit 0866f89
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 5 deletions.
4 changes: 2 additions & 2 deletions packages/plugin-ext/src/hosted/node/hosted-plugin-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import * as fs from "fs";
import * as net from "net";
import URI from '@theia/core/lib/common/uri';
import { ContributionProvider } from "@theia/core/lib/common/contribution-provider";
import { HostedPluginUriPostProcessor } from "./hosted-plugin-uri-postprocessor";
import { HostedPluginUriPostProcessor, HostedPluginUriPostProcessorSymbolName } from "./hosted-plugin-uri-postprocessor";

export const HostedPluginManager = Symbol('HostedPluginManager');

Expand Down Expand Up @@ -198,7 +198,7 @@ export abstract class AbstractHostedPluginManager implements HostedPluginManager

@injectable()
export class NodeHostedPluginRunner extends AbstractHostedPluginManager {
@inject(ContributionProvider) @named(HostedPluginUriPostProcessor)
@inject(ContributionProvider) @named(Symbol.for(HostedPluginUriPostProcessorSymbolName))
protected readonly uriPostProcessors: ContributionProvider<HostedPluginUriPostProcessor>;

protected async postProcessInstanceUri(uri: URI): Promise<URI> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,16 @@

import URI from "@theia/core/lib/common/uri";

export const HostedPluginUriPostProcessor = Symbol('HostedPluginUriPostProcessor');
// We export symbol name instead of symbol itself here because we need to provide
// a contribution point to which any extensions could contribute.
// In case of just symbols, symbol inside an extension won't be the same as here
// even if the extension imports this module.
// To solve this problem we should provide global symbol. So right way to use the contribution point is:
// ...
// bind(Symbol.for(HostedPluginUriPostProcessorSymbolName)).to(AContribution);
// ...
export const HostedPluginUriPostProcessorSymbolName = 'HostedPluginUriPostProcessor';

export interface HostedPluginUriPostProcessor {
processUri(uri: URI): Promise<URI>;
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import { bindContributionProvider } from "@theia/core/lib/common/contribution-provider";
import { HostedPluginManager, NodeHostedPluginRunner } from './hosted-plugin-manager';
import { HostedPluginUriPostProcessor } from "./hosted-plugin-uri-postprocessor";
import { HostedPluginUriPostProcessorSymbolName } from "./hosted-plugin-uri-postprocessor";
import { interfaces } from "inversify";
import { ConnectionHandler, JsonRpcConnectionHandler } from "@theia/core/lib/common/messaging";
import { BackendApplicationContribution } from '@theia/core/lib/node/backend-application';
Expand Down Expand Up @@ -41,6 +41,6 @@ export function bindCommonHostedBackend(bind: interfaces.Bind): void {

export function bindHostedBackend(bind: interfaces.Bind): void {
bind(HostedPluginManager).to(NodeHostedPluginRunner).inSingletonScope();
bindContributionProvider(bind, HostedPluginUriPostProcessor);
bindContributionProvider(bind, Symbol.for(HostedPluginUriPostProcessorSymbolName));
bindCommonHostedBackend(bind);
}

0 comments on commit 0866f89

Please sign in to comment.