// Path: src/main/java/com/senacor/wicket/async/christmas/widgets/api/message/IMessageSource.java
// public interface IMessageSource<T> {
// 
//   T getMessage();
// 
//   T getMessageSync();
// 
//   Boolean isLoading();
// 
//   Boolean hasNext();
// 
//   void loadNext();
// }
// 
// Path: src/main/java/com/senacor/wicket/async/christmas/widgets/api/model/AbstractBlockingModel.java
// public abstract class AbstractBlockingModel<T> extends AbstractReadOnlyModel<T> implements IAsyncModel<T> {
// 
//   @Override
//   public T getObject() {
//     return getMessageSource().getMessageSync();
//   }
// 
//   @Override
//   public Boolean isLoading() {
//     return getMessageSource().isLoading();
//   }
// 
//   @Override
//   public void startLoading() {
//     getMessageSource().loadNext();
//   }
// 
//   @Override
//   public Boolean hasNext() {
//     return getMessageSource().hasNext();
//   }
// 
//   protected abstract IMessageSource<T> getMessageSource();
// }
// 
// Path: src/main/java/com/senacor/wicket/async/christmas/widgets/dilbert/message/DilbertMessageSource.java
// @Service
// @Scope(value = "prototype")
// public class DilbertMessageSource extends MessageSource<SyndFeed> {
// 
//   @Autowired
//   @Qualifier("dilbertMessageLoader")
//   private IMessageLoader<SyndFeed> messageLoader;
// 
//   @Override
//   public IMessageLoader<SyndFeed> getMessageLoader() {
//     return messageLoader;
//   }
// }


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import com.senacor.wicket.async.christmas.widgets.api.message.IMessageSource;
import com.senacor.wicket.async.christmas.widgets.api.model.AbstractBlockingModel;
import com.senacor.wicket.async.christmas.widgets.dilbert.message.DilbertMessageSource;
import com.sun.syndication.feed.synd.SyndFeed;
package com.senacor.wicket.async.christmas.widgets.dilbert;



@Configurable
public class DilbertBlockingModel extends AbstractBlockingModel<SyndFeed> {

// Path: src/main/java/com/senacor/wicket/async/christmas/widgets/api/message/IMessageSource.java
// public interface IMessageSource<T> {
// 
//   T getMessage();
// 
//   T getMessageSync();
// 
//   Boolean isLoading();
// 
//   Boolean hasNext();
// 
//   void loadNext();
// }
// 
// Path: src/main/java/com/senacor/wicket/async/christmas/widgets/api/model/AbstractBlockingModel.java
// public abstract class AbstractBlockingModel<T> extends AbstractReadOnlyModel<T> implements IAsyncModel<T> {
// 
//   @Override
//   public T getObject() {
//     return getMessageSource().getMessageSync();
//   }
// 
//   @Override
//   public Boolean isLoading() {
//     return getMessageSource().isLoading();
//   }
// 
//   @Override
//   public void startLoading() {
//     getMessageSource().loadNext();
//   }
// 
//   @Override
//   public Boolean hasNext() {
//     return getMessageSource().hasNext();
//   }
// 
//   protected abstract IMessageSource<T> getMessageSource();
// }
// 
// Path: src/main/java/com/senacor/wicket/async/christmas/widgets/dilbert/message/DilbertMessageSource.java
// @Service
// @Scope(value = "prototype")
// public class DilbertMessageSource extends MessageSource<SyndFeed> {
// 
//   @Autowired
//   @Qualifier("dilbertMessageLoader")
//   private IMessageLoader<SyndFeed> messageLoader;
// 
//   @Override
//   public IMessageLoader<SyndFeed> getMessageLoader() {
//     return messageLoader;
//   }
// }


// Path: src/main/java/com/senacor/wicket/async/christmas/widgets/dilbert/DilbertBlockingModel.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import com.senacor.wicket.async.christmas.widgets.api.message.IMessageSource;
import com.senacor.wicket.async.christmas.widgets.api.model.AbstractBlockingModel;
import com.senacor.wicket.async.christmas.widgets.dilbert.message.DilbertMessageSource;
import com.sun.syndication.feed.synd.SyndFeed;

package com.senacor.wicket.async.christmas.widgets.dilbert;



@Configurable
public class DilbertBlockingModel extends AbstractBlockingModel<SyndFeed> {

  @Autowired