package org.eclipse.update.examples.freeform; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.net.MalformedURLException; | |
import java.net.URL; | |
import org.eclipse.core.runtime.CoreException; | |
import org.eclipse.update.core.*; | |
import org.eclipse.update.core.BaseSiteFactory; | |
import org.eclipse.update.core.ISite; | |
import org.eclipse.update.core.Site; | |
import org.eclipse.update.core.model.InvalidSiteTypeException; | |
import org.eclipse.update.core.model.URLEntryModel; | |
public class FreeFormSiteFactory extends BaseSiteFactory { | |
/* | |
* @see ISiteFactory#createSite(URL) | |
*/ | |
public ISite createSite(URL url) | |
throws CoreException, InvalidSiteTypeException { | |
// Create site | |
Site site = null; | |
InputStream is = null; | |
try { | |
is = url.openStream(); | |
site = (Site) parseSite(is); | |
URLEntryModel realSiteRef = site.getDescriptionModel(); | |
if (realSiteRef == null) | |
throw Utilities.newCoreException( | |
"Unable to obtain update site reference", | |
null); | |
String siteURLString = realSiteRef.getURLString(); | |
if (siteURLString == null) | |
throw Utilities.newCoreException( | |
"Unable to obtain update site reference", | |
null); | |
URL siteURL = new URL(siteURLString); | |
FreeFormSiteContentProvider contentProvider = | |
new FreeFormSiteContentProvider(siteURL); | |
site.setSiteContentProvider(contentProvider); | |
site.resolve(siteURL, null); // resolve any URLs relative to the site | |
} catch (MalformedURLException e){ | |
throw Utilities.newCoreException("Unable to create URL",e); | |
} catch (IOException e){ | |
throw Utilities.newCoreException("Unable to access URL",e); | |
} finally { | |
if (is != null) | |
try { | |
is.close(); | |
} catch (IOException e) { | |
} | |
} | |
return site; | |
} | |
/* | |
* @see SiteModelFactory#canParseSiteType(String) | |
*/ | |
public boolean canParseSiteType(String type) { | |
return type != null | |
&& type.equals("org.eclipse.update.examples.site.freeform"); | |
} | |
} |