//# 0 errors, 219 messages
//#
/*
    //#SyncWebsitesTask.java:1:1: class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
 * Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  The ASF licenses this file to You
 * under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.  For additional information regarding
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */

package org.apache.roller.weblogger.planet.tasks;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
import org.apache.roller.planet.business.GuicePlanetProvider;
import org.apache.roller.planet.business.PlanetFactory;
import org.apache.roller.planet.business.PlanetManager;
import org.apache.roller.planet.business.PlanetProvider;
import org.apache.roller.planet.business.startup.PlanetStartup;
import org.apache.roller.planet.pojos.Planet;
import org.apache.roller.planet.pojos.PlanetGroup;
import org.apache.roller.planet.pojos.Subscription;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.UserManager;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.business.runnable.RollerTaskWithLeasing;
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.pojos.Weblog;


/**
 * This tasks is responsible for ensuring that the planet group 'all' contains
 * a subscription for every weblogs in the Roller system. It also takes care 
 * of deleting subsctiptions for weblogs that no longer exist.
 */
public class SyncWebsitesTask extends RollerTaskWithLeasing {
    //#SyncWebsitesTask.java:51: method: void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()
    //#SyncWebsitesTask.java:51: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.runnable.RollerTaskWithLeasing()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.runnable.RollerTaskWithLeasing()
    //#input(void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()): this
    //#output(void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()): this.clientId
    //#output(void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()): this.interval
    //#output(void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()): this.leaseTime
    //#output(void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()): this.startTimeDesc
    //#post(void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()): this.clientId == &"unspecifiedClientId"
    //#post(void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()): this.interval == 1_440
    //#post(void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()): this.leaseTime == 30
    //#post(void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()): this.startTimeDesc == &"startOfDay"
    
    private static Log log = LogFactory.getLog(SyncWebsitesTask.class);
    //#SyncWebsitesTask.java:53: method: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init
    //#SyncWebsitesTask.java:53: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Descendant_Table[org/apache/roller/weblogger/planet/tasks/SyncWebsitesTask]
    //#output(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getClientId()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getInterval()I
    //#output(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getLeaseTime()I
    //#output(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getName()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getStartTime(Ljava/util/Date;)Ljava/util/Date;
    //#output(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getStartTimeDesc()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.init()V
    //#output(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.runTask()V
    //#output(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): log
    //#post(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Descendant_Table[org/apache/roller/weblogger/planet/tasks/SyncWebsitesTask] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getClientId()Ljava/lang/String; == &getClientId
    //#post(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getInterval()I == &getInterval
    //#post(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getLeaseTime()I == &getLeaseTime
    //#post(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getName()Ljava/lang/String; == &getName
    //#post(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getStartTime(Ljava/util/Date;)Ljava/util/Date; == &getStartTime
    //#post(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.getStartTimeDesc()Ljava/lang/String; == &getStartTimeDesc
    //#post(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.init()V == &init
    //#post(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): __Dispatch_Table.runTask()V == &runTask
    //#post(org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init): init'ed(log)
    //#SyncWebsitesTask.java:53: end of method: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask__static_init
    
    // a unique id for this specific task instance
    // this is meant to be unique for each client in a clustered environment
    private String clientId = "unspecifiedClientId";
    
    // a String description of when to start this task
    private String startTimeDesc = "startOfDay";
    
    // interval at which the task is run, default is 1 day
    private int interval = 1440;
    
    // lease time given to ping task lock, default is 30 minutes
    private int leaseTime = 30;
    //#SyncWebsitesTask.java:66: end of method: void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask()
    
    
    public String getName() {
        return "SyncWebsitesTask";
    //#SyncWebsitesTask.java:70: method: String org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getName()
    //#output(String getName()): return_value
    //#post(String getName()): return_value == &"SyncWebsitesTask"
    //#SyncWebsitesTask.java:70: end of method: String org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getName()
    }
    
    public String getClientId() {
        return clientId;
    //#SyncWebsitesTask.java:74: method: String org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getClientId()
    //#input(String getClientId()): this
    //#input(String getClientId()): this.clientId
    //#output(String getClientId()): return_value
    //#pre[2] (String getClientId()): init'ed(this.clientId)
    //#post(String getClientId()): return_value == this.clientId
    //#post(String getClientId()): init'ed(return_value)
    //#SyncWebsitesTask.java:74: end of method: String org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getClientId()
    }
    
    public Date getStartTime(Date currentTime) {
        return getAdjustedTime(currentTime, startTimeDesc);
    //#SyncWebsitesTask.java:78: method: Date org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getStartTime(Date)
    //#SyncWebsitesTask.java:78: Warning: method not available
    //#    -- call on Date org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask:getAdjustedTime(Date, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: Date getStartTime(Date)
    //#    unanalyzed callee: Date org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask:getAdjustedTime(Date, String)
    //#input(Date getStartTime(Date)): currentTime
    //#input(Date getStartTime(Date)): this
    //#input(Date getStartTime(Date)): this.startTimeDesc
    //#output(Date getStartTime(Date)): return_value
    //#pre[3] (Date getStartTime(Date)): init'ed(this.startTimeDesc)
    //#post(Date getStartTime(Date)): init'ed(return_value)
    //#SyncWebsitesTask.java:78: end of method: Date org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getStartTime(Date)
    }
    
    public String getStartTimeDesc() {
        return startTimeDesc;
    //#SyncWebsitesTask.java:82: method: String org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getStartTimeDesc()
    //#input(String getStartTimeDesc()): this
    //#input(String getStartTimeDesc()): this.startTimeDesc
    //#output(String getStartTimeDesc()): return_value
    //#pre[2] (String getStartTimeDesc()): init'ed(this.startTimeDesc)
    //#post(String getStartTimeDesc()): return_value == this.startTimeDesc
    //#post(String getStartTimeDesc()): init'ed(return_value)
    //#SyncWebsitesTask.java:82: end of method: String org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getStartTimeDesc()
    }
    
    public int getInterval() {
        return this.interval;
    //#SyncWebsitesTask.java:86: method: int org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getInterval()
    //#input(int getInterval()): this
    //#input(int getInterval()): this.interval
    //#output(int getInterval()): return_value
    //#pre[2] (int getInterval()): init'ed(this.interval)
    //#post(int getInterval()): return_value == this.interval
    //#post(int getInterval()): init'ed(return_value)
    //#SyncWebsitesTask.java:86: end of method: int org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getInterval()
    }
    
    public int getLeaseTime() {
        return this.leaseTime;
    //#SyncWebsitesTask.java:90: method: int org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getLeaseTime()
    //#input(int getLeaseTime()): this
    //#input(int getLeaseTime()): this.leaseTime
    //#output(int getLeaseTime()): return_value
    //#pre[2] (int getLeaseTime()): init'ed(this.leaseTime)
    //#post(int getLeaseTime()): return_value == this.leaseTime
    //#post(int getLeaseTime()): init'ed(return_value)
    //#SyncWebsitesTask.java:90: end of method: int org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.getLeaseTime()
    }
    
    
    public void init() throws WebloggerException {
        
        // get relevant props
        Properties props = this.getTaskProperties();
    //#SyncWebsitesTask.java:97: method: void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.init()
    //#SyncWebsitesTask.java:97: Warning: method not available
    //#    -- call on Properties org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask:getTaskProperties()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void init()
    //#    unanalyzed callee: Properties org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask:getTaskProperties()
    //#input(void init()): "Invalid interval: "._tainted
    //#input(void init()): "Invalid leaseTime: "._tainted
    //#input(void init()): log
    //#input(void init()): this
    //#output(void init()): this.clientId
    //#output(void init()): this.interval
    //#output(void init()): this.leaseTime
    //#output(void init()): this.startTimeDesc
    //#pre[1] (void init()): (soft) log != null
    //#presumption(void init()): org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask:getTaskProperties(...)@97 != null
    //#post(void init()): possibly_updated(this.clientId)
    //#post(void init()): possibly_updated(this.interval)
    //#post(void init()): possibly_updated(this.leaseTime)
    //#post(void init()): possibly_updated(this.startTimeDesc)
    //#test_vector(void init()): java.util.Properties:getProperty(...)@100: Addr_Set{null}, Inverse{null}
    //#test_vector(void init()): java.util.Properties:getProperty(...)@106: Addr_Set{null}, Inverse{null}
    //#test_vector(void init()): java.util.Properties:getProperty(...)@112: Addr_Set{null}, Inverse{null}
    //#test_vector(void init()): java.util.Properties:getProperty(...)@122: Addr_Set{null}, Inverse{null}
        
        // extract clientId
        String client = props.getProperty("clientId");
        if(client != null) {
            this.clientId = client;
        }
        
        // extract start time
        String startTimeStr = props.getProperty("startTime");
        if(startTimeStr != null) {
            this.startTimeDesc = startTimeStr;
        }
        
        // extract interval
        String intervalStr = props.getProperty("interval");
        if(intervalStr != null) {
            try {
                this.interval = Integer.parseInt(intervalStr);
            } catch (NumberFormatException ex) {
                log.warn("Invalid interval: "+intervalStr);
    //#SyncWebsitesTask.java:117: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void init()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
            }
        }
        
        // extract lease time
        String leaseTimeStr = props.getProperty("leaseTime");
        if(leaseTimeStr != null) {
            try {
                this.leaseTime = Integer.parseInt(leaseTimeStr);
            } catch (NumberFormatException ex) {
                log.warn("Invalid leaseTime: "+leaseTimeStr);
    //#SyncWebsitesTask.java:127: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void init()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
            }
        }
    }
    //#SyncWebsitesTask.java:130: end of method: void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.init()
    
    
    /**
     * Ensure there's a subscription in the "all" group for every Roller weblog.
     */
    public void runTask() {
        
        log.info("Syncing local weblogs with planet subscriptions list");
    //#SyncWebsitesTask.java:138: method: void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.runTask()
    //#SyncWebsitesTask.java:138: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
    //#input(void runTask()): "ADDING feed: "._tainted
    //#input(void runTask()): "DELETING feed: "._tainted
    //#input(void runTask()): "UPDATING feed: "._tainted
    //#input(void runTask()): "processing weblog - "._tainted
    //#input(void runTask()): "weblogger:"._tainted
    //#input(void runTask()): java.lang.Boolean.TRUE
    //#input(void runTask()): log
    //#pre[1] (void runTask()): log != null
    //#presumption(void runTask()): init'ed(java.lang.Boolean.TRUE)
    //#presumption(void runTask()): java.util.Iterator:next(...)@158 != null
    //#presumption(void runTask()): java.util.Iterator:next(...)@197 != null
    //#presumption(void runTask()): java.util.Iterator:next(...)@212 != null
    //#presumption(void runTask()): org.apache.roller.planet.business.Planet:getPlanetManager(...)@141 != null
    //#presumption(void runTask()): org.apache.roller.planet.business.PlanetFactory:getPlanet(...)@141 != null
    //#presumption(void runTask()): org.apache.roller.planet.business.PlanetFactory:getPlanet(...)@191 != null
    //#presumption(void runTask()): org.apache.roller.planet.business.PlanetFactory:getPlanet(...)@221 != null
    //#presumption(void runTask()): org.apache.roller.planet.business.PlanetFactory:getPlanet(...)@228 != null
    //#presumption(void runTask()): org.apache.roller.planet.business.PlanetFactory:getPlanet(...)@228 != null
    //#presumption(void runTask()): org.apache.roller.planet.pojos.PlanetGroup:getSubscriptions(...)@179 != null
    //#presumption(void runTask()): org.apache.roller.planet.pojos.PlanetGroup:getSubscriptions(...)@196 != null
    //#presumption(void runTask()): org.apache.roller.planet.pojos.PlanetGroup:getSubscriptions(...)@216 != null
    //#presumption(void runTask()): org.apache.roller.planet.pojos.Subscription:getFeedURL(...)@202 != null
    //#presumption(void runTask()): org.apache.roller.weblogger.business.UserManager:getWebsites(...)@157 != null
    //#presumption(void runTask()): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@174 != null
    //#presumption(void runTask()): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@142 != null
    //#presumption(void runTask()): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@142 != null
    //#presumption(void runTask()): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@174 != null
    //#presumption(void runTask()): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@227 != null
    //#presumption(void runTask()): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@227 != null
    //#test_vector(void runTask()): java.lang.String:startsWith(...)@202: {0}, {1}
    //#test_vector(void runTask()): java.util.Iterator:hasNext(...)@158: {0}, {1}
    //#test_vector(void runTask()): java.util.Iterator:hasNext(...)@197: {0}, {1}
    //#test_vector(void runTask()): java.util.Iterator:hasNext(...)@212: {0}, {1}
    //#test_vector(void runTask()): java.util.List:contains(...)@202: {1}, {0}
    //#test_vector(void runTask()): org.apache.roller.planet.business.PlanetManager:getGroup(...)@146: Inverse{null}, Addr_Set{null}
    //#test_vector(void runTask()): org.apache.roller.planet.business.PlanetManager:getSubscription(...)@167: Inverse{null}, Addr_Set{null}
        
        try {
            PlanetManager pmgr = PlanetFactory.getPlanet().getPlanetManager();
    //#SyncWebsitesTask.java:141: Warning: method not available
    //#    -- call on Planet org.apache.roller.planet.business.PlanetFactory:getPlanet()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Planet org.apache.roller.planet.business.PlanetFactory:getPlanet()
    //#SyncWebsitesTask.java:141: Warning: method not available
    //#    -- call on PlanetManager org.apache.roller.planet.business.Planet:getPlanetManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: PlanetManager org.apache.roller.planet.business.Planet:getPlanetManager()
            UserManager userManager = WebloggerFactory.getWeblogger().getUserManager();
    //#SyncWebsitesTask.java:142: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#SyncWebsitesTask.java:142: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
            
            // first, make sure there is an "all" pmgr group
            Planet planetObject = pmgr.getPlanetById("zzz_default_planet_zzz");
    //#SyncWebsitesTask.java:145: Warning: method not available
    //#    -- call on Planet org.apache.roller.planet.business.PlanetManager:getPlanetById(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Planet org.apache.roller.planet.business.PlanetManager:getPlanetById(String)
            PlanetGroup group = pmgr.getGroup(planetObject, "all");
    //#SyncWebsitesTask.java:146: Warning: method not available
    //#    -- call on PlanetGroup org.apache.roller.planet.business.PlanetManager:getGroup(Planet, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: PlanetGroup org.apache.roller.planet.business.PlanetManager:getGroup(Planet, String)
            if(group == null) {
                group = new PlanetGroup();
    //#SyncWebsitesTask.java:148: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.PlanetGroup()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.PlanetGroup()
                group.setPlanet(planetObject);
    //#SyncWebsitesTask.java:149: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.PlanetGroup:setPlanet(Planet)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.PlanetGroup:setPlanet(Planet)
                group.setHandle("all");
    //#SyncWebsitesTask.java:150: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.PlanetGroup:setHandle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.PlanetGroup:setHandle(String)
                group.setTitle("all");
    //#SyncWebsitesTask.java:151: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.PlanetGroup:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.PlanetGroup:setTitle(String)
                pmgr.saveGroup(group);
    //#SyncWebsitesTask.java:152: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.PlanetManager:saveGroup(PlanetGroup)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.business.PlanetManager:saveGroup(PlanetGroup)
            }
            
            // walk through all enable weblogs and add/update subs as needed
            List liveUserFeeds = new ArrayList();
            List<Weblog> websites = userManager.getWebsites(null, Boolean.TRUE, Boolean.TRUE, null, null, 0, -1);
    //#SyncWebsitesTask.java:157: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.business.UserManager:getWebsites(User, Boolean, Boolean, Date, Date, int, int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: List org.apache.roller.weblogger.business.UserManager:getWebsites(User, Boolean, Boolean, Date, Date, int, int)
            for ( Weblog weblog : websites ) {
                
                log.debug("processing weblog - "+weblog.getHandle());
    //#SyncWebsitesTask.java:160: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#SyncWebsitesTask.java:160: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                String feedUrl = "weblogger:"+weblog.getHandle();
    //#SyncWebsitesTask.java:161: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
                
                // add feed url to the "live" list
                liveUserFeeds.add(feedUrl);
                
                // if sub already exists then update it, otherwise add it
                Subscription sub = pmgr.getSubscription(feedUrl);
    //#SyncWebsitesTask.java:167: Warning: method not available
    //#    -- call on Subscription org.apache.roller.planet.business.PlanetManager:getSubscription(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Subscription org.apache.roller.planet.business.PlanetManager:getSubscription(String)
                if (sub == null) {
                    log.debug("ADDING feed: "+feedUrl);
    //#SyncWebsitesTask.java:169: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    
                    sub = new Subscription();
    //#SyncWebsitesTask.java:171: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.Subscription()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.Subscription()
                    sub.setTitle(weblog.getName());
    //#SyncWebsitesTask.java:172: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#SyncWebsitesTask.java:172: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.Subscription:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.Subscription:setTitle(String)
                    sub.setFeedURL(feedUrl);
    //#SyncWebsitesTask.java:173: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.Subscription:setFeedURL(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.Subscription:setFeedURL(String)
                    sub.setSiteURL(WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogURL(weblog, null, true));
    //#SyncWebsitesTask.java:174: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#SyncWebsitesTask.java:174: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#SyncWebsitesTask.java:174: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogURL(Weblog, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogURL(Weblog, String, bool)
    //#SyncWebsitesTask.java:174: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.Subscription:setSiteURL(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.Subscription:setSiteURL(String)
                    sub.setAuthor(weblog.getName());
    //#SyncWebsitesTask.java:175: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#SyncWebsitesTask.java:175: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.Subscription:setAuthor(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.Subscription:setAuthor(String)
                    sub.setLastUpdated(new Date(0));
    //#SyncWebsitesTask.java:176: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.Subscription:setLastUpdated(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.Subscription:setLastUpdated(Date)
                    
                    pmgr.saveSubscription(sub);
    //#SyncWebsitesTask.java:178: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.PlanetManager:saveSubscription(Subscription)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.business.PlanetManager:saveSubscription(Subscription)
                    group.getSubscriptions().add(sub);
    //#SyncWebsitesTask.java:179: Warning: method not available
    //#    -- call on Set org.apache.roller.planet.pojos.PlanetGroup:getSubscriptions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Set org.apache.roller.planet.pojos.PlanetGroup:getSubscriptions()
                    pmgr.saveGroup(group);
    //#SyncWebsitesTask.java:180: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.PlanetManager:saveGroup(PlanetGroup)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.business.PlanetManager:saveGroup(PlanetGroup)
                } else {
                    log.debug("UPDATING feed: "+feedUrl);
    //#SyncWebsitesTask.java:182: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    
                    sub.setTitle(weblog.getName());
    //#SyncWebsitesTask.java:184: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#SyncWebsitesTask.java:184: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.Subscription:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.Subscription:setTitle(String)
                    sub.setAuthor(weblog.getName());
    //#SyncWebsitesTask.java:185: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#SyncWebsitesTask.java:185: Warning: method not available
    //#    -- call on void org.apache.roller.planet.pojos.Subscription:setAuthor(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.pojos.Subscription:setAuthor(String)
                    
                    pmgr.saveSubscription(sub);
    //#SyncWebsitesTask.java:187: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.PlanetManager:saveSubscription(Subscription)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.business.PlanetManager:saveSubscription(Subscription)
                }
                
                // save as we go
                PlanetFactory.getPlanet().flush();
    //#SyncWebsitesTask.java:191: Warning: method not available
    //#    -- call on Planet org.apache.roller.planet.business.PlanetFactory:getPlanet()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Planet org.apache.roller.planet.business.PlanetFactory:getPlanet()
    //#SyncWebsitesTask.java:191: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.Planet:flush()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.business.Planet:flush()
            }
            
            // new subs added, existing subs updated, now delete old subs
            Set<Subscription> deleteSubs = new HashSet();
            Set<Subscription> subs = group.getSubscriptions();
    //#SyncWebsitesTask.java:196: Warning: method not available
    //#    -- call on Set org.apache.roller.planet.pojos.PlanetGroup:getSubscriptions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Set org.apache.roller.planet.pojos.PlanetGroup:getSubscriptions()
            for( Subscription sub : subs ) {
                
                // only delete subs from the group if ...
                // 1. they are local
                // 2. they are no longer listed as a weblog 
                if (sub.getFeedURL().startsWith("weblogger:") && 
    //#SyncWebsitesTask.java:202: Warning: method not available
    //#    -- call on String org.apache.roller.planet.pojos.Subscription:getFeedURL()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: String org.apache.roller.planet.pojos.Subscription:getFeedURL()
                        !liveUserFeeds.contains(sub.getFeedURL())) {
                    deleteSubs.add(sub);
                }
            }
            
            // now go back through deleteSubs and do actual delete
            // this is required because deleting a sub in the loop above
            // causes a ConcurrentModificationException because we can't
            // modify a collection while we iterate over it
            for( Subscription deleteSub : deleteSubs ) {
                
                log.debug("DELETING feed: "+deleteSub.getFeedURL());
    //#SyncWebsitesTask.java:214: Warning: method not available
    //#    -- call on String org.apache.roller.planet.pojos.Subscription:getFeedURL()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: String org.apache.roller.planet.pojos.Subscription:getFeedURL()
    //#SyncWebsitesTask.java:214: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                pmgr.deleteSubscription(deleteSub);
    //#SyncWebsitesTask.java:215: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.PlanetManager:deleteSubscription(Subscription)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.business.PlanetManager:deleteSubscription(Subscription)
                group.getSubscriptions().remove(deleteSub);
    //#SyncWebsitesTask.java:216: Warning: method not available
    //#    -- call on Set org.apache.roller.planet.pojos.PlanetGroup:getSubscriptions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Set org.apache.roller.planet.pojos.PlanetGroup:getSubscriptions()
            }
            
            // all done, lets save
            pmgr.saveGroup(group);
    //#SyncWebsitesTask.java:220: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.PlanetManager:saveGroup(PlanetGroup)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.business.PlanetManager:saveGroup(PlanetGroup)
            PlanetFactory.getPlanet().flush();
    //#SyncWebsitesTask.java:221: Warning: method not available
    //#    -- call on Planet org.apache.roller.planet.business.PlanetFactory:getPlanet()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Planet org.apache.roller.planet.business.PlanetFactory:getPlanet()
    //#SyncWebsitesTask.java:221: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.Planet:flush()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.business.Planet:flush()
            
        } catch (RollerException e) {
            log.error("ERROR refreshing entries", e);
    //#SyncWebsitesTask.java:224: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
        } finally {
            // don't forget to release
            WebloggerFactory.getWeblogger().release();
    //#SyncWebsitesTask.java:227: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#SyncWebsitesTask.java:227: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.Weblogger:release()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.Weblogger:release()
            PlanetFactory.getPlanet().release();
    //#SyncWebsitesTask.java:228: Warning: method not available
    //#    -- call on Planet org.apache.roller.planet.business.PlanetFactory:getPlanet()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: Planet org.apache.roller.planet.business.PlanetFactory:getPlanet()
    //#SyncWebsitesTask.java:228: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.Planet:release()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void runTask()
    //#    unanalyzed callee: void org.apache.roller.planet.business.Planet:release()
        }
    }
    //#SyncWebsitesTask.java:230: end of method: void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.runTask()
    
    
    /** 
     * Task may be run from the command line 
     */
    public static void main(String[] args) throws Exception {
        
        // before we can do anything we need to bootstrap the planet backend
        PlanetStartup.prepare();
    //#SyncWebsitesTask.java:239: method: void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.main(String[])
    //#SyncWebsitesTask.java:239: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.startup.PlanetStartup:prepare()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void main(String[])
    //#    unanalyzed callee: void org.apache.roller.planet.business.startup.PlanetStartup:prepare()
    //#input(void main(String[])): "Invalid interval: "._tainted
    //#input(void main(String[])): "Invalid leaseTime: "._tainted
    //#input(void main(String[])): __Descendant_Table[org/apache/roller/weblogger/planet/tasks/SyncWebsitesTask]
    //#input(void main(String[])): __Dispatch_Table.init()V
    //#input(void main(String[])): log
    //#pre[1] (void main(String[])): (soft) log != null
    //#unanalyzed(void main(String[])): Effects-of-calling:org.apache.roller.weblogger.business.runnable.RollerTaskWithLeasing
    //#unanalyzed(void main(String[])): Effects-of-calling:org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask:getTaskProperties
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void main(String[])): Effects-of-calling:org.apache.commons.logging.Log:warn
        
        // we need to use our own planet provider for integration
        String guiceModule = WebloggerConfig.getProperty("planet.aggregator.guice.module");
    //#SyncWebsitesTask.java:242: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerConfig:getProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void main(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerConfig:getProperty(String)
        PlanetProvider provider = new GuicePlanetProvider(guiceModule);
    //#SyncWebsitesTask.java:243: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.GuicePlanetProvider(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void main(String[])
    //#    unanalyzed callee: void org.apache.roller.planet.business.GuicePlanetProvider(String)
        PlanetFactory.bootstrap(provider);
    //#SyncWebsitesTask.java:244: Warning: method not available
    //#    -- call on void org.apache.roller.planet.business.PlanetFactory:bootstrap(PlanetProvider)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void main(String[])
    //#    unanalyzed callee: void org.apache.roller.planet.business.PlanetFactory:bootstrap(PlanetProvider)
        
        SyncWebsitesTask task = new SyncWebsitesTask();
        task.init();
        task.run();
    //#SyncWebsitesTask.java:248: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask:run()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
    //#    method: void main(String[])
    //#    unanalyzed callee: void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask:run()
    }
    //#SyncWebsitesTask.java:249: end of method: void org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask.main(String[])
    
}
    //#SyncWebsitesTask.java:: end of class: org.apache.roller.weblogger.planet.tasks.SyncWebsitesTask
