package com.itmill.toolkit.demo.sampler;
-import com.itmill.toolkit.terminal.ExternalResource;
-
-public class APIResource extends ExternalResource {
-
- private static final String BASE_URL = "http://toolkit.itmill.com/demo/doc/api/";
-
- private String name;
+/**
+ * A NamedExternalResource pointing to the javadoc for the given class. Knows
+ * where the javadocs are located for som common APIs, but one can also specify
+ * a javadoc baseurl. The name will be set to the class simpleName.
+ *
+ */
+public class APIResource extends NamedExternalResource {
+
+ private static final String ITMILL_BASE = "http://toolkit.itmill.com/demo/doc/api/";
+ private static final String JAVA_BASE = "http://java.sun.com/javase/6/docs/api/";
+ private static final String SERVLET_BASE = "http://java.sun.com/products/servlet/2.5/docs/servlet-2_5-mr2";
+ private static final String PORTLET_BASE = "http://developers.sun.com/docs/jscreator/apis/portlet";
public APIResource(Class clazz) {
- this(BASE_URL, clazz);
+ this(resolveBaseUrl(clazz), clazz);
}
public APIResource(String baseUrl, Class clazz) {
- super(getJavadocUrl(baseUrl, clazz));
- name = clazz.getSimpleName();
+ super(clazz.getSimpleName(), getJavadocUrl(baseUrl, clazz));
}
private static String getJavadocUrl(String baseUrl, Class clazz) {
return baseUrl + path + ".html";
}
- public String getName() {
- return name;
+ /**
+ * Tries to resolve the javadoc baseurl for the given class by looking at
+ * the packagename.
+ *
+ * @param clazz
+ * @return
+ */
+ private static String resolveBaseUrl(Class clazz) {
+ String name = clazz.getName();
+ if (name.startsWith("javax.servlet.")) {
+ return SERVLET_BASE;
+ } else if (name.startsWith("javax.portlet.")) {
+ return PORTLET_BASE;
+ } else if (name.startsWith("java.") || name.startsWith("javax.")) {
+ return JAVA_BASE;
+ }
+ return ITMILL_BASE;
}
+
}
}
/**
- * Gets the description for this feature. May contain HTML.
+ * Gets the description for this feature. Should describe what the example
+ * intends to showcase. May contain HTML.
*
- * @return
+ * @return the description
*/
abstract public String getDescription();
+ /**
+ * Gets related resources, i.e links to resources related to the example.
+ * <p>
+ * Good candidates are resources used to make the example (CSS, images,
+ * custom layouts), documentation links (reference manual), articles (e.g.
+ * pattern description, usability discussion).
+ * </p>
+ * <p>
+ * Can return null, if the example has no related resources.
+ * </p>
+ * <p>
+ * The name of the NamedExternalResource will be shown in the UI. <br/> Note
+ * that Javadoc should be referenced via {@link #getRelatedAPI()}.
+ * </p>
+ *
+ * @return related external stuff
+ */
abstract public NamedExternalResource[] getRelatedResources();
+ /**
+ * Gets related API resources, i.e
+ *
+ * @return
+ */
abstract public APIResource[] getRelatedAPI();
abstract public Class[] getRelatedFeatures();
package com.itmill.toolkit.demo.sampler.features;
+import javax.portlet.PortletContext;
+import javax.servlet.ServletContext;
+
import com.itmill.toolkit.demo.sampler.APIResource;
import com.itmill.toolkit.demo.sampler.Feature;
import com.itmill.toolkit.demo.sampler.NamedExternalResource;
@Override
public APIResource[] getRelatedAPI() {
- return null;
+ return new APIResource[] { new APIResource(String.class),
+ new APIResource(PortletContext.class),
+ new APIResource(ServletContext.class) };
}
@Override