You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@depot.apache.org by aj...@apache.org on 2004/05/11 22:34:29 UTC
svn commit: rev 10595 - in incubator/depot/trunk/version/src: java/org/apache/depot/version/specification/formatting/format java/org/apache/depot/version/taglib resources/jsp
Author: ajack
Date: Tue May 11 15:34:27 2004
New Revision: 10595
Added:
incubator/depot/trunk/version/src/java/org/apache/depot/version/taglib/
incubator/depot/trunk/version/src/java/org/apache/depot/version/taglib/HtmlContent.java
incubator/depot/trunk/version/src/java/org/apache/depot/version/taglib/VersionEnvironmentTag.java
incubator/depot/trunk/version/src/java/org/apache/depot/version/taglib/VersionTag.java
incubator/depot/trunk/version/src/resources/jsp/
incubator/depot/trunk/version/src/resources/jsp/depot-version.tld
incubator/depot/trunk/version/src/resources/jsp/version.jsp
Modified:
incubator/depot/trunk/version/src/java/org/apache/depot/version/specification/formatting/format/VersionFormatImpl.java
Log:
Some simple taglibs for accessing version information.
Modified: incubator/depot/trunk/version/src/java/org/apache/depot/version/specification/formatting/format/VersionFormatImpl.java
==============================================================================
--- incubator/depot/trunk/version/src/java/org/apache/depot/version/specification/formatting/format/VersionFormatImpl.java (original)
+++ incubator/depot/trunk/version/src/java/org/apache/depot/version/specification/formatting/format/VersionFormatImpl.java Tue May 11 15:34:27 2004
@@ -160,7 +160,6 @@
out.println("Description:" + getVersionFormatDescription());
//:TODO: More?
-
}
}
/* (non-Javadoc)
Added: incubator/depot/trunk/version/src/java/org/apache/depot/version/taglib/HtmlContent.java
==============================================================================
--- (empty file)
+++ incubator/depot/trunk/version/src/java/org/apache/depot/version/taglib/HtmlContent.java Tue May 11 15:34:27 2004
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.
+ */
+
+package org.apache.depot.version.taglib;
+
+
+
+/**
+ * @author ajack
+ */
+public class HtmlContent {
+ private StringBuffer m_buffer = null;
+
+ public HtmlContent() {
+ m_buffer = new StringBuffer();
+ }
+
+ public HtmlContent(StringBuffer buffer) {
+ m_buffer = buffer;
+ }
+
+ protected void generateSeparator() {
+ m_buffer.append("<HR/>\n");
+ }
+
+ protected void generateBreak() {
+ m_buffer.append("<BR/>\n");
+ }
+
+ protected void generateTitle(String title) {
+ generateSeparator();
+ generateRawHtml("<H3>");
+ generateHtml(title);
+ generateRawHtml("</H3>");
+ }
+
+ protected void generateLine(String line) {
+ generateHtml(line);
+ generateBreak();
+ }
+
+ protected void startDefinitions() {
+
+ m_buffer.append("<DL>");
+ }
+
+ protected void stopDefinitions() {
+
+ m_buffer.append("</DL>");
+ }
+
+ protected void generateDefinition(String term, String definition) {
+
+ m_buffer.append("<DT>");
+ m_buffer.append(term);
+ m_buffer.append("</DT><DD>");
+ m_buffer.append(definition);
+ m_buffer.append("</DD>\n");
+ }
+
+ protected void generateDefinition(String single) {
+
+ m_buffer.append("<DD>");
+ m_buffer.append(single);
+ m_buffer.append("</DD>\n");
+ }
+
+ protected void generateHtml(String html) {
+ //:TODO: Escape
+ m_buffer.append(html);
+ }
+
+ protected void generateRawHtml(String raw) {
+ m_buffer.append(raw);
+ }
+
+
+ public void generateError(String errorMsg)
+ {
+ generateError(errorMsg, null);
+ }
+
+ public void generateError(String errorMsg, Throwable t)
+ {
+ generateRawHtml("<EM>");
+ generateHtml(errorMsg);
+ generateRawHtml("<EM>");
+ generateBreak();
+
+ if ( null != t) {
+ //:TODO: Stack trace
+ }
+ }
+
+ public String toString() {
+ return m_buffer.toString();
+ }
+}
Added: incubator/depot/trunk/version/src/java/org/apache/depot/version/taglib/VersionEnvironmentTag.java
==============================================================================
--- (empty file)
+++ incubator/depot/trunk/version/src/java/org/apache/depot/version/taglib/VersionEnvironmentTag.java Tue May 11 15:34:27 2004
@@ -0,0 +1,257 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.
+ */
+
+package org.apache.depot.version.taglib;
+
+import java.io.IOException;
+import java.util.Iterator;
+
+import javax.servlet.jsp.tagext.Tag;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.depot.common.log.Logger;
+import org.apache.depot.common.util.classpath.PathContext;
+import org.apache.depot.common.util.classpath.PathPart;
+import org.apache.depot.common.util.classpath.PathSet;
+import org.apache.depot.common.util.debug.DebugUtils;
+import org.apache.depot.version.VersionException;
+import org.apache.depot.version.VersionMarker;
+import org.apache.depot.version.VersionRuntime;
+import org.apache.depot.version.constraint.ConstraintSet;
+import org.apache.depot.version.constraint.IContextConstraint;
+import org.apache.depot.version.context.ConstraintRegistry;
+import org.apache.depot.version.context.ExtensionRegistry;
+import org.apache.depot.version.context.VersionEnvironment;
+import org.apache.depot.version.context.VersionInformation;
+import org.apache.depot.version.context.VersionRegistry;
+import org.apache.depot.version.discovery.loading.VersionLoadContext;
+import org.apache.depot.version.extension.VirtualMachineExtension;
+import org.apache.depot.version.extension.VirtualMachineExtensionInformation;
+import org.apache.depot.version.util.IdentifierHelper;
+
+/**
+ * @author ajack
+ */
+public class VersionEnvironmentTag extends TagSupport {
+ private static boolean l_initialized = false;
+
+ private static VersionRuntime l_runtime = null;
+ private boolean m_annotated = false;
+
+ public VersionEnvironmentTag() {
+ if (!l_initialized)
+ initialize();
+ }
+
+ private synchronized void initialize() {
+ if (l_initialized)
+ return;
+
+ l_runtime = VersionRuntime.getRuntime();
+
+ l_initialized = true;
+ }
+
+ public int doStartTag() {
+
+ if (null == l_runtime) {
+ // Bad initialization
+ return Tag.SKIP_BODY;
+ }
+
+ try {
+ HtmlContent versionEnvTag = new HtmlContent();
+
+ try {
+ VersionEnvironment env = l_runtime.getEnvironment();
+
+ generateHtml(versionEnvTag, env);
+
+ } catch (VersionException ve) {
+ Logger.getLogger().error("VersionEnvironmentTag:error", ve);
+ versionEnvTag.generateError("VersionEnvironmentTag:Failed to get environment", ve);
+ }
+
+ // Output the HTML...
+ pageContext.getOut().print(versionEnvTag.toString());
+ } catch (IOException ioe) {
+ Logger.getLogger().error("VersionEnvironmentTag error", ioe);
+ }
+
+ return Tag.SKIP_BODY;
+ }
+
+ private void generateHtml(HtmlContent htmlBuf, VersionEnvironment env) {
+
+ VersionMarker jvm = env.getJvmVersion();
+ htmlBuf.generateLine(jvm.toString());
+ VersionMarker jvmSpec = env.getJvmSpecificationVersion();
+ htmlBuf.generateLine(jvmSpec.toString());
+
+ generateHtml(htmlBuf, env.getPathContext());
+ generateHtml(htmlBuf, env.getExtensions());
+ generateHtml(htmlBuf, env.getVersions());
+ generateHtml(htmlBuf, env.getConstraints());
+ }
+
+ private void generateHtml(HtmlContent htmlBuf, PathContext pathContext) {
+ generateHtmlClassloader(htmlBuf, 0, pathContext.getClassLoader());
+ generateHtmlPathSet(htmlBuf, pathContext.getPathSet());
+ }
+
+ public void generateHtmlClassloader(HtmlContent htmlBuf, int depth,
+ ClassLoader classloader) {
+
+ String indent = DebugUtils.getIndent(depth);
+
+ HtmlContent out = new HtmlContent();
+
+ out.generateLine(indent);
+ out.generateLine(classloader.getClass().getName());
+ out.generateLine(" : ");
+ out.generateHtml(classloader.toString());
+
+ htmlBuf.generateLine("Classloader @ Depth (" + depth + ") :"
+ + out.toString());
+
+ if (null != classloader.getParent()) {
+ generateHtmlClassloader(htmlBuf, depth + 1, classloader.getParent());
+ }
+ }
+
+ private void generateHtmlPathSet(HtmlContent htmlBuf, PathSet pathSet) {
+ htmlBuf.generateHtml("PathSet: " + pathSet.getName());
+
+ for (Iterator i = pathSet.iterator(); i.hasNext();) {
+ PathPart part = (PathPart) i.next();
+
+ htmlBuf.generateLine(" - " + part);
+ }
+ }
+
+ private void generateHtml(HtmlContent htmlBuf, VersionRegistry versions) {
+
+ if (versions.hasEntries()) {
+
+ htmlBuf.generateTitle("Versions:");
+
+ htmlBuf.startDefinitions();
+
+ for (Iterator i = versions.iterator(); i.hasNext();) {
+ Object entry = (Object) i.next();
+ if (entry instanceof VersionInformation) {
+ VersionInformation info = (VersionInformation) entry;
+ VersionLoadContext context = info.getLoadContext();
+ VersionMarker versionMarker = context.getVersionMarker();
+
+ String id = versionMarker.getId();
+ String version = versionMarker.getVersion().toString();
+
+ //
+ // Perhaps allow these to show, if verbose.
+ //
+ if (IdentifierHelper.isPartOfJdk(id))
+ continue;
+
+ htmlBuf.generateDefinition(id, version);
+ } else
+ htmlBuf.generateDefinition(entry.getClass().getName(),
+ entry.toString());
+ }
+
+ htmlBuf.stopDefinitions();
+
+ } else
+ htmlBuf.generateLine("No versions found in registry");
+ }
+
+ private void generateHtml(HtmlContent htmlBuf, ExtensionRegistry extensions) {
+
+ if (extensions.hasEntries()) {
+
+ htmlBuf.generateTitle("Virtual Machine Extensions:");
+
+ htmlBuf.startDefinitions();
+
+ for (Iterator i = extensions.iterator(); i.hasNext();) {
+ Object entry = (Object) i.next();
+ if (entry instanceof VirtualMachineExtensionInformation) {
+ VirtualMachineExtensionInformation extensionInfo = (VirtualMachineExtensionInformation) entry;
+ VirtualMachineExtension extension = extensionInfo.getExtensionLoadContext().getExtension();
+
+ //
+ // Perhaps allow these to show, if verbose.
+ //
+ if (IdentifierHelper.isPartOfJdk(extension.getName()))
+ continue;
+
+ htmlBuf.generateDefinition(extension.getName() + " : " + extension.getSpecificationTitle(),
+ extension.getSpecificationVersion().toString());
+
+ if (m_annotated) {
+ htmlBuf.generateDefinition(extension.getImplementationTitle(),
+ extension.getImplementationVersion().toString());
+
+ if (null != extension.getComment())
+ htmlBuf.generateDefinition("Comment:",
+ extension.getComment());
+ }
+ } else {
+ String id = entry.getClass().getName();
+ //
+ // Perhaps allow these to show, if verbose.
+ //
+ if (IdentifierHelper.isPartOfJdk(id))
+ continue;
+
+ htmlBuf.generateLine(id + ":" + entry.toString());
+ }
+ }
+ htmlBuf.stopDefinitions();
+ } else
+ htmlBuf.generateLine("No versions found in registry");
+ }
+
+ private void generateHtml(HtmlContent htmlBuf,
+ ConstraintRegistry constraints) {
+
+ if (constraints.hasEntries()) {
+
+ htmlBuf.generateTitle("Constraints:");
+
+ for (Iterator i = constraints.iterator(); i.hasNext();) {
+ generateHtml(htmlBuf, (ConstraintSet) i.next());
+ }
+ } else
+ htmlBuf.generateLine("No constraints in registry");
+ }
+
+ private void generateHtml(HtmlContent htmlBuf, ConstraintSet set) {
+
+ if (set.hasEntries()) {
+ htmlBuf.generateLine("ConstraintSet: " + set.getName());
+
+ htmlBuf.startDefinitions();
+ for (Iterator i = set.iterator(); i.hasNext();) {
+ IContextConstraint constraint = (IContextConstraint) i.next();
+ htmlBuf.generateDefinition(constraint.toString());
+ }
+ htmlBuf.stopDefinitions();
+ } else
+ htmlBuf.generateLine("No constraints in set");
+ }
+
+}
Added: incubator/depot/trunk/version/src/java/org/apache/depot/version/taglib/VersionTag.java
==============================================================================
--- (empty file)
+++ incubator/depot/trunk/version/src/java/org/apache/depot/version/taglib/VersionTag.java Tue May 11 15:34:27 2004
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.
+ */
+
+package org.apache.depot.version.taglib;
+
+import java.io.IOException;
+
+import javax.servlet.jsp.tagext.Tag;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.depot.common.log.Logger;
+import org.apache.depot.version.VersionException;
+import org.apache.depot.version.VersionRuntime;
+import org.apache.depot.version.context.VersionInformation;
+
+/**
+ * @author ajack
+ */
+public class VersionTag extends TagSupport {
+ private static boolean l_initialized = false;
+
+ private static VersionRuntime l_runtime = null;
+
+ public VersionTag() {
+ if (!l_initialized)
+ initialize();
+ }
+
+ private synchronized void initialize() {
+ if (l_initialized)
+ return;
+
+ l_runtime = VersionRuntime.getRuntime();
+
+ l_initialized = true;
+ }
+
+ public int doStartTag() {
+
+ if (null == l_runtime) {
+ // Bad initialization
+ return Tag.SKIP_BODY;
+ }
+
+ try {
+ HtmlContent versionTag = new HtmlContent();
+
+ // The version we want...
+ Object id = getValue("id");
+
+ if (null != id)
+ try {
+ VersionInformation info = l_runtime.resolve(id.toString());
+
+ if (null != info) {
+ // Put this in a comment
+ versionTag.generateRawHtml("<!-- ");
+ versionTag.generateHtml(info.toString());
+ versionTag.generateRawHtml(" -->");
+ } else {
+ // Put this in a comment
+ versionTag.generateRawHtml("<!-- No Version found for [");
+ versionTag.generateHtml(id.toString());
+ versionTag.generateRawHtml("] -->");
+ }
+ } catch (VersionException ve) {
+ Logger.getLogger().error("VersionTag error", ve);
+ }
+ else {
+ // Put this in a comment
+ versionTag.generateRawHtml("<!-- No Version id supplied to tag -->");
+ }
+
+ // Output the HTML...
+ pageContext.getOut().print(versionTag.toString());
+ } catch (IOException ioe) {
+ Logger.getLogger().error("VersionTag error", ioe);
+ }
+
+ return Tag.SKIP_BODY;
+ }
+}
Added: incubator/depot/trunk/version/src/resources/jsp/depot-version.tld
==============================================================================
--- (empty file)
+++ incubator/depot/trunk/version/src/resources/jsp/depot-version.tld Tue May 11 15:34:27 2004
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+ <!DOCTYPE taglib
+ PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
+ "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+
+<taglib>
+ <tlibversion>1.0</tlibversion>
+ <jspversion>1.1</jspversion>
+ <shortname>VersionTagLibrary</shortname>
+
+ <info>
+ Version Tag Library
+ </info>
+
+ <tag>
+ <name>version</name>
+ <tagclass>org.apache.depot.version.taglib.VersionTag</tagclass>
+ <info>Version Tag</info>
+ <attribute>
+ <name>id</name>
+ <required>true</required>
+ </attribute>
+ </tag>
+ <tag>
+ <name>versionEnvironment</name>
+ <tagclass>org.apache.depot.version.taglib.VersionEnvironmentTag</tagclass>
+ <info>Version Environment Tag</info>
+ </tag>
+</taglib>
\ No newline at end of file
Added: incubator/depot/trunk/version/src/resources/jsp/version.jsp
==============================================================================
--- (empty file)
+++ incubator/depot/trunk/version/src/resources/jsp/version.jsp Tue May 11 15:34:27 2004
@@ -0,0 +1,33 @@
+<html>
+<%@ page session="false" %>
+
+<%@ taglib uri="depot-version.tld" prefix="depot" %>
+
+ <%
+ /*
+ * Copyright 2002,2004 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+%>
+<head>
+<title>Version Page</title>
+</head>
+<body bgcolor='#ffffff'>
+<depot:version id="org.apache.depot.version"/>
+<hr>
+<depot:versionEnvironment/>
+</body>
+</html>
+
+