summaryrefslogtreecommitdiffstats
path: root/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main')
-rw-r--r--collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/org/apache/tuscany/sca/diagram/shell/DrawShellCommand.java98
-rw-r--r--collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/org/apache/tuscany/sca/diagram/shell/SVGViewer.java104
-rw-r--r--collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/sample/Helloworld.java28
-rw-r--r--collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/sample/HelloworldImpl.java27
-rw-r--r--collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/META-INF/sca-contribution.xml25
-rw-r--r--collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/META-INF/services/org.apache.tuscany.sca.shell.Command17
-rw-r--r--collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/helloworld.composite29
7 files changed, 328 insertions, 0 deletions
diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/org/apache/tuscany/sca/diagram/shell/DrawShellCommand.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/org/apache/tuscany/sca/diagram/shell/DrawShellCommand.java
new file mode 100644
index 0000000000..7adde00b29
--- /dev/null
+++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/org/apache/tuscany/sca/diagram/shell/DrawShellCommand.java
@@ -0,0 +1,98 @@
+/*
+ * 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.tuscany.sca.diagram.shell;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import jline.Completor;
+import jline.NullCompletor;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.xml.Utils;
+import org.apache.tuscany.sca.impl.NodeImpl;
+import org.apache.tuscany.sca.impl.diagram.DiagramGenerator;
+import org.apache.tuscany.sca.impl.io.XMLWriter;
+import org.apache.tuscany.sca.impl.layout.CompositeEntity;
+import org.apache.tuscany.sca.impl.layout.EntityBuilder;
+import org.apache.tuscany.sca.shell.Command;
+import org.apache.tuscany.sca.shell.Shell;
+import org.apache.tuscany.sca.shell.jline.CompositeURICompletor;
+import org.apache.tuscany.sca.shell.jline.ICURICompletor;
+import org.w3c.dom.Document;
+
+public class DrawShellCommand implements Command {
+
+ private Shell shell;
+
+ public DrawShellCommand(Shell shell) {
+ this.shell = shell;
+ }
+
+ public String getName() {
+ return "draw";
+ }
+
+ public String getShortHelp() {
+ return "draw <contributionURI> <compositeURI>";
+ }
+
+ public String getHelp() {
+ StringBuilder helpText = new StringBuilder();
+ helpText.append("Draws a picture of the composite.\n");
+ helpText.append("\n");
+ helpText.append("Arguments:\n");
+ helpText.append(" contributionURI - (required) the URI of the installed contribution\n");
+ helpText.append(" compositeURL - (required) the URI of a started composite\n");
+ return helpText.toString();
+ }
+
+ public boolean invoke(String[] args) throws Exception {
+
+ NodeImpl node = (NodeImpl)shell.getNode();
+ Composite composite = node.getContribution(args[0]).getArtifactModel(args[1]);
+
+ //TODO: really all we want is to pass the Tuscany Composite object to the SVG drawing code,
+ // but for now as that requires an XML file to the Composite to XML:
+
+ String compositeXML = Utils.modelToXML(composite, false, node.getExtensionPointRegistry());
+ DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Document doc = db.parse(new ByteArrayInputStream(compositeXML.getBytes()));
+ EntityBuilder eb = new EntityBuilder(doc);
+ CompositeEntity comp = eb.buildCompositeEntity();
+ DiagramGenerator dg = new DiagramGenerator(comp);
+ Document svg = dg.buildSVGDocument();
+ File outFile = File.createTempFile("tmp", "svg");
+ XMLWriter writer = new XMLWriter();
+ writer.fileWriter(svg, outFile);
+
+ new SVGViewer(outFile.toURI().toURL().toString());
+
+ return true;
+ }
+
+ public Completor[] getCompletors() {
+ return new Completor[]{new ICURICompletor(shell), new CompositeURICompletor(shell), new NullCompletor()};
+ }
+
+}
diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/org/apache/tuscany/sca/diagram/shell/SVGViewer.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/org/apache/tuscany/sca/diagram/shell/SVGViewer.java
new file mode 100644
index 0000000000..e0d3b39fa5
--- /dev/null
+++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/org/apache/tuscany/sca/diagram/shell/SVGViewer.java
@@ -0,0 +1,104 @@
+/*
+ * 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.tuscany.sca.diagram.shell;
+
+import java.awt.BorderLayout;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.File;
+import java.net.MalformedURLException;
+
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.apache.batik.swing.JSVGCanvas;
+import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
+import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
+import org.apache.batik.swing.svg.GVTTreeBuilderAdapter;
+import org.apache.batik.swing.svg.GVTTreeBuilderEvent;
+import org.apache.batik.swing.svg.SVGDocumentLoaderAdapter;
+import org.apache.batik.swing.svg.SVGDocumentLoaderEvent;
+
+public class SVGViewer {
+
+ public static void main(String[] args) {
+ new SVGViewer("../CompositeDiagramGeneratorUsingBatik/output/Calculator_diagram.svg");
+ }
+
+ protected JFrame frame;
+ protected JLabel label = new JLabel();
+ protected JSVGCanvas svgCanvas = new JSVGCanvas();
+ protected String svgFile;
+
+ public SVGViewer(String svgFile) {
+ this.svgFile = svgFile;
+ this.frame = new JFrame("Batik");
+ frame.getContentPane().add(createComponents());
+ frame.addWindowListener(new WindowAdapter() {
+ public void windowClosing(WindowEvent e) {
+// System.exit(0);
+ }
+ });
+ frame.setSize(1000, 1000);
+ frame.setVisible(true);
+ }
+
+ public JComponent createComponents() {
+ final JPanel panel = new JPanel(new BorderLayout());
+ panel.add("Center", svgCanvas);
+ try {
+ svgCanvas.setURI(new File(svgFile).toURI().toURL().toString());
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ }
+
+ svgCanvas.addSVGDocumentLoaderListener(new SVGDocumentLoaderAdapter() {
+ public void documentLoadingStarted(SVGDocumentLoaderEvent e) {
+ label.setText("Document Loading...");
+ }
+ public void documentLoadingCompleted(SVGDocumentLoaderEvent e) {
+ label.setText("Document Loaded.");
+ }
+ });
+
+ svgCanvas.addGVTTreeBuilderListener(new GVTTreeBuilderAdapter() {
+ public void gvtBuildStarted(GVTTreeBuilderEvent e) {
+ label.setText("Build Started...");
+ }
+ public void gvtBuildCompleted(GVTTreeBuilderEvent e) {
+ label.setText("Build Done.");
+ frame.pack();
+ }
+ });
+
+ svgCanvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
+ public void gvtRenderingPrepare(GVTTreeRendererEvent e) {
+ label.setText("Rendering Started...");
+ }
+ public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
+ label.setText("");
+ }
+ });
+
+ return panel;
+ }
+ } \ No newline at end of file
diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/sample/Helloworld.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/sample/Helloworld.java
new file mode 100644
index 0000000000..f4e8c50448
--- /dev/null
+++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/sample/Helloworld.java
@@ -0,0 +1,28 @@
+/*
+ * 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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/sample/HelloworldImpl.java b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/sample/HelloworldImpl.java
new file mode 100644
index 0000000000..089b1a4290
--- /dev/null
+++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/java/sample/HelloworldImpl.java
@@ -0,0 +1,27 @@
+/*
+ * 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 sample;
+
+public class HelloworldImpl implements Helloworld {
+
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/META-INF/sca-contribution.xml b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..95c32fb5bf
--- /dev/null
+++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-contribution" />
+
+</contribution>
diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/META-INF/services/org.apache.tuscany.sca.shell.Command b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/META-INF/services/org.apache.tuscany.sca.shell.Command
new file mode 100644
index 0000000000..74310035fb
--- /dev/null
+++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/META-INF/services/org.apache.tuscany.sca.shell.Command
@@ -0,0 +1,17 @@
+# 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.
+org.apache.tuscany.sca.diagram.shell.DrawShellCommand
diff --git a/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/helloworld.composite b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/helloworld.composite
new file mode 100644
index 0000000000..e0206cd6e8
--- /dev/null
+++ b/collaboration/GSoC-2011-Nirmal/CompositeDiagramShellPlugin/src/main/resources/helloworld.composite
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+ name="helloworld-contribution">
+
+ <component name="HelloworldComponent">
+ <implementation.java class="sample.HelloworldImpl"/>
+ </component>
+
+</composite>