twitter/src/main/java/org/apidesign/html/demo/twitter/TwitterClient.java
branchclassloader
changeset 36 7ff8ac49cd8c
parent 16 41a76f55fcc6
     1.1 --- a/twitter/src/main/java/org/apidesign/html/demo/twitter/TwitterClient.java	Wed May 15 09:46:37 2013 +0200
     1.2 +++ b/twitter/src/main/java/org/apidesign/html/demo/twitter/TwitterClient.java	Thu Jun 20 13:18:10 2013 +0200
     1.3 @@ -26,7 +26,6 @@
     1.4  import java.util.Arrays;
     1.5  import java.util.List;
     1.6  import net.java.html.json.ComputedProperty;
     1.7 -import net.java.html.json.Context;
     1.8  import net.java.html.json.Function;
     1.9  import net.java.html.json.Model;
    1.10  import net.java.html.json.OnPropertyChange;
    1.11 @@ -52,14 +51,28 @@
    1.12      })
    1.13      static class Twttrs {
    1.14      }
    1.15 +    @Model(className = "User", properties = {
    1.16 +        @Property(name = "name", type = String.class),
    1.17 +        @Property(name = "profile_image_url", type = String.class),
    1.18 +        @Property(name = "id", type = int.class)
    1.19 +    })
    1.20 +    static class Usr {
    1.21 +    }
    1.22      @Model(className = "Tweet", properties = {
    1.23 -        @Property(name = "from_user", type = String.class),
    1.24 -        @Property(name = "from_user_id", type = int.class),
    1.25 +        @Property(name = "user", type = User.class),
    1.26          @Property(name = "profile_image_url", type = String.class),
    1.27          @Property(name = "text", type = String.class),
    1.28          @Property(name = "created_at", type = String.class),
    1.29      })
    1.30      static final class Twt {
    1.31 +        @ComputedProperty static String from_user(User user) {
    1.32 +            return user != null ? user.getName() : null;
    1.33 +        }
    1.34 +        
    1.35 +        @ComputedProperty static String imageUrl(User user) {
    1.36 +            return user != null ? user.getProfile_image_url() : null;
    1.37 +        }
    1.38 +        
    1.39          @ComputedProperty static String html(String text) {
    1.40              StringBuilder sb = new StringBuilder(320);
    1.41              for (int pos = 0;;) {
    1.42 @@ -79,20 +92,20 @@
    1.43              }
    1.44          }
    1.45          
    1.46 -        @ComputedProperty static String userUrl(String from_user) {
    1.47 -            return "http://twitter.com/" + from_user;
    1.48 +        @ComputedProperty static String userUrl(User user) {
    1.49 +            return "http://twitter.com/" + user.getName();
    1.50          }
    1.51      }
    1.52      @Model(className = "TwitterQuery", properties = {
    1.53 -        @Property(array = true, name = "results", type = Twt.class)
    1.54 +        @Property(array = true, name = "statuses", type = Twt.class)
    1.55      })
    1.56      public static final class TwttrQr {
    1.57      }
    1.58      
    1.59 -    @OnReceive(url="{root}/search.json?{query}&callback={me}", jsonp="me")
    1.60 +    @OnReceive(url="{url}?{query}&callback={me}", jsonp="me")
    1.61      static void queryTweets(TwitterModel page, TwitterQuery q) {
    1.62          page.getCurrentTweets().clear();
    1.63 -        page.getCurrentTweets().addAll(q.getResults());
    1.64 +        page.getCurrentTweets().addAll(q.getStatuses());
    1.65          page.setLoading(false);
    1.66      }
    1.67      
    1.68 @@ -106,26 +119,37 @@
    1.69      @OnPropertyChange({ "activeTweeters", "activeTweetersCount" })
    1.70      static void refreshTweets(TwitterModel model) {
    1.71          StringBuilder sb = new StringBuilder();
    1.72 -        sb.append("rpp=25&q=");
    1.73 +        sb.append("users=");
    1.74          String sep = "";
    1.75          for (String p : model.getActiveTweeters()) {
    1.76              sb.append(sep);
    1.77 -            sb.append("from:");
    1.78              sb.append(p);
    1.79 -            sep = " OR ";
    1.80 +            sep = "%7C";
    1.81 +        }
    1.82 +        if (sep.isEmpty()) {
    1.83 +            return;
    1.84          }
    1.85          model.setLoading(true);
    1.86 -        model.queryTweets("http://search.twitter.com", sb.toString());
    1.87 +        model.queryTweets("http://services.netbeans.org/synergy/server/api/twitter.php", sb.toString());
    1.88      }
    1.89      
    1.90 -    private static final Context DEFAULT = Context.findDefault(TwitterClient.class);
    1.91      static {
    1.92 -        final TwitterModel model = new TwitterModel(DEFAULT);
    1.93 +        try {
    1.94 +            init();
    1.95 +        } catch (Throwable ex) {
    1.96 +            ex.printStackTrace();
    1.97 +        }
    1.98 +    }
    1.99 +    private static void init() {
   1.100 +        System.setProperty("http.proxyHost", "www-proxy.uk.oracle.com");
   1.101 +        System.setProperty("http.proxyPort", "80");
   1.102 +        
   1.103 +        final TwitterModel model = new TwitterModel();
   1.104          final List<Tweeters> svdLst = model.getSavedLists();
   1.105          svdLst.add(newTweeters("API Design", "JaroslavTulach"));
   1.106          svdLst.add(newTweeters("Celebrities", "JohnCleese", "MCHammer", "StephenFry", "algore", "StevenSanderson"));
   1.107          svdLst.add(newTweeters("Microsoft people", "BillGates", "shanselman", "ScottGu"));
   1.108 -        svdLst.add(newTweeters("NetBeans", "GeertjanW","monacotoni", "NetBeans", "petrjiricka"));
   1.109 +        svdLst.add(newTweeters("NetBeans", "GeertjanW","monacotoni", "NetBeans", "petrjiricka", "ladariha"));
   1.110          svdLst.add(newTweeters("Tech pundits", "Scobleizer", "LeoLaporte", "techcrunch", "BoingBoing", "timoreilly", "codinghorror"));
   1.111  
   1.112          model.setActiveTweetersName("NetBeans");
   1.113 @@ -161,7 +185,7 @@
   1.114          final List<Tweeters> sl = model.getSavedLists();
   1.115          sl.remove(findByName(sl, model.getActiveTweetersName()));
   1.116          if (sl.isEmpty()) {
   1.117 -            final Tweeters t = new Tweeters(DEFAULT);
   1.118 +            final Tweeters t = new Tweeters();
   1.119              t.setName("New");
   1.120              sl.add(t);
   1.121          }
   1.122 @@ -195,11 +219,11 @@
   1.123                  return l;
   1.124              }
   1.125          }
   1.126 -        return list.isEmpty() ? new Tweeters(DEFAULT) : list.get(0);
   1.127 +        return list.isEmpty() ? new Tweeters() : list.get(0);
   1.128      }
   1.129      
   1.130      private static Tweeters newTweeters(String listName, String... userNames) {
   1.131 -        Tweeters t = new Tweeters(DEFAULT);
   1.132 +        Tweeters t = new Tweeters();
   1.133          t.setName(listName);
   1.134          t.getUserNames().addAll(Arrays.asList(userNames));
   1.135          return t;