servicemix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gno...@apache.org
Subject svn commit: r467942 - in /incubator/servicemix/trunk/servicemix-web-console: ./ src/main/java/org/apache/servicemix/web/ src/main/java/org/apache/servicemix/web/controller/ src/main/java/org/apache/servicemix/web/model/ src/main/java/org/apache/service...
Date Thu, 26 Oct 2006 10:00:44 GMT
Author: gnodet
Date: Thu Oct 26 03:00:43 2006
New Revision: 467942

URL: http://svn.apache.org/viewvc?view=rev&rev=467942
Log:
Add audit and view pages, allow display of endpoints' wsdls, fix actions ...

Added:
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/Auditor.java
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/controller/DotViewController.java
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/view/
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/view/DotView.java
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/audit.jsp
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/view.jsp
Modified:
    incubator/servicemix/trunk/servicemix-web-console/pom.xml
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/EndpointFactoryBean.java
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Component.java
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Endpoint.java
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Registry.java
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/ServiceAssembly.java
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/ServiceUnit.java
    incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/SharedLibrary.java
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/applicationContext.xml
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/dispatcher-servlet.xml
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/web.xml
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/component.jsp
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/decorators/main.jsp
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/endpoint.jsp
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/endpoints.jsp
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-assemblies.jsp
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-assembly.jsp
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-units.jsp
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/shared-libraries.jsp
    incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/shared-library.jsp

Modified: incubator/servicemix/trunk/servicemix-web-console/pom.xml
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/pom.xml?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/pom.xml (original)
+++ incubator/servicemix/trunk/servicemix-web-console/pom.xml Thu Oct 26 03:00:43 2006
@@ -99,6 +99,13 @@
         </configuration>
       </plugin>
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+        <configuration>
+          <warSourceDirectory>src/main/webapp/</warSourceDirectory>
+        </configuration>
+      </plugin>
+      <plugin>
         <groupId>org.mortbay.jetty</groupId>
         <artifactId>maven-jetty-plugin</artifactId>
         <configuration>

Added: incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/Auditor.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/Auditor.java?view=auto&rev=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/Auditor.java (added)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/Auditor.java Thu Oct 26 03:00:43 2006
@@ -0,0 +1,134 @@
+package org.apache.servicemix.web;
+
+import java.net.URI;
+import java.text.DateFormat;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import javax.jbi.messaging.MessageExchange;
+
+import org.apache.servicemix.JbiConstants;
+import org.apache.servicemix.jbi.audit.AuditorException;
+import org.apache.servicemix.jbi.audit.AuditorMBean;
+import org.apache.servicemix.jbi.messaging.MessageExchangeSupport;
+
+public class Auditor {
+
+    private AuditorMBean mbean;
+    private int page;
+
+    public Auditor(AuditorMBean mbean) {
+        this.mbean = mbean;
+    }
+    
+    public int getPage() {
+        return page;
+    }
+
+    public void setPage(int page) {
+        this.page = page;
+    }
+    
+    public int getCount() throws AuditorException {
+        int count = mbean.getExchangeCount();
+        System.err.println(count);
+        return count;
+    }
+
+    public List<ExchangeInfo> getExchanges() throws AuditorException {
+        MessageExchange[] exchanges = mbean.getExchanges(page * 10, Math.min((page + 1) * 10, getCount()));
+        ExchangeInfo[] infos = prepare(exchanges);
+        return Arrays.asList(infos);
+    }
+
+    private ExchangeInfo[] prepare(MessageExchange[] exchanges) {
+        ExchangeInfo[] infos = new ExchangeInfo[exchanges.length];
+        for (int i = 0; i < infos.length; i++) {
+            infos[i] = new ExchangeInfo();
+            infos[i].id = exchanges[i].getExchangeId();
+            infos[i].mep = getMep(exchanges[i]);
+            infos[i].status = exchanges[i].getStatus().toString();
+            Object c = exchanges[i].getProperty(JbiConstants.DATESTAMP_PROPERTY_NAME);
+            if (c instanceof Calendar) {
+                infos[i].date = DateFormat.getDateTimeInstance().format(((Calendar) c).getTime());
+            } else if (c instanceof Date) {
+                infos[i].date = DateFormat.getDateTimeInstance().format((Date) c);
+            }
+        }
+        return infos;
+    }
+    
+    private String getMep(MessageExchange exchange) {
+        URI uri = exchange.getPattern();
+        if (MessageExchangeSupport.IN_ONLY.equals(uri)) {
+            return "In Only";
+        } else if (MessageExchangeSupport.IN_OPTIONAL_OUT.equals(uri)) {
+            return "In Opt Out";
+        } else if (MessageExchangeSupport.IN_OUT.equals(uri)) {
+            return "In Out";
+        } else if (MessageExchangeSupport.ROBUST_IN_ONLY.equals(uri)) {
+            return "Robust In Only";
+        } else {
+            return uri.toString();
+        }
+    }
+
+    public static class ExchangeInfo {
+        private String id;
+        private String date;
+        private String mep;
+        private String status;
+        
+        /**
+         * @return Returns the dateStamp.
+         */
+        public String getDate() {
+            return date;
+        }
+        /**
+         * @param dateStamp The dateStamp to set.
+         */
+        public void setDate(String dateStamp) {
+            this.date = dateStamp;
+        }
+        /**
+         * @return Returns the status.
+         */
+        public String getStatus() {
+            return status;
+        }
+        /**
+         * @param status The status to set.
+         */
+        public void setStatus(String status) {
+            this.status = status;
+        }
+        /**
+         * @return Returns the id.
+         */
+        public String getId() {
+            return id;
+        }
+        /**
+         * @param id The id to set.
+         */
+        public void setId(String id) {
+            this.id = id;
+        }
+        /**
+         * @return Returns the mep.
+         */
+        public String getMep() {
+            return mep;
+        }
+        /**
+         * @param mep The mep to set.
+         */
+        public void setMep(String mep) {
+            this.mep = mep;
+        }
+    }
+    
+}

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/EndpointFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/EndpointFactoryBean.java?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/EndpointFactoryBean.java (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/EndpointFactoryBean.java Thu Oct 26 03:00:43 2006
@@ -16,9 +16,13 @@
  */
 package org.apache.servicemix.web;
 
+import javax.management.MalformedObjectNameException;
+
 import org.apache.servicemix.web.filter.Factory;
+import org.apache.servicemix.web.model.Endpoint;
 import org.apache.servicemix.web.model.Registry;
 import org.springframework.beans.factory.FactoryBean;
+import org.springframework.jmx.support.ObjectNameManager;
 
 public class EndpointFactoryBean implements FactoryBean {
 
@@ -26,13 +30,24 @@
     
     public Object getObject() throws Exception {
         return new Factory() {
-            private String name;
+            private String objectName;
+            private boolean showWsdl;
+            public Object getBean() {
+                try {
+                    Endpoint ep = registry.getEndpoint(ObjectNameManager.getInstance(objectName));
+                    ep.setShowWsdl(showWsdl);
+                    return ep;
+                } catch (MalformedObjectNameException e) {
+                    return null;
+                }
+            }
             @SuppressWarnings("unused")
-            public void setName(String name) {
-                this.name = name;
+            public void setObjectName(String objectName) {
+                this.objectName = objectName;
             }
-            public Object getBean() {
-                return registry.getEndpoint(name);
+            @SuppressWarnings("unused")
+            public void setShowWsdl(boolean showWsdl) {
+                this.showWsdl = showWsdl;
             }
         };
     }

Added: incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/controller/DotViewController.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/controller/DotViewController.java?view=auto&rev=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/controller/DotViewController.java (added)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/controller/DotViewController.java Thu Oct 26 03:00:43 2006
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.servicemix.web.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.servicemix.jbi.view.DotViewServiceMBean;
+import org.apache.servicemix.web.view.DotView;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.Controller;
+
+public class DotViewController implements Controller {
+
+    public static final String TYPE_FLOW = "flow";
+    public static final String TYPE_ENDPOINTS = "endpoints";
+    
+    private DotViewServiceMBean mbean;
+    private String type;
+    private DotView view;
+    
+    public DotViewController(DotViewServiceMBean mbean) {
+        this.mbean = mbean;
+    }
+
+    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        String dotSrc;
+        if (TYPE_FLOW.equals(getType())) {
+            dotSrc = mbean.createFlowGraph();
+        } else if (TYPE_ENDPOINTS.equals(getType())) {
+            dotSrc = mbean.createEndpointGraph();
+        } else {
+            throw new IllegalStateException("Unknown type: " + getType());
+        }
+        Map<String,Object> model = new HashMap<String,Object>();
+        model.put(view.getDotModelSource(), dotSrc);
+        return new ModelAndView(getView(), model);
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public DotView getView() {
+        return view;
+    }
+
+    public void setView(DotView view) {
+        this.view = view;
+    }
+}

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Component.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Component.java?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Component.java (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Component.java Thu Oct 26 03:00:43 2006
@@ -39,7 +39,7 @@
     }
 
     public String getName() {
-        return mbean.getName();
+        return objectName.getKeyProperty("Name");
     }
 
     public String getType() {

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Endpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Endpoint.java?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Endpoint.java (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Endpoint.java Thu Oct 26 03:00:43 2006
@@ -16,7 +16,12 @@
  */
 package org.apache.servicemix.web.model;
 
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
 import javax.management.ObjectName;
+import javax.xml.namespace.QName;
 
 import org.apache.servicemix.jbi.framework.EndpointMBean;
 
@@ -27,6 +32,8 @@
     private EndpointMBean mbean;
 
     private ObjectName objectName;
+    
+    private boolean showWsdl;
 
     public Endpoint(Registry registry, EndpointMBean mbean, ObjectName objectName) {
         this.registry = registry;
@@ -60,6 +67,27 @@
     
     public int hashCode() {
         return objectName.hashCode();
+    }
+
+    public boolean isShowWsdl() {
+        return showWsdl;
+    }
+
+    public void setShowWsdl(boolean showWsdl) {
+        this.showWsdl = showWsdl;
+    }
+    
+    public String getWsdl() {
+        return mbean.loadWSDL().replace("<", "&lt;");
+    }
+    
+    public List<QName> getInterfaces() {
+        QName[] names = mbean.getInterfaces();
+        if (names != null) {
+            return Arrays.asList(names);
+        } else {
+            return Collections.emptyList(); 
+        }
     }
 
 }

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Registry.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Registry.java?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Registry.java (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/Registry.java Thu Oct 26 03:00:43 2006
@@ -77,9 +77,9 @@
         return endpoints;
     }
 
-    public Endpoint getEndpoint(String name) {
+    public Endpoint getEndpoint(ObjectName objectName) {
         for (Endpoint endpoint : getEndpoints()) {
-            if (endpoint.getName().equals(name)) {
+            if (endpoint.getObjectName().equals(objectName)) {
                 return endpoint;
             }
         }

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/ServiceAssembly.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/ServiceAssembly.java?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/ServiceAssembly.java (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/ServiceAssembly.java Thu Oct 26 03:00:43 2006
@@ -39,7 +39,7 @@
     }
 
     public String getName() {
-        return mbean.getName();
+        return objectName.getKeyProperty("Name");
     }
     
     public String getDescription() {

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/ServiceUnit.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/ServiceUnit.java?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/ServiceUnit.java (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/ServiceUnit.java Thu Oct 26 03:00:43 2006
@@ -39,7 +39,7 @@
     }
 
     public String getName() {
-        return mbean.getName();
+        return objectName.getKeyProperty("Name");
     }
     
     public Component getComponent() {
@@ -48,6 +48,10 @@
     
     public ServiceAssembly getServiceAssembly() {
         return registry.getServiceAssembly(mbean.getServiceAssembly());
+    }
+    
+    public String getStatus() {
+        return mbean.getCurrentState();
     }
     
     public boolean equals(Object o) {

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/SharedLibrary.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/SharedLibrary.java?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/SharedLibrary.java (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/model/SharedLibrary.java Thu Oct 26 03:00:43 2006
@@ -39,7 +39,7 @@
     }
     
     public String getName() {
-        return mbean.getName();
+        return objectName.getKeyProperty("Name");
     }
     
     public String getDescription() {

Added: incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/view/DotView.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/view/DotView.java?view=auto&rev=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/view/DotView.java (added)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/java/org/apache/servicemix/web/view/DotView.java Thu Oct 26 03:00:43 2006
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.servicemix.web.view;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileWriter;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.servicemix.jbi.util.FileUtil;
+import org.springframework.web.servlet.view.AbstractView;
+
+public class DotView extends AbstractView {
+
+    public static final String DEFAULT_DOT_PATH = "dot";
+    public static final String DEFAULT_DOT_FORMAT = "svg";
+    public static final String MODEL_SOURCE = "dotSource";
+    public static final String MODEL_FORMAT = "dotFormat";
+    
+    private String dotPath = DEFAULT_DOT_PATH;
+    private String dotModelSource = MODEL_SOURCE;
+    private String dotFormat = DEFAULT_DOT_FORMAT;
+    
+    private static final Map<String, String> FORMATS;
+    
+    static {
+        FORMATS = new HashMap<String, String>();
+        FORMATS.put("svg", "image/svg+xml");
+        FORMATS.put("gif", "image/gif");
+        FORMATS.put("jpg", "image/jpeg");
+    }
+    
+    @Override
+    protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        Object o = model.get(getDotModelSource());
+        if (o == null) {
+            throw new IllegalStateException("Dot model source not found in '" + getDotModelSource() + "'");
+        }
+        if (FORMATS.get(getDotFormat()) == null) {
+            throw new IllegalStateException("Unknown format: '" + getDotFormat() + "'");
+        }
+        File dotSrc = null;
+        File dotImg = null;
+        try {
+            dotSrc = File.createTempFile("smx_", ".dot");
+            FileWriter w = new FileWriter(dotSrc);
+            w.write(o.toString());
+            w.close();
+            dotImg = File.createTempFile("smx_", ".dot." + getDotFormat());
+            
+            String cmd = getDotPath() + " -T" + getDotFormat() + " \"" + dotSrc.getCanonicalPath() + "\" -o\"" + dotImg.getAbsolutePath() + "\"";
+            System.err.println("Executing: " + cmd);
+            Process p = Runtime.getRuntime().exec(cmd);
+            p.waitFor();
+            FileUtil.copyInputStream(p.getErrorStream(), System.err);
+            FileUtil.copyInputStream(p.getInputStream(), System.out);
+            
+            InputStream is = new FileInputStream(dotImg);
+            if (is.available() == 0) {
+                throw new Exception("Error while rendering dot file");
+            }
+            response.setContentType(getContentType());
+            response.setContentLength(is.available());
+            FileUtil.copyInputStream(is, response.getOutputStream());
+        } finally {
+            if (dotSrc != null) {
+                dotSrc.delete();
+            }
+            if (dotImg != null) {
+                dotImg.delete();
+            }
+        }
+    }
+    
+    public String getContentType() {
+        return FORMATS.get(getDotFormat());
+    }
+
+    public String getDotPath() {
+        return dotPath;
+    }
+
+    public void setDotPath(String dotPath) {
+        this.dotPath = dotPath;
+    }
+
+    public String getDotFormat() {
+        return dotFormat;
+    }
+
+    public void setDotFormat(String dotFormat) {
+        this.dotFormat = dotFormat;
+    }
+
+    public String getDotModelSource() {
+        return dotModelSource;
+    }
+
+    public void setDotModelSource(String dotModelSource) {
+        this.dotModelSource = dotModelSource;
+    }
+
+}

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/applicationContext.xml?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/applicationContext.xml (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/applicationContext.xml Thu Oct 26 03:00:43 2006
@@ -36,6 +36,13 @@
     </property>
   </bean>
   
+  <bean id="jdbcAuditorMBean" class="org.springframework.jmx.access.MBeanProxyFactoryBean">
+    <property name="objectName" value="org.apache.servicemix:ContainerName=ServiceMix,Type=SystemService,Name=JdbcAuditor" />
+    <property name="proxyInterface" value="org.apache.servicemix.jbi.audit.AuditorMBean" />
+    <property name="server" ref="server"/>
+    <property name="useStrictCasing" value="false" />
+  </bean>
+  
   <bean id="adminCommandsServiceMBean" class="org.springframework.jmx.access.MBeanProxyFactoryBean">
     <property name="objectName" value="org.apache.servicemix:ContainerName=ServiceMix,Type=SystemService,Name=AdminCommandsService" />
     <property name="proxyInterface" value="org.apache.servicemix.jbi.framework.AdminCommandsServiceMBean" />
@@ -50,6 +57,13 @@
     <property name="useStrictCasing" value="false" />
   </bean>
   
+  <bean id="dotViewServiceMBean" class="org.springframework.jmx.access.MBeanProxyFactoryBean">
+    <property name="objectName" value="org.apache.servicemix:ContainerName=ServiceMix,Type=SystemService,Name=DotViewService" />
+    <property name="proxyInterface" value="org.apache.servicemix.jbi.view.DotViewServiceMBean" />
+    <property name="server" ref="server"/>
+    <property name="useStrictCasing" value="false" />
+  </bean>
+  
   <bean id="proxyManager" class="org.apache.servicemix.web.model.ProxyManager">
     <constructor-arg ref="server" />
   </bean>
@@ -59,6 +73,9 @@
     <constructor-arg ref="registryMBean" />
   </bean>
   
+  <bean id="auditor" class="org.apache.servicemix.web.Auditor" singleton="false">
+    <constructor-arg ref="jdbcAuditorMBean" />
+  </bean>
   <bean id="components" factory-bean="registry" factory-method="getComponents" singleton="false" />
   <bean id="endpoints" factory-bean="registry" factory-method="getEndpoints" singleton="false" />
   <bean id="serviceAssemblies" factory-bean="registry" factory-method="getServiceAssemblies" singleton="false" />

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/dispatcher-servlet.xml
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/dispatcher-servlet.xml?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/dispatcher-servlet.xml (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/dispatcher-servlet.xml Thu Oct 26 03:00:43 2006
@@ -78,6 +78,18 @@
     <property name="view" value="redirect:/service-assemblies.jsp" />
   </bean>
   
+  <bean name="/dot-flow.svg" class="org.apache.servicemix.web.controller.DotViewController" singleton="false">
+    <constructor-arg ref="dotViewServiceMBean" />
+    <property name="type" value="flow" />
+    <property name="view" ref="dotView" />
+  </bean>
+  
+  <bean name="/dot-endpoints.svg" class="org.apache.servicemix.web.controller.DotViewController" singleton="false">
+    <constructor-arg ref="dotViewServiceMBean" />
+    <property name="type" value="endpoints" />
+    <property name="view" ref="dotView" />
+  </bean>
+  
   <!--
     - This bean resolves specific types of exception to corresponding error views.
     - The default behaviour of DispatcherServlet is to propagate all exceptions to the
@@ -87,6 +99,10 @@
     <property name="exceptionMappings">
       <props><!-- <prop key="org.springframework.dao.DataAccessException">dataAccessFailure</prop> --></props>
     </property>
+  </bean>
+  
+  <bean id="dotView" class="org.apache.servicemix.web.view.DotView">
+    <property name="dotFormat" value="svg" />
   </bean>
 
 </beans>

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/web.xml?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/web.xml (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/WEB-INF/web.xml Thu Oct 26 03:00:43 2006
@@ -77,6 +77,7 @@
     <servlet-mapping>
         <servlet-name>dispatcher</servlet-name>
         <url-pattern>*.action</url-pattern>
+        <url-pattern>*.svg</url-pattern>
     </servlet-mapping>
 
 	  <welcome-file-list>

Added: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/audit.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/audit.jsp?view=auto&rev=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/audit.jsp (added)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/audit.jsp Thu Oct 26 03:00:43 2006
@@ -0,0 +1,65 @@
+<%--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    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.
+--%>
+<html>
+<head>
+<title>Audit</title>
+</head>
+<body>
+
+<h2>Audit</h2>
+
+<table class="autostripe">
+  <thead>
+    <tr>
+      <th>Id</th>
+      <th>Date</th>
+      <th>Status</th>
+      <th>MEP</th>
+    </tr>
+  </thead>
+  <tbody>
+    <c:forEach var="exchange" items="${requestContext.auditor.exchanges}">
+      <tr>
+        <td>${exchange.id}</td>
+        <td>${exchange.date}</td>
+        <td>${exchange.status}</td>
+        <td>${exchange.mep}</td>
+      </tr>
+    </c:forEach>
+  </tbody>
+  <tfooter>
+    <tr>
+      <td colspan="4">
+        <c:forEach var="i" begin="0" end="${requestContext.auditor.count / 10}">
+          <c:choose>
+            <c:when test="${i == requestContext.auditor.page}">
+              ${i}
+            </c:when>
+            <c:otherwise>
+              <a href="audit.jsp?page=${i}">${i}</a>
+            </c:otherwise>
+          </c:choose>
+          &nbsp;
+        </c:forEach>
+      </td>
+    </tr>
+  </tfooter>
+</table>
+
+</body>
+</html>
+	

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/component.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/component.jsp?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/component.jsp (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/component.jsp Thu Oct 26 03:00:43 2006
@@ -41,14 +41,20 @@
       <tr>
         <th>Action</th>
         <td>
-          <!--
-          <form method="post" action=${componentAction}>
-            <input type="hidden" name="componentObjectName" value="${model.component.objectName}" />
-            <input type="hidden" name="componentName" value="${model.component.name}" />
-            <input type="hidden" name="command" value="executecomponentaction" />
-            <web:actions actions="${model.component.actions}" bundle="jbicomponents" />
-          </form>
-          -->
+          <table class="align"><tr>
+          <c:if test="${requestContext.component.status != 'Started'}">
+            <td class="align"><form method="post" action="startComponent.action?view=redirect:/component.jsp?name=${requestContext.component.name}"><input type="hidden" name="name" value="${requestContext.component.name}"/><input type="submit" value="Start"/></form></td>
+          </c:if> 
+          <c:if test="${requestContext.component.status == 'Started'}">
+            <td class="align"><form method="post" action="stopComponent.action?view=redirect:/component.jsp?name=${requestContext.component.name}"><input type="hidden" name="name" value="${requestContext.component.name}"/><input type="submit" value="Stop"/></form></td>
+          </c:if> 
+          <c:if test="${requestContext.component.status == 'Stopped'}">
+            <td class="align"><form method="post" action="shutdownComponent.action?view=redirect:/component.jsp?name=${requestContext.component.name}"><input type="hidden" name="name" value="${requestContext.component.name}"/><input type="submit" value="Shutdown"/></form></td>
+          </c:if> 
+          <c:if test="${requestContext.component.status == 'Shutdown'}">
+            <td class="align"><form method="post" action="uninstallComponent.action?view=redirect:/component.jsp?name=${requestContext.component.name}"><input type="hidden" name="name" value="${requestContext.component.name}"/><input type="submit" value="Uninstall"/></form></td> 
+          </c:if> 
+          </tr></table>
         </td>
       </tr>
     </tbody>
@@ -91,7 +97,7 @@
       <c:forEach items="${requestContext.component.endpoints}" var="row">
         <tr>
           <td>
-            <a href="endpoint.jsp?name=${row.name}">${row.name}</a>
+            <a href="endpoint.jsp?objectName=${row.objectName}">${row.name}</a>
           </td>
         </tr>
       </c:forEach>

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/decorators/main.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/decorators/main.jsp?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/decorators/main.jsp (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/decorators/main.jsp Thu Oct 26 03:00:43 2006
@@ -58,14 +58,16 @@
         <div id="menu-page">
           <ul>
               <li><a href="<c:url value='/index.jsp'/>" title="Home<"><span>Home</span></a></li>
-              <li><a href="<c:url value='/services.jsp'/>" title="Services"><span>Services</span></a></li>
               <li><a href="<c:url value='/components.jsp'/>" title="Components"><span>Components</span></a></li>
               <li><a href="<c:url value='/shared-libraries.jsp'/>" title="Shared Libraries"><span>Shared Libraries</span></a></li>
               <li><a href="<c:url value='/service-assemblies.jsp'/>" title="Service Assemblies"><span>Service Assemblies</span></a></li>
               <li><a href="<c:url value='/service-units.jsp'/>" title="Service Units"><span>Service Units</span></a></li>
               <li><a href="<c:url value='/endpoints.jsp'/>" title="Endpoints"><span>Endpoints</span></a></li>
               <li><a href="<c:url value='/audit.jsp'/>" title="Audit"><span>Audit</span></a></li>
+              <li><a href="<c:url value='/view.jsp'/>" title="View"><span>View</span></a></li>
           </ul>
+          <br/>
+          <br/>
           <br/>
           <br/>
           <br/>

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/endpoint.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/endpoint.jsp?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/endpoint.jsp (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/endpoint.jsp Thu Oct 26 03:00:43 2006
@@ -27,19 +27,39 @@
   <table>
     <tbody>
       <tr>
-        <td>Name</td>
+        <th>Name</td>
         <td><div class="field">${requestContext.endpoint.name}</div></td>
       </tr>
       <tr>
-        <td>Type</td>
+        <th>Type</td>
         <td><div class="field">${requestContext.endpoint.type}</div></td>
       </tr>
       <tr>
-        <td>Component</td>
+        <th>Component</td>
         <td><div class="field"><a href="component.jsp?name=${requestContext.endpoint.component.name}">${requestContext.endpoint.component.name}</a></div></td>
       </tr>
+      <tr>
+        <th>Interfaces</th>
+        <td><div class="field">
+          <c:forEach items="${requestContext.endpoint.interfaces}" var="row">
+            ${row}
+          </c:forEach>
+        </div></td>
+      </tr>
     </tbody>
   </table>
+</fieldset>
+
+<fieldset>
+  <legend> WSDL &nbsp; 
+    <small>
+       <c:if test="${requestContext.endpoint.showWsdl}">(<a href="endpoint.jsp?objectName=${requestContext.endpoint.objectName}&amp;showWsdl=false">hide</a>)</c:if>
+       <c:if test="${!requestContext.endpoint.showWsdl}">(<a href="endpoint.jsp?objectName=${requestContext.endpoint.objectName}&amp;showWsdl=true">show</a>)</c:if>
+    </small>
+  </legend>
+  <c:if test="${requestContext.endpoint.showWsdl}">
+    <div id="error" style="height: 25em;"><pre>${requestContext.endpoint.wsdl}</pre></div>
+  </c:if>
 </fieldset>
 
 </body>

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/endpoints.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/endpoints.jsp?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/endpoints.jsp (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/endpoints.jsp Thu Oct 26 03:00:43 2006
@@ -32,7 +32,7 @@
   <tbody>
     <c:forEach items="${requestContext.endpoints}" var="row">
       <tr>
-        <td><a href="endpoint.jsp?name=${row.name}">${row.name}</a></td>
+        <td><a href="endpoint.jsp?objectName=${row.objectName}">${row.name}</a></td>
         <td>${row.type}</td>
         <td><a href="component.jsp?name=${row.component.name}">${row.component.name}</a></td>
       </tr>

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-assemblies.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-assemblies.jsp?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-assemblies.jsp (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-assemblies.jsp Thu Oct 26 03:00:43 2006
@@ -39,7 +39,7 @@
   <tbody>
     <c:forEach items="${requestContext.serviceAssemblies}" var="row">
       <tr>
-        <td><a href="service-assembly.jsp?objectName=${row.objectName}">${row.name}</a></td>
+        <td><a href="service-assembly.jsp?name=${row.name}">${row.name}</a></td>
         <td>${row.status}</td>
         <td>
           <table class="align"><tr>

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-assembly.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-assembly.jsp?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-assembly.jsp (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-assembly.jsp Thu Oct 26 03:00:43 2006
@@ -38,6 +38,25 @@
         <th>Status</th>
         <td><div class="field">${requestContext.serviceAssembly.status}</div></td>
       </tr>
+      <tr>
+        <th>Actions</th>
+        <td>
+          <table class="align"><tr>
+          <c:if test="${requestContext.serviceAssembly.status != 'Started'}">
+            <td class="align"><form method="post" action="startServiceAssembly.action?view=redirect:/service-assembly.jsp?name=${requestContext.serviceAssembly.name}"><input type="hidden" name="name" value="${requestContext.serviceAssembly.name}"/><input type="submit" value="Start"/></form></td>
+          </c:if> 
+          <c:if test="${requestContext.serviceAssembly.status == 'Started'}">
+            <td class="align"><form method="post" action="stopServiceAssembly.action?view=redirect:/service-assembly.jsp?name=${requestContext.serviceAssembly.name}"><input type="hidden" name="name" value="${requestContext.serviceAssembly.name}"/><input type="submit" value="Stop"/></form></td>
+          </c:if> 
+          <c:if test="${requestContext.serviceAssembly.status == 'Stopped'}">
+            <td class="align"><form method="post" action="shutdownServiceAssembly.action?view=redirect:/service-assembly.jsp?name=${requestContext.serviceAssembly.name}"><input type="hidden" name="name" value="${requestContext.serviceAssembly.name}"/><input type="submit" value="Shutdown"/></form></td>
+          </c:if> 
+          <c:if test="${requestContext.serviceAssembly.status == 'Shutdown'}">
+            <td class="align"><form method="post" action="uninstallServiceAssembly.action?view=redirect:/service-assembly.jsp?name=${requestContext.serviceAssembly.name}"><input type="hidden" name="name" value="${requestContext.serviceAssembly.name}"/><input type="submit" value="Uninstall"/></form></td> 
+          </c:if> 
+          </tr></table>
+        </td>
+      </tr>
     </tbody>
   </table>
 </fieldset>

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-units.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-units.jsp?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-units.jsp (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/service-units.jsp Thu Oct 26 03:00:43 2006
@@ -25,14 +25,18 @@
   <thead>
     <tr>
       <th>Name</th>
+      <th>Status</th>
       <th>Component</th>
+      <th>Service Assembly</th>
     </tr>
   </thead>
   <tbody>
     <c:forEach items="${requestContext.serviceUnits}" var="row">
       <tr>
-        <td><a href="service-unit.jsp?objectName=${row.objectName}">${row.name}</a></td>
-        <td><a href="component.jsp?objectName=${row.component.objectName}">${row.component.name}</a></td>
+        <td><a href="service-unit.jsp?name=${row.name}">${row.name}</a></td>
+        <td>${row.status}</td>
+        <td><a href="component.jsp?name=${row.component.name}">${row.component.name}</a></td>
+        <td><a href="service-assembly.jsp?name=${row.serviceAssembly.name}">${row.serviceAssembly.name}</a></td>
       </tr>
     </c:forEach>
   </tbody>

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/shared-libraries.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/shared-libraries.jsp?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/shared-libraries.jsp (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/shared-libraries.jsp Thu Oct 26 03:00:43 2006
@@ -32,12 +32,14 @@
   <thead>
     <tr>
       <th>Name</th>
+      <th>Version</th>
     </tr>
   </thead>
   <tbody>
     <c:forEach items="${requestContext.sharedLibraries}" var="row">
       <tr>
         <td><a href="shared-library.jsp?name=${row.name}">${row.name}</a></td>
+        <td>${row.version}</td>
       </tr>
     </c:forEach>
   </tbody>

Modified: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/shared-library.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/shared-library.jsp?view=diff&rev=467942&r1=467941&r2=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/shared-library.jsp (original)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/shared-library.jsp Thu Oct 26 03:00:43 2006
@@ -36,7 +36,7 @@
       </tr>
       <tr>
         <th>Version</th>
-        <td><div class="field">TODO</div></td>
+        <td><div class="field">${requestContext.sharedLibrary.version}</div></td>
       </tr>
     </tbody>
   </table>

Added: incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/view.jsp
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/view.jsp?view=auto&rev=467942
==============================================================================
--- incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/view.jsp (added)
+++ incubator/servicemix/trunk/servicemix-web-console/src/main/webapp/view.jsp Thu Oct 26 03:00:43 2006
@@ -0,0 +1,53 @@
+<%--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    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.
+--%>
+<html>
+<head>
+<title>View</title>
+</head>
+<body>
+
+<h2>View</h2>
+
+<fieldset style="height:15em">
+  <legend>Endpoints &nbsp; <small>(<a href="dot-endpoints.svg">full page</a>)</small></legend>
+  <object width="100%" height="90%" type="image/svg+xml" codetype="image/svg+xml" data="dot-endpoints.svg">
+    <span style="background-color:#FFFF20;padding-top:1pt;padding-bottom:1pt;">
+      This browser can't display the SVG file <a href="dot-endpoints.svg">dot-endpoints.svg</a>.
+      <br/>
+      Please use newer versions of <a href="http://www.mozilla.com/firefox/">Firefox</a> or install 
+      the <a href="http://www.adobe.com/svg/viewer/install/main.html">Adobe SVG Viewer</a> for your
+      browser.
+    </span>
+  </object>
+</fieldset>
+
+<fieldset style="height:15em">
+  <legend>Flow &nbsp; <small>(<a href="dot-flow.svg">full page</a>)</small></legend>
+  <object width="100%" height="90%" type="image/svg+xml" codetype="image/svg+xml" data="dot-flow.svg">
+    <span style="background-color:#FFFF20;padding-top:1pt;padding-bottom:1pt;">
+      This browser can't display the SVG file <a href="dot-flow.svg">dot-flow.svg</a>.
+      <br/>
+      Please use newer versions of <a href="http://www.mozilla.com/firefox/">Firefox</a> or install 
+      the <a href="http://www.adobe.com/svg/viewer/install/main.html">Adobe SVG Viewer</a> for your
+      browser.
+    </span>
+  </object>
+</fieldset>
+
+</body>
+</html>
+	



Mime
View raw message