/******************************************************************************* * Copyright (c) 2000, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.update.core.model; import java.net.MalformedURLException; import java.net.URL; import org.eclipse.update.core.IURLEntry; import org.eclipse.update.internal.core.UpdateCore; /** * Annotated URL model object. * <p> * This class may be instantiated or subclassed by clients. However, in most * cases clients should instead instantiate or subclass the provided * concrete implementation of this model. * </p> * <p> * <b>Note:</b> This class/interface is part of an interim API that is still under development and expected to * change significantly before reaching stability. It is being made available at this early stage to solicit feedback * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken * (repeatedly) as the API evolves. * </p> * @see org.eclipse.update.core.URLEntry * @since 2.0 * @deprecated The org.eclipse.update component has been replaced by Equinox p2. * This API will be deleted in a future release. See bug 311590 for details. */ public class URLEntryModel extends ModelObject { private String annotation; private String localizedAnnotation; private String urlString; private URL url; private int type = IURLEntry.UPDATE_SITE; //performance private URL bundleURL; private URL base; private boolean resolved=false; /** * Creates a uninitialized annotated URL model object. * * @since 2.0 */ public URLEntryModel() { super(); } /** * Returns the url annotation. If the model object has been resolved, * the annotation is localized. * * @return url annotation, or <code>null</code>. * @since 2.0 */ public String getAnnotation() { delayedResolve(); if (localizedAnnotation != null) return localizedAnnotation; else return annotation; } /** * returns the non-localized url annotation. * * @return non-localized url annotation, or <code>null</code>. * @since 2.0 */ public String getAnnotationNonLocalized() { return annotation; } /** * Returns the unresolved url string. * * @return url string, or <code>null</code> * @since 2.0 */ public String getURLString() { delayedResolve(); return urlString; } /** * Returns the resolved URL. * * @return url, or <code>null</code> * @since 2.0 */ public URL getURL() { delayedResolve(); return url; } /** * Sets the annotation. * Throws a runtime exception if this object is marked read-only. * * @param annotation annotation * @since 2.0 */ public void setAnnotation(String annotation) { assertIsWriteable(); this.annotation = annotation; this.localizedAnnotation = null; } /** * Sets the url string * Throws a runtime exception if this object is marked read-only. * * @param urlString url string * @since 2.0 */ public void setURLString(String urlString) { assertIsWriteable(); this.urlString = urlString; this.url = null; } /** * Resolve the model object. * Any URL strings in the model are resolved relative to the * base URL argument. Any translatable strings in the model that are * specified as translation keys are localized using the supplied * resource bundle. * * @param base URL * @param bundleURL resource bundle url * @exception MalformedURLException * @since 2.0 */ public void resolve(URL base, URL bundleURL) throws MalformedURLException { this.base = base; this.bundleURL = bundleURL; } private void delayedResolve() { //PERF: delay resolution if (resolved)return; resolved= true; // resolve local elements localizedAnnotation = resolveNLString(bundleURL, annotation); try { url = resolveURL(base,bundleURL, urlString); } catch (MalformedURLException e){ UpdateCore.warn("",e); //$NON-NLS-1$ } } /** * Returns the specified type. * * @since 2.1 */ public int getType() { return type; } /** * Method setType. * @param i */ public void setType(int i) { type = i; } }