2010-08-24 3 views
1

Я работал над интеграцией Open Social в службу и изменял Apache Shindig для размещения. Есть некоторые не-открытые социальные функции, которые я хотел бы использовать, и я до сих пор понял, как добавить базовые функции js и методы данных на стороне сервера. Однако я хотел бы добавить к стандарту Data Pipelining, и мне сложно найти документацию. Кто-нибудь знает, как внести изменения в часть открытых социальных шаблонов Apache Shindig? Документация разрешена.Изменить Apache Shindig, чтобы принять новые трубопроводы данных

+0

Можете ли вы привести пример тех изменений, которые вы хотели бы сделать в шаблоне? Документы не выглядят слишком скудными. –

+0

@ Vincent. У меня есть пользовательский интерфейс SPI, и я хотел бы знать, как я могу добавить новые теги для его принятия в функции конвейерной обработки данных. Например, если мой пользовательский spi имеет метод getInfo, как я могу подключить его к DataPipeline и включить гаджеты для доступа к данным с этим API? –

ответ

1

У меня не слишком много опыта работы с Shindig, hoverwer, я постараюсь помочь.

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); 
    } 
} 

Hovewer, вы должны копать в Shindig и Guice, чтобы сделать вещи, как именно вы хотите. В Интернете есть довольно много примеров, объясняющих расширение и настройку Shindig с помощью Guice.

+0

Спасибо за помощь. –

 Смежные вопросы

  • Нет связанных вопросов^_^