我一直致力于将Open Social集成到服务中,并修改Apache Shindig以适应。我想使用一些非开放社交功能,并且到目前为止我已经弄清楚如何添加基本的 js 功能和服务器端数据方法。但是,我想添加到数据流水线标准中,并且很难找到文档。有谁知道如何更改 Apache Shindig 的开放社交模板部分?文档是,呃,稀疏的。
问问题
592 次
1 回答
1
我没有太多与 Shindig 合作的经验,但我会尽力提供帮助。
Apache Shindig 使用Google Guice作为依赖注入框架,这使得覆盖 shindig 服务实现变得简单。使用 google guice,您可以构建自己的模块并将它们注入 shindig。
可能,您需要扩展org.apache.shindig.gadgets.render.ProxyRenderer
、实现org.netmera.portal.shindig.RequestPipeline
等等org.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);
}
}
但是,您应该深入研究Shindig和 Guice,以使事情完全符合您的要求。网上有很多例子解释了如何使用 Guice 扩展和配置 Shindig。
于 2010-09-07T23:02:03.573 回答