我一直在努力将Open Social集成到服务中,并修改Apache Shindig以适应。我想使用一些非开放性的功能,到目前为止,我已经弄清楚了如何添加基本的js功能和服务器端数据方法。但是,我想添加到Data Pipelining标准中,并且很难找到文档。有谁知道如何更改Apache Shindig的Open Social Templates部分?该文档是稀疏的。

最佳答案

我没有与Shindig合作的丰富经验,但我会尽力提供帮助。

Apache Shindig使用Google Guice作为依赖项注入框架,这使得覆盖shindig服务实现很简单。使用google guice,您可以构建自己的模块并将其注入shindig。

可能您需要扩展org.apache.shindig.gadgets.render.ProxyRenderer,实现org.netmera.portal.shindig.RequestPipelineorg.apache.shindig.gadgets.templates.TemplateModule等等。

我认为,要挂钩您的服务,需要一个像这样的模块。
在这里,MyHandler.class是我自己的处理程序:

/**
 * Provides social api component injection.
 */
public class MySocialApiModule extends SocialApiGuiceModule {

    /*
     * (non-Javadoc)
     *
     * @see
     * org.apache.shindig.social.core.config.SocialApiGuiceModule#configure()
     */
    @Override
    protected void configure(){
        this.bind(ParameterFetcher.class).annotatedWith(Names.named("DataServiceServlet")).to(DataServiceServletFetcher.class);
        this.bind(Boolean.class).annotatedWith(Names.named(AnonymousAuthenticationHandler.ALLOW_UNAUTHENTICATED)).toInstance(Boolean.TRUE);
        this.bind(XStreamConfiguration.class).to(XStream081Configuration.class);
        this.bind(BeanConverter.class).annotatedWith(Names.named("shindig.bean.converter.xml")).to(BeanXStreamConverter.class);
        this.bind(BeanConverter.class).annotatedWith(Names.named("shindig.bean.converter.json")).to(BeanJsonConverter.class);
        this.bind(BeanConverter.class).annotatedWith(Names.named("shindig.bean.converter.atom")).to(BeanXStreamAtomConverter.class);
        this.bind(new TypeLiteral<List<AuthenticationHandler>>(){}).toProvider(AuthenticationHandlerProvider.class);
        final Multibinder<Object> handlerBinder = Multibinder.newSetBinder(this.binder(), Object.class, Names.named("org.apache.shindig.handlers"));
        for (final Class handler : this.getHandlers()) {
            handlerBinder.addBinding().toInstance(handler);
        }
        this.bind(OAuthDataStore.class).to(MyOAuthDataStore.class);
    }

    /**
     * Hook to provide a Set of request handlers. Subclasses may override to add
     * or replace additional handlers.
     */
    @Override
    protected Set<Class<?>> getHandlers(){
        return ImmutableSet.<Class<?>> of(ActivityHandler.class, AppDataHandler.class, MyPersonHandler.class, MessageHandler.class, MyHandler.class, ACLHandler.class);
    }
}


Hovewer,您应该挖掘Shindig和Guice来制作完全符合您想要的东西。 Web上有很多示例说明了如何使用Guice扩展和配置Shindig。

关于java - 修改Apache Shindig以接受新的数据管道,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3557257/

10-11 12:08