You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by re...@apache.org on 2015/03/26 19:52:26 UTC
[37/51] [partial] incubator-taverna-workbench git commit: all
packages are moved to org.apache.taverna.*
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-contextual-views/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualViewFactory.java
----------------------------------------------------------------------
diff --git a/taverna-contextual-views/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualViewFactory.java b/taverna-contextual-views/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualViewFactory.java
deleted file mode 100644
index e942d3a..0000000
--- a/taverna-contextual-views/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualViewFactory.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007-2008 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.ui.views.contextualviews.processor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactoryRegistry;
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.profiles.ProcessorBinding;
-
-/**
- * SPI factory for creating a {@link ProcessorContextualView}.
- *
- * @author Stian Soiland-Reyes
- * @author Alan R Williams
- */
-public class ProcessorActivitiesContextualViewFactory implements
- ContextualViewFactory<Processor> {
- private Scufl2Tools scufl2Tools = new Scufl2Tools();
- private ContextualViewFactoryRegistry contextualViewFactoryRegistry;
- private SelectionManager selectionManager;
-
- @Override
- public boolean canHandle(Object selection) {
- return selection instanceof Processor;
- }
-
- @Override
- public List<ContextualView> getViews(Processor selection) {
- List<ContextualView> result = new ArrayList<>();
- List<ProcessorBinding> processorBindings = scufl2Tools
- .processorBindingsForProcessor(selection,
- selectionManager.getSelectedProfile());
- for (ProcessorBinding processorBinding : processorBindings) {
- Activity activity = processorBinding.getBoundActivity();
- for (ContextualViewFactory<? super Activity> cvf : contextualViewFactoryRegistry
- .getViewFactoriesForObject(activity))
- result.addAll(cvf.getViews(activity));
- }
- return result;
- }
-
- public void setContextualViewFactoryRegistry(
- ContextualViewFactoryRegistry contextualViewFactoryRegistry) {
- this.contextualViewFactoryRegistry = contextualViewFactoryRegistry;
- }
-
- public void setSelectionManager(SelectionManager selectionManager) {
- this.selectionManager = selectionManager;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-contextual-views/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/processor/ProcessorPredictedBehaviorContextualViewFactory.java
----------------------------------------------------------------------
diff --git a/taverna-contextual-views/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/processor/ProcessorPredictedBehaviorContextualViewFactory.java b/taverna-contextual-views/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/processor/ProcessorPredictedBehaviorContextualViewFactory.java
deleted file mode 100644
index 2a3fae7..0000000
--- a/taverna-contextual-views/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/processor/ProcessorPredictedBehaviorContextualViewFactory.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007-2008 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.ui.views.contextualviews.processor;
-
-import static java.util.Collections.singletonList;
-import static javax.swing.BoxLayout.Y_AXIS;
-
-import java.util.List;
-
-import javax.swing.BoxLayout;
-import javax.swing.JComponent;
-import javax.swing.JEditorPane;
-import javax.swing.JPanel;
-
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory;
-import org.apache.taverna.scufl2.api.common.NamedSet;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.core.DataLink;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.port.InputProcessorPort;
-import org.apache.taverna.scufl2.api.port.OutputProcessorPort;
-
-/**
- * How to get a panel describing what Taverna predicts the depth of the ports of
- * a processor to be.
- *
- * @author Stian Soiland-Reyes
- */
-public class ProcessorPredictedBehaviorContextualViewFactory implements
- ContextualViewFactory<Processor> {
- private Scufl2Tools scufl2Tools = new Scufl2Tools();
-
- @Override
- public boolean canHandle(Object selection) {
- return selection instanceof Processor;
- }
-
- @Override
- @SuppressWarnings("serial")
- public List<ContextualView> getViews(final Processor selection) {
- class ProcessorPredictedBehaviorContextualView extends ContextualView {
- protected JPanel mainPanel = new JPanel();
- protected Processor processor;
-
- public ProcessorPredictedBehaviorContextualView() {
- super();
- refreshView();
- initView();
- }
-
- @Override
- public void refreshView() {
- initialise();
- this.revalidate();
- }
-
- private synchronized void initialise() {
- mainPanel.removeAll();
- mainPanel.setLayout(new BoxLayout(mainPanel, Y_AXIS));
-
- StringBuilder html = new StringBuilder("<html><head>");
- addStyle(html);
- html.append("</head><body>");
-
- NamedSet<InputProcessorPort> inputs = processor.getInputPorts();
- if (!inputs.isEmpty()) {
- html.append("<table border=1><tr><th>Input Port Name</th>")
- .append("<th>Size of data</th>").append("</tr>");
- for (InputProcessorPort ip : inputs) {
- html.append("<tr><td>").append(ip.getName())
- .append("</td><td>");
- List<DataLink> incomingDataLinks = scufl2Tools
- .datalinksTo(ip);
- if (incomingDataLinks.isEmpty())
- html.append("No value");
- else {
- int depth = getDepth(incomingDataLinks.get(0));
- if (depth == -1)
- html.append("Invalid");
- else if (depth == 0)
- html.append("Single value");
- else
- html.append("List of depth ").append(depth);
- }
- html.append("</td></tr>");
- }
- html.append("</table>");
- }
- NamedSet<OutputProcessorPort> outputs = processor
- .getOutputPorts();
- if (!outputs.isEmpty()) {
- html.append("<table border=1><tr><th>Output Port Name</th>")
- .append("<th>Size of data</th>").append("</tr>");
- for (OutputProcessorPort op : outputs) {
- html.append("<tr><td>").append(op.getName())
- .append("</td><td>");
- List<DataLink> outgoingDataLinks = scufl2Tools
- .datalinksFrom(op);
- if (outgoingDataLinks.isEmpty())
- html.append("No value");
- else {
- int depth = getDepth(outgoingDataLinks.get(0));
- if (depth == -1)
- html.append("Invalid/unpredicted");
- else if (depth == 0)
- html.append("Single value");
- else
- html.append("List of depth ").append(depth);
- }
- html.append("</td></tr>");
- }
- html.append("</table>");
- }
- if (inputs.isEmpty() && outputs.isEmpty())
- html.append("<p>No port behavior predicted</p>");
- html.append("</body></html>");
- JEditorPane editorPane = new JEditorPane("text/html",
- html.toString());
- editorPane.setEditable(false);
- mainPanel.add(editorPane);
-
- mainPanel.revalidate();
- mainPanel.repaint();
- this.revalidate();
- this.repaint();
- }
-
- protected void addStyle(StringBuilder html) {
- html.append("<style type='text/css'>")
- .append("table {align:center; border:solid black 1px;")
- .append("width:100%; height:100%; overflow:auto;}")
- .append("</style>");
- }
-
- @Override
- public JComponent getMainFrame() {
- return mainPanel;
- }
-
- @Override
- public String getViewTitle() {
- return "Predicted behavior";
- }
-
- @Override
- public int getPreferredPosition() {
- return 300;
- }
- }
-
- return singletonList((ContextualView) new ProcessorPredictedBehaviorContextualView());
- }
-
- private int getDepth(DataLink datalink) {
- // TODO calculate actual depth
- return -1;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualView.java
----------------------------------------------------------------------
diff --git a/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualView.java b/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualView.java
new file mode 100644
index 0000000..964cae6
--- /dev/null
+++ b/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualView.java
@@ -0,0 +1,153 @@
+/*
+* 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.taverna.workbench.ui.views.contextualviews.processor;
+
+import static java.awt.GridBagConstraints.CENTER;
+import static java.awt.GridBagConstraints.HORIZONTAL;
+import static java.awt.GridBagConstraints.LINE_START;
+import static java.awt.GridBagConstraints.NONE;
+import static org.apache.taverna.workbench.ui.Utils.getParentFrame;
+
+import java.awt.Frame;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.util.List;
+
+import javax.swing.Action;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.apache.taverna.workbench.selection.SelectionManager;
+import org.apache.taverna.workbench.ui.views.contextualviews.ContextualView;
+import org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory;
+import org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactoryRegistry;
+
+import org.apache.taverna.scufl2.api.activity.Activity;
+import org.apache.taverna.scufl2.api.common.Scufl2Tools;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.profiles.ProcessorBinding;
+
+/**
+ * View of a processor, including it's iteration stack, activities, etc.
+ *
+ * @author Stian Soiland-Reyes
+ * @author Alan R Williams
+ */
+@SuppressWarnings("serial")
+public class ProcessorActivitiesContextualView extends ContextualView {
+ private static final String ABSTRACT_PROCESSOR_MSG = "<strong>Abstract processor</strong><br>"
+ + "<i>No services. This will not execute.</i>";
+ private Scufl2Tools scufl2Tools = new Scufl2Tools();
+ protected JPanel mainPanel = new JPanel();
+ protected Processor processor;
+ private final ContextualViewFactoryRegistry contextualViewFactoryRegistry;
+ private final SelectionManager selectionManager;
+
+ public ProcessorActivitiesContextualView(Processor processor,
+ ContextualViewFactoryRegistry contextualViewFactoryRegistry,
+ SelectionManager selectionManager) {
+ super();
+ this.processor = processor;
+ this.contextualViewFactoryRegistry = contextualViewFactoryRegistry;
+ this.selectionManager = selectionManager;
+ initialise();
+ initView();
+ }
+
+ @Override
+ public void refreshView() {
+ initialise();
+ this.revalidate();
+ }
+
+ private synchronized void initialise() {
+ mainPanel.removeAll();
+ mainPanel.setLayout(new GridBagLayout());
+
+ GridBagConstraints constraints = new GridBagConstraints();
+ constraints.gridx = 0;
+ constraints.gridy = 0;
+ constraints.weightx = 0.1;
+ constraints.weighty = 0;
+
+ List<ProcessorBinding> processorBindings = scufl2Tools
+ .processorBindingsForProcessor(processor,
+ selectionManager.getSelectedProfile());
+ if (processorBindings.isEmpty()) {
+ JLabel noActivitiesLabel = new JLabel("<html>"
+ + ABSTRACT_PROCESSOR_MSG + "</html>");
+ constraints.fill = NONE;
+ constraints.anchor = LINE_START;
+ mainPanel.add(noActivitiesLabel, constraints);
+ } else
+ for (ProcessorBinding processorBinding : processorBindings)
+ addViewForBinding(constraints, processorBinding);
+ mainPanel.revalidate();
+ mainPanel.repaint();
+ this.revalidate();
+ this.repaint();
+ }
+
+ private void addViewForBinding(GridBagConstraints constraints,
+ ProcessorBinding processorBinding) {
+ Activity activity = processorBinding.getBoundActivity();
+ List<ContextualViewFactory<? super Activity>> viewFactoryForBeanType = contextualViewFactoryRegistry
+ .getViewFactoriesForObject(activity);
+ if (viewFactoryForBeanType.isEmpty())
+ return;
+ // TODO why a list when we only use the first, twice, and assume non-empty too?
+ ContextualView view = (ContextualView) viewFactoryForBeanType.get(0)
+ .getViews(activity).get(0);
+
+ constraints.anchor = CENTER;
+ constraints.fill = HORIZONTAL;
+ mainPanel.add(view, constraints);
+ Frame frame = getParentFrame(this);
+ Action configureAction = view.getConfigureAction(frame);
+ if (configureAction != null) {
+ constraints.gridy++;
+ constraints.fill = NONE;
+ constraints.anchor = LINE_START;
+ JButton configureButton = new JButton(configureAction);
+ if (configureButton.getText() == null
+ || configureButton.getText().isEmpty())
+ configureButton.setText("Configure");
+ mainPanel.add(configureButton, constraints);
+ }
+ constraints.gridy++;
+ }
+
+ @Override
+ public JComponent getMainFrame() {
+ return mainPanel;
+ }
+
+ @Override
+ public String getViewTitle() {
+ return "Service";
+ }
+
+ @Override
+ public int getPreferredPosition() {
+ return 100;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualViewFactory.java
----------------------------------------------------------------------
diff --git a/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualViewFactory.java b/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualViewFactory.java
new file mode 100644
index 0000000..0f26d5e
--- /dev/null
+++ b/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorActivitiesContextualViewFactory.java
@@ -0,0 +1,74 @@
+/*
+* 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.taverna.workbench.ui.views.contextualviews.processor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.taverna.workbench.selection.SelectionManager;
+import org.apache.taverna.workbench.ui.views.contextualviews.ContextualView;
+import org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory;
+import org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactoryRegistry;
+import org.apache.taverna.scufl2.api.activity.Activity;
+import org.apache.taverna.scufl2.api.common.Scufl2Tools;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.profiles.ProcessorBinding;
+
+/**
+ * SPI factory for creating a {@link ProcessorContextualView}.
+ *
+ * @author Stian Soiland-Reyes
+ * @author Alan R Williams
+ */
+public class ProcessorActivitiesContextualViewFactory implements
+ ContextualViewFactory<Processor> {
+ private Scufl2Tools scufl2Tools = new Scufl2Tools();
+ private ContextualViewFactoryRegistry contextualViewFactoryRegistry;
+ private SelectionManager selectionManager;
+
+ @Override
+ public boolean canHandle(Object selection) {
+ return selection instanceof Processor;
+ }
+
+ @Override
+ public List<ContextualView> getViews(Processor selection) {
+ List<ContextualView> result = new ArrayList<>();
+ List<ProcessorBinding> processorBindings = scufl2Tools
+ .processorBindingsForProcessor(selection,
+ selectionManager.getSelectedProfile());
+ for (ProcessorBinding processorBinding : processorBindings) {
+ Activity activity = processorBinding.getBoundActivity();
+ for (ContextualViewFactory<? super Activity> cvf : contextualViewFactoryRegistry
+ .getViewFactoriesForObject(activity))
+ result.addAll(cvf.getViews(activity));
+ }
+ return result;
+ }
+
+ public void setContextualViewFactoryRegistry(
+ ContextualViewFactoryRegistry contextualViewFactoryRegistry) {
+ this.contextualViewFactoryRegistry = contextualViewFactoryRegistry;
+ }
+
+ public void setSelectionManager(SelectionManager selectionManager) {
+ this.selectionManager = selectionManager;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorPredictedBehaviorContextualViewFactory.java
----------------------------------------------------------------------
diff --git a/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorPredictedBehaviorContextualViewFactory.java b/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorPredictedBehaviorContextualViewFactory.java
new file mode 100644
index 0000000..66bc931
--- /dev/null
+++ b/taverna-contextual-views/src/main/java/org/apache/taverna/workbench/ui/views/contextualviews/processor/ProcessorPredictedBehaviorContextualViewFactory.java
@@ -0,0 +1,176 @@
+/*
+* 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.taverna.workbench.ui.views.contextualviews.processor;
+
+import static java.util.Collections.singletonList;
+import static javax.swing.BoxLayout.Y_AXIS;
+
+import java.util.List;
+
+import javax.swing.BoxLayout;
+import javax.swing.JComponent;
+import javax.swing.JEditorPane;
+import javax.swing.JPanel;
+
+import org.apache.taverna.workbench.ui.views.contextualviews.ContextualView;
+import org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory;
+import org.apache.taverna.scufl2.api.common.NamedSet;
+import org.apache.taverna.scufl2.api.common.Scufl2Tools;
+import org.apache.taverna.scufl2.api.core.DataLink;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.port.InputProcessorPort;
+import org.apache.taverna.scufl2.api.port.OutputProcessorPort;
+
+/**
+ * How to get a panel describing what Taverna predicts the depth of the ports of
+ * a processor to be.
+ *
+ * @author Stian Soiland-Reyes
+ */
+public class ProcessorPredictedBehaviorContextualViewFactory implements
+ ContextualViewFactory<Processor> {
+ private Scufl2Tools scufl2Tools = new Scufl2Tools();
+
+ @Override
+ public boolean canHandle(Object selection) {
+ return selection instanceof Processor;
+ }
+
+ @Override
+ @SuppressWarnings("serial")
+ public List<ContextualView> getViews(final Processor selection) {
+ class ProcessorPredictedBehaviorContextualView extends ContextualView {
+ protected JPanel mainPanel = new JPanel();
+ protected Processor processor;
+
+ public ProcessorPredictedBehaviorContextualView() {
+ super();
+ refreshView();
+ initView();
+ }
+
+ @Override
+ public void refreshView() {
+ initialise();
+ this.revalidate();
+ }
+
+ private synchronized void initialise() {
+ mainPanel.removeAll();
+ mainPanel.setLayout(new BoxLayout(mainPanel, Y_AXIS));
+
+ StringBuilder html = new StringBuilder("<html><head>");
+ addStyle(html);
+ html.append("</head><body>");
+
+ NamedSet<InputProcessorPort> inputs = processor.getInputPorts();
+ if (!inputs.isEmpty()) {
+ html.append("<table border=1><tr><th>Input Port Name</th>")
+ .append("<th>Size of data</th>").append("</tr>");
+ for (InputProcessorPort ip : inputs) {
+ html.append("<tr><td>").append(ip.getName())
+ .append("</td><td>");
+ List<DataLink> incomingDataLinks = scufl2Tools
+ .datalinksTo(ip);
+ if (incomingDataLinks.isEmpty())
+ html.append("No value");
+ else {
+ int depth = getDepth(incomingDataLinks.get(0));
+ if (depth == -1)
+ html.append("Invalid");
+ else if (depth == 0)
+ html.append("Single value");
+ else
+ html.append("List of depth ").append(depth);
+ }
+ html.append("</td></tr>");
+ }
+ html.append("</table>");
+ }
+ NamedSet<OutputProcessorPort> outputs = processor
+ .getOutputPorts();
+ if (!outputs.isEmpty()) {
+ html.append("<table border=1><tr><th>Output Port Name</th>")
+ .append("<th>Size of data</th>").append("</tr>");
+ for (OutputProcessorPort op : outputs) {
+ html.append("<tr><td>").append(op.getName())
+ .append("</td><td>");
+ List<DataLink> outgoingDataLinks = scufl2Tools
+ .datalinksFrom(op);
+ if (outgoingDataLinks.isEmpty())
+ html.append("No value");
+ else {
+ int depth = getDepth(outgoingDataLinks.get(0));
+ if (depth == -1)
+ html.append("Invalid/unpredicted");
+ else if (depth == 0)
+ html.append("Single value");
+ else
+ html.append("List of depth ").append(depth);
+ }
+ html.append("</td></tr>");
+ }
+ html.append("</table>");
+ }
+ if (inputs.isEmpty() && outputs.isEmpty())
+ html.append("<p>No port behavior predicted</p>");
+ html.append("</body></html>");
+ JEditorPane editorPane = new JEditorPane("text/html",
+ html.toString());
+ editorPane.setEditable(false);
+ mainPanel.add(editorPane);
+
+ mainPanel.revalidate();
+ mainPanel.repaint();
+ this.revalidate();
+ this.repaint();
+ }
+
+ protected void addStyle(StringBuilder html) {
+ html.append("<style type='text/css'>")
+ .append("table {align:center; border:solid black 1px;")
+ .append("width:100%; height:100%; overflow:auto;}")
+ .append("</style>");
+ }
+
+ @Override
+ public JComponent getMainFrame() {
+ return mainPanel;
+ }
+
+ @Override
+ public String getViewTitle() {
+ return "Predicted behavior";
+ }
+
+ @Override
+ public int getPreferredPosition() {
+ return 300;
+ }
+ }
+
+ return singletonList((ContextualView) new ProcessorPredictedBehaviorContextualView());
+ }
+
+ private int getDepth(DataLink datalink) {
+ // TODO calculate actual depth
+ return -1;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-contextual-views/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
----------------------------------------------------------------------
diff --git a/taverna-contextual-views/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-contextual-views/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
deleted file mode 100644
index 3aa7ee0..0000000
--- a/taverna-contextual-views/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
+++ /dev/null
@@ -1,4 +0,0 @@
-#net.sf.taverna.t2.workbench.ui.views.contextualviews.processor.ProcessorContextualViewFactory
-net.sf.taverna.t2.workbench.ui.views.contextualviews.processor.ProcessorDispatchStackContextualViewFactory
-net.sf.taverna.t2.workbench.ui.views.contextualviews.processor.ProcessorPredictedBehaviorContextualViewFactory
-net.sf.taverna.t2.workbench.ui.views.contextualviews.processor.ProcessorActivitiesContextualViewFactory
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-contextual-views/src/main/resources/META-INF/services/org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory
----------------------------------------------------------------------
diff --git a/taverna-contextual-views/src/main/resources/META-INF/services/org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-contextual-views/src/main/resources/META-INF/services/org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory
new file mode 100644
index 0000000..d312589
--- /dev/null
+++ b/taverna-contextual-views/src/main/resources/META-INF/services/org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory
@@ -0,0 +1,4 @@
+#org.apache.taverna.workbench.ui.views.contextualviews.processor.ProcessorContextualViewFactory
+org.apache.taverna.workbench.ui.views.contextualviews.processor.ProcessorDispatchStackContextualViewFactory
+org.apache.taverna.workbench.ui.views.contextualviews.processor.ProcessorPredictedBehaviorContextualViewFactory
+org.apache.taverna.workbench.ui.views.contextualviews.processor.ProcessorActivitiesContextualViewFactory
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-contextual-views/src/main/resources/META-INF/spring/contextual-views-context-osgi.xml
----------------------------------------------------------------------
diff --git a/taverna-contextual-views/src/main/resources/META-INF/spring/contextual-views-context-osgi.xml b/taverna-contextual-views/src/main/resources/META-INF/spring/contextual-views-context-osgi.xml
index 932b541..601c74a 100644
--- a/taverna-contextual-views/src/main/resources/META-INF/spring/contextual-views-context-osgi.xml
+++ b/taverna-contextual-views/src/main/resources/META-INF/spring/contextual-views-context-osgi.xml
@@ -6,10 +6,10 @@
http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd">
- <service ref="ProcessorPredictedBehaviorContextualViewFactory" interface="net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory" />
- <service ref="ProcessorActivitiesContextualViewFactory" interface="net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory" />
+ <service ref="ProcessorPredictedBehaviorContextualViewFactory" interface="org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory" />
+ <service ref="ProcessorActivitiesContextualViewFactory" interface="org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory" />
- <reference id="contextualViewFactoryRegistry" interface="net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactoryRegistry" />
- <reference id="selectionManager" interface="net.sf.taverna.t2.workbench.selection.SelectionManager" />
+ <reference id="contextualViewFactoryRegistry" interface="org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactoryRegistry" />
+ <reference id="selectionManager" interface="org.apache.taverna.workbench.selection.SelectionManager" />
</beans:beans>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-contextual-views/src/main/resources/META-INF/spring/contextual-views-context.xml
----------------------------------------------------------------------
diff --git a/taverna-contextual-views/src/main/resources/META-INF/spring/contextual-views-context.xml b/taverna-contextual-views/src/main/resources/META-INF/spring/contextual-views-context.xml
index 7f53cb8..e967ac7 100644
--- a/taverna-contextual-views/src/main/resources/META-INF/spring/contextual-views-context.xml
+++ b/taverna-contextual-views/src/main/resources/META-INF/spring/contextual-views-context.xml
@@ -3,8 +3,8 @@
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
- <bean id="ProcessorPredictedBehaviorContextualViewFactory" class="net.sf.taverna.t2.workbench.ui.views.contextualviews.processor.ProcessorPredictedBehaviorContextualViewFactory" />
- <bean id="ProcessorActivitiesContextualViewFactory" class="net.sf.taverna.t2.workbench.ui.views.contextualviews.processor.ProcessorActivitiesContextualViewFactory">
+ <bean id="ProcessorPredictedBehaviorContextualViewFactory" class="org.apache.taverna.workbench.ui.views.contextualviews.processor.ProcessorPredictedBehaviorContextualViewFactory" />
+ <bean id="ProcessorActivitiesContextualViewFactory" class="org.apache.taverna.workbench.ui.views.contextualviews.processor.ProcessorActivitiesContextualViewFactory">
<property name="contextualViewFactoryRegistry" ref="contextualViewFactoryRegistry" />
<property name="selectionManager" ref="selectionManager" />
</bean>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CMStrings.java
----------------------------------------------------------------------
diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CMStrings.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CMStrings.java
deleted file mode 100644
index 3f6664c..0000000
--- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CMStrings.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package net.sf.taverna.t2.workbench.ui.credentialmanager;
-
-interface CMStrings {
- String ALERT_TITLE = "Credential Manager Alert";
- String ERROR_TITLE = "Credential Manager Error";
- String WARN_TITLE = "Credential Manager Warning";
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ChangeMasterPasswordDialog.java
----------------------------------------------------------------------
diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ChangeMasterPasswordDialog.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ChangeMasterPasswordDialog.java
deleted file mode 100644
index 9277c0e..0000000
--- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ChangeMasterPasswordDialog.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.ui.credentialmanager;
-
-import static java.awt.BorderLayout.CENTER;
-import static java.awt.BorderLayout.NORTH;
-import static java.awt.BorderLayout.SOUTH;
-import static java.awt.Font.PLAIN;
-import static javax.swing.BoxLayout.Y_AXIS;
-import static javax.swing.JOptionPane.WARNING_MESSAGE;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static net.sf.taverna.t2.workbench.ui.credentialmanager.CMStrings.WARN_TITLE;
-
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.Font;
-import java.awt.GridLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JPasswordField;
-import javax.swing.border.CompoundBorder;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.EtchedBorder;
-
-import org.apache.taverna.security.credentialmanager.CredentialManager;
-import net.sf.taverna.t2.workbench.helper.NonBlockedHelpEnabledDialog;
-
-/**
- * Dialog used by users to change their master password for the Credential
- * Manager.
- */
-@SuppressWarnings("serial")
-public class ChangeMasterPasswordDialog extends NonBlockedHelpEnabledDialog {
- /** Old password entry field */
- private JPasswordField oldPasswordField;
- /** New password entry field */
- private JPasswordField newPasswordField;
- /** New password confirmation entry field */
- private JPasswordField newPasswordConfirmField;
- /** The entered new password */
- private String password = null;
- /** Instructions to the users as to what to do in the dialog */
- private String instructions;
- private final CredentialManager credentialManager;
-
- public ChangeMasterPasswordDialog(JFrame parent, String title,
- boolean modal, String instructions,
- CredentialManager credentialManager) {
- super(parent, title, modal, null);
- this.instructions = instructions;
- this.credentialManager = credentialManager;
- initComponents();
- }
-
- private void initComponents() {
- getContentPane().setLayout(new BorderLayout());
-
- JLabel instructionsLabel = new JLabel(instructions);
- instructionsLabel.setFont(new Font(null, PLAIN, 11));
-
- JPanel instructionsPanel = new JPanel();
- instructionsPanel.setLayout(new BoxLayout(instructionsPanel, Y_AXIS));
- instructionsPanel.add(instructionsLabel);
- instructionsPanel.setBorder(new EmptyBorder(10, 5, 10, 0));
-
- JLabel oldPasswordLabel = new JLabel("Old master password");
- oldPasswordLabel.setBorder(new EmptyBorder(0, 5, 0, 0));
-
- JLabel newPasswordLabel = new JLabel("New master password");
- newPasswordLabel.setBorder(new EmptyBorder(0, 5, 0, 0));
-
- JLabel newPasswordConfirmLabel = new JLabel(
- "Confirm new master password");
- newPasswordConfirmLabel.setBorder(new EmptyBorder(0, 5, 0, 0));
-
- oldPasswordField = new JPasswordField(15);
- newPasswordField = new JPasswordField(15);
- newPasswordConfirmField = new JPasswordField(15);
-
- JPanel jpPassword = new JPanel(new GridLayout(0, 2, 5, 5));
- jpPassword.add(oldPasswordLabel);
- jpPassword.add(oldPasswordField);
- jpPassword.add(newPasswordLabel);
- jpPassword.add(newPasswordField);
- jpPassword.add(newPasswordConfirmLabel);
- jpPassword.add(newPasswordConfirmField);
-
- JPanel mainPanel = new JPanel(new BorderLayout());
- mainPanel.setBorder(new CompoundBorder(new EmptyBorder(10, 10, 10, 10),
- new EtchedBorder()));
- mainPanel.add(instructionsPanel, NORTH);
- mainPanel.add(jpPassword, CENTER);
-
- JButton okButton = new JButton("OK");
- okButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent evt) {
- okPressed();
- }
- });
-
- JButton cancelButton = new JButton("Cancel");
- cancelButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent evt) {
- cancelPressed();
- }
- });
- JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
- buttonsPanel.add(okButton);
- buttonsPanel.add(cancelButton);
-
- getContentPane().add(mainPanel, CENTER);
- getContentPane().add(buttonsPanel, SOUTH);
-
- addWindowListener(new WindowAdapter() {
- @Override
- public void windowClosing(WindowEvent evt) {
- closeDialog();
- }
- });
-
- setResizable(false);
- getRootPane().setDefaultButton(okButton);
- pack();
- }
-
- /**
- * Get the password set in the dialog or null if none was set.
- */
- public String getPassword() {
- return password;
- }
-
- /**
- * Check that the user has provided the correct old master password, that
- * the user has supplied the new password and confirmed it and that it is
- * not empty. If all is OK, stores the new password in the password field.
- *
- */
- private boolean checkPassword() {
- String oldPassword = new String(oldPasswordField.getPassword());
-
- if (oldPassword.length() == 0) {
- // old password must not be empty
- showMessageDialog(this,
- "You must provide your current master password",
- WARN_TITLE, WARNING_MESSAGE);
- return false;
- }
-
- try {
- if (!credentialManager.confirmMasterPassword(oldPassword)) {
- showMessageDialog(this,
- "You have provided an incorrect master password",
- WARN_TITLE, WARNING_MESSAGE);
- return false;
- }
- } catch (Exception e) {
- showMessageDialog(
- this,
- "Credential Manager could not verify your current master password",
- WARN_TITLE, WARNING_MESSAGE);
- return false;
- }
-
- String newPassword = new String(newPasswordField.getPassword());
- String newPasswordConfirm = new String(
- newPasswordConfirmField.getPassword());
-
- if (!newPassword.equals(newPasswordConfirm)) {
- // passwords do not match
- showMessageDialog(this, "Passwords do not match", WARN_TITLE,
- WARNING_MESSAGE);
- return false;
- }
-
- if (newPassword.isEmpty()) {
- // passwords match but are empty
- showMessageDialog(this, "The new master password cannot be empty",
- WARN_TITLE, WARNING_MESSAGE);
- return false;
- }
-
- // passwords match and not empty
- password = newPassword;
- return true;
- }
-
- private void okPressed() {
- if (checkPassword())
- closeDialog();
- }
-
- private void cancelPressed() {
- /*
- * Set the password to null as it might have changed in the meantime if
- * user entered something then cancelled.
- */
- password = null;
- closeDialog();
- }
-
- private void closeDialog() {
- setVisible(false);
- dispose();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ConfirmTrustedCertificateDialog.java
----------------------------------------------------------------------
diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ConfirmTrustedCertificateDialog.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ConfirmTrustedCertificateDialog.java
deleted file mode 100644
index 5dbb697..0000000
--- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ConfirmTrustedCertificateDialog.java
+++ /dev/null
@@ -1,520 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.ui.credentialmanager;
-
-import static java.awt.BorderLayout.CENTER;
-import static java.awt.BorderLayout.NORTH;
-import static java.awt.BorderLayout.SOUTH;
-import static java.awt.Color.WHITE;
-import static java.awt.Font.BOLD;
-import static java.awt.Font.PLAIN;
-import static java.awt.GridBagConstraints.LINE_START;
-import static javax.security.auth.x500.X500Principal.RFC2253;
-
-import java.awt.BorderLayout;
-import java.awt.Dialog;
-import java.awt.FlowLayout;
-import java.awt.Font;
-import java.awt.Frame;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.math.BigInteger;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.X509Certificate;
-
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.border.CompoundBorder;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.EtchedBorder;
-
-import net.sf.taverna.t2.lang.ui.DialogTextArea;
-import org.apache.taverna.security.credentialmanager.CMException;
-import org.apache.taverna.security.credentialmanager.DistinguishedNameParser;
-import org.apache.taverna.security.credentialmanager.ParsedDistinguishedName;
-import net.sf.taverna.t2.workbench.helper.NonBlockedHelpEnabledDialog;
-
-import org.apache.log4j.Logger;
-
-/**
- * Displays the details of a X.509 certificate and asks user if they want to
- * trust it. This is normally invoked by the Taverna's TrustManager when trying
- * to confirm the trust in the remote server during SSL handshake.
- */
-@SuppressWarnings("serial")
-public class ConfirmTrustedCertificateDialog extends NonBlockedHelpEnabledDialog {
- private static Logger logger = Logger.getLogger(ConfirmTrustedCertificateDialog.class);
-
- /** The certificate to display */
- private X509Certificate cert;
- /** User's decision as whether to trust this service's certificate or not */
- private boolean shouldTrust;
- /**
- * Should the decision also be saved in Credential Manager? Actually - it is
- * always saved now as it was really hard to implement trusting for one
- * connection only - so we can either "trust" or "not" trust but not
- * "trust once".
- */
- private boolean shouldSave = false;
- private final DistinguishedNameParser dnParser;
-
- public ConfirmTrustedCertificateDialog(Frame parent, String title,
- boolean modal, X509Certificate crt, DistinguishedNameParser dnParser) {
- super(parent, title, modal);
- this.cert = crt;
- this.dnParser = dnParser;
- initComponents();
- }
-
- public ConfirmTrustedCertificateDialog(Dialog parent, String title,
- boolean modal, X509Certificate crt, DistinguishedNameParser dnParser)
- throws CMException {
- super(parent, title, modal);
- this.cert = crt;
- this.dnParser = dnParser;
- initComponents();
- }
-
- private void initComponents(){
- // title panel
- JPanel titlePanel = new JPanel(new BorderLayout());
- titlePanel.setBackground(WHITE);
- JLabel titleLabel = new JLabel("View service's certificate");
- titleLabel.setFont(titleLabel.getFont().deriveFont(BOLD, 13.5f));
- titleLabel.setBorder(new EmptyBorder(10, 10, 0, 10));
-
- DialogTextArea titleMessage = new DialogTextArea();
- titleMessage.setMargin(new Insets(5, 20, 10, 10));
- titleMessage.setFont(titleMessage.getFont().deriveFont(11f));
- titleMessage.setEditable(false);
- titleMessage.setFocusable(false);
- titlePanel.setBorder( new EmptyBorder(10, 10, 0, 10));
- titlePanel.add(titleLabel, NORTH);
- titlePanel.add(titleMessage, CENTER);
-
- // Certificate details:
-
- ParsedDistinguishedName subjectDN = dnParser.parseDN(cert
- .getSubjectX500Principal().getName(RFC2253));
- ParsedDistinguishedName issuerDN = dnParser.parseDN(cert
- .getIssuerX500Principal().getName(RFC2253));
- JPanel certificatePanel = createCertificateDetailsPanel(subjectDN, issuerDN);
- titleMessage.setText("The service host " + subjectDN.getCN() + " requires HTTPS connection and has identified itself with the certificate below.\n" +
- "Do you want to trust this service? (Refusing to trust means you will not be able to invoke services on this host from a workflow.)");
-
- // OK button
- JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
-
-// final JButton trustButton = new JButton("Trust once");
-// trustButton.addActionListener(new ActionListener() {
-// public void actionPerformed(ActionEvent evt) {
-// trustPressed();
-// }
-// });
-
- //final JButton trustAlwaysButton = new JButton("Trust always");
- final JButton trustAlwaysButton = new JButton("Trust");
- trustAlwaysButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent evt) {
- trustAlwaysPressed();
- }
- });
-
- final JButton dontTrustButton = new JButton("Do not trust");
- dontTrustButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent evt) {
- dontTrustPressed();
- }
- });
-
- //jpButtons.add(trustButton);
- buttonsPanel.add(trustAlwaysButton);
- buttonsPanel.add(dontTrustButton);
-
- getContentPane().add(titlePanel, NORTH);
- getContentPane().add(certificatePanel, CENTER);
- getContentPane().add(buttonsPanel, SOUTH);
-
- setResizable(false);
-
- addWindowListener(new WindowAdapter() {
- @Override
- public void windowClosing(WindowEvent evt) {
- closeDialog();
- }
- });
-
- getRootPane().setDefaultButton(trustAlwaysButton);
- pack();
- }
-
- private JPanel createCertificateDetailsPanel(ParsedDistinguishedName subjectDN, ParsedDistinguishedName issuerDN) {
- /*
- * Grid Bag Constraints templates for labels (column 1) and values
- * (column 2) of certificate details
- */
- GridBagConstraints gbc_labels = new GridBagConstraints();
- gbc_labels.gridx = 0;
- gbc_labels.ipadx = 20;
- gbc_labels.gridwidth = 1;
- gbc_labels.gridheight = 1;
- gbc_labels.insets = new Insets(2, 15, 2, 2);
- gbc_labels.anchor = LINE_START;
-
- GridBagConstraints gbc_values = new GridBagConstraints();
- gbc_values.gridx = 1;
- gbc_values.gridwidth = 1;
- gbc_values.gridheight = 1;
- gbc_values.insets = new Insets(2, 5, 2, 2);
- gbc_values.anchor = LINE_START;
-
- /*
- * Netscape Certificate Type non-critical extension (if any) defines the
- * intended uses of the certificate - to make it look like Firefox's
- * view certificate dialog
- *
- * From openssl's documentation: "The [above] extension is non standard,
- * Netscape specific and largely obsolete. Their use in new applications
- * is discouraged."
- *
- * TODO replace with "basicConstraints, keyUsage and extended key usage
- * extensions which are now used instead."
- */
-// byte[] intendedUses = cert.getExtensionValue("2.16.840.1.113730.1.1"); // Netscape Certificate Type OID
-// JLabel intendedUsesLabel = null;
-// JTextField intendedUsesTextField = null;
-// JPanel intendedUsesPanel = null;
-// GridBagConstraints gbc_intendedUsesLabel = null;
-// if (intendedUses != null) {
-// intendedUsesLabel = new JLabel(
-// "This certificate has been approved for the following uses:");
-// intendedUsesLabel.setFont(new Font(null, Font.BOLD, 11));
-// intendedUsesLabel.setBorder(new EmptyBorder(5, 5, 5, 5));
-//
-// intendedUsesTextField = new JTextField(45);
-// intendedUsesTextField.setText(CMUtils.getIntendedCertificateUses(intendedUses));
-// intendedUsesTextField.setEditable(false);
-// intendedUsesTextField.setFont(new Font(null, Font.PLAIN, 11));
-//
-// intendedUsesPanel = new JPanel(new BorderLayout());
-// intendedUsesPanel.add(intendedUsesLabel, BorderLayout.NORTH);
-// intendedUsesPanel.add(intendedUsesTextField, BorderLayout.CENTER);
-// JSeparator separator = new JSeparator(JSeparator.HORIZONTAL);
-// intendedUsesPanel.add(separator, BorderLayout.SOUTH);
-//
-// gbc_intendedUsesLabel = (GridBagConstraints) gbc_labels.clone();
-// gbc_intendedUsesLabel.gridy = 0;
-// gbc_intendedUsesLabel.gridwidth = 2; // takes two columns
-// gbc_intendedUsesLabel.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
-// }
-
- // Issued To
- JLabel issuedToLabel = new JLabel("Issued To");
- issuedToLabel.setFont(new Font(null, BOLD, 11));
- GridBagConstraints gbc_issuedTo = (GridBagConstraints) gbc_labels
- .clone();
- gbc_issuedTo.gridy = 1;
- gbc_issuedTo.gridwidth = 2; // takes two columns
- gbc_issuedTo.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
- // Subject's Distinguished Name (DN)
- // Extract the CN, O, OU and EMAILADDRESS fields
- String subjectCN = subjectDN.getCN();
- String subjectOrg = subjectDN.getO();
- String subjectOU = subjectDN.getOU();
- // String sEMAILADDRESS = CMUtils.getEmilAddress();
- // Subject's Common Name (CN)
- JLabel subjectCNLabel = new JLabel("Common Name (CN)");
- subjectCNLabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_subjectCNLabel = (GridBagConstraints) gbc_labels.clone();
- gbc_subjectCNLabel.gridy = 2;
- JLabel subjectCNValue = new JLabel(subjectCN);
- subjectCNValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_subjectCNValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_subjectCNValue.gridy = 2;
- // Subject's Organisation (O)
- JLabel subjectOrgLabel = new JLabel("Organisation (O)");
- subjectOrgLabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_subjectOrgLabel = (GridBagConstraints) gbc_labels.clone();
- gbc_subjectOrgLabel.gridy = 3;
- JLabel subjectOrgValue = new JLabel(subjectOrg);
- subjectOrgValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_subjectOrgValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_subjectOrgValue.gridy = 3;
- // Subject's Organisation Unit (OU)
- JLabel subjectOULabel = new JLabel("Organisation Unit (OU)");
- subjectOULabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_subjectOULabel = (GridBagConstraints) gbc_labels.clone();
- gbc_subjectOULabel.gridy = 4;
- JLabel subjectOUValue = new JLabel(subjectOU);
- subjectOUValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_subjectOUValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_subjectOUValue.gridy = 4;
- // E-mail Address
- // JLabel jlEmail = new JLabel("E-mail Address");
- // jlEmail.setFont(new Font(null, Font.PLAIN, 11));
- // GridBagConstraints gbc_jlEmail = (GridBagConstraints)
- // gbcLabel.clone();
- // gbc_jlEmail.gridy = 5;
- // JLabel jlEmailValue = new JLabel(sEMAILADDRESS);
- // jlEmailValue.setFont(new Font(null, Font.PLAIN, 11));
- // GridBagConstraints gbc_jlEmailValue = (GridBagConstraints)
- // gbcValue.clone();
- // gbc_jlEmailValue.gridy = 5;
- // Serial Number
- JLabel snLabel = new JLabel("Serial Number");
- snLabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_snLabel = (GridBagConstraints) gbc_labels.clone();
- gbc_snLabel.gridy = 6;
- JLabel snValue = new JLabel();
- // Get the hexadecimal serial number
- StringBuilder strBuff = new StringBuilder(new BigInteger(1, cert
- .getSerialNumber().toByteArray()).toString(16).toUpperCase());
- // Place colons at every two hexadecimal characters
- if (strBuff.length() > 2)
- for (int iCnt = 2; iCnt < strBuff.length(); iCnt += 3)
- strBuff.insert(iCnt, ':');
- snValue.setText(strBuff.toString());
- snValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_snValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_snValue.gridy = 6;
- // Certificate version number
- JLabel versionLabel = new JLabel("Version");
- versionLabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_versionLabel = (GridBagConstraints) gbc_labels
- .clone();
- gbc_versionLabel.gridy = 7;
- JLabel versionValue = new JLabel(Integer.toString(cert.getVersion()));
- versionValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_versionValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_versionValue.gridy = 7;
-
- // Issued By
- JLabel issuedByLabel = new JLabel("Issued By");
- issuedByLabel.setFont(new Font(null, BOLD, 11));
- GridBagConstraints gbc_issuedByLabel = (GridBagConstraints) gbc_labels
- .clone();
- gbc_issuedByLabel.gridy = 8;
- gbc_issuedByLabel.gridwidth = 2; // takes two columns
- gbc_issuedByLabel.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
- // Issuer's Distinguished Name (DN)
- // Extract the CN, O and OU fields for the issuer
- String issuerCN = issuerDN.getCN();
- String issuerOrg = issuerDN.getO();
- String issuerOU = issuerDN.getOU();
- // Issuer's Common Name (CN)
- JLabel issuerCNLabel = new JLabel("Common Name (CN)");
- issuerCNLabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_issuerCNLabel = (GridBagConstraints) gbc_labels.clone();
- gbc_issuerCNLabel.gridy = 9;
- JLabel issuerCNValue = new JLabel(issuerCN);
- issuerCNValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_issuerCNValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_issuerCNValue.gridy = 9;
- // Issuer's Organisation (O)
- JLabel issuerOrgLabel = new JLabel("Organisation (O)");
- issuerOrgLabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_issuerOrgLabel = (GridBagConstraints) gbc_labels.clone();
- gbc_issuerOrgLabel.gridy = 10;
- JLabel issuerOrgValue = new JLabel(issuerOrg);
- issuerOrgValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_issuerOrgValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_issuerOrgValue.gridy = 10;
- // Issuer's Organisation Unit (OU)
- JLabel issuerOULabel = new JLabel("Organisation Unit (OU)");
- issuerOULabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_issuerOULabel = (GridBagConstraints) gbc_labels.clone();
- gbc_issuerOULabel.gridy = 11;
- JLabel issuerOUValue = new JLabel(issuerOU);
- issuerOUValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_issuerOUValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_issuerOUValue.gridy = 11;
-
- // Validity
- JLabel validityLabel = new JLabel("Validity");
- validityLabel.setFont(new Font(null, BOLD, 11));
- GridBagConstraints gbc_validityLabel = (GridBagConstraints) gbc_labels
- .clone();
- gbc_validityLabel.gridy = 12;
- gbc_validityLabel.gridwidth = 2; // takes two columns
- gbc_validityLabel.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
- // Issued On
- JLabel issuedOnLabel = new JLabel("Issued On");
- issuedOnLabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_issuedOnLabel = (GridBagConstraints) gbc_labels
- .clone();
- gbc_issuedOnLabel.gridy = 13;
- JLabel issuedOnValue = new JLabel(cert.getNotBefore().toString());
- issuedOnValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_issuedOnValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_issuedOnValue.gridy = 13;
- // Expires On
- JLabel expiresOnLabel = new JLabel("Expires On");
- expiresOnLabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_expiresOnLabel = (GridBagConstraints) gbc_labels
- .clone();
- gbc_expiresOnLabel.gridy = 14;
- JLabel expiresOnValue = new JLabel(cert.getNotAfter().toString());
- expiresOnValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_expiresOnValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_expiresOnValue.gridy = 14;
-
- // Fingerprints
- byte[] binaryCertificateEncoding = new byte[0];
- try {
- // each certificate has one binary encoding; for X.509 certs it is DER
- binaryCertificateEncoding = cert.getEncoded();
- } catch (CertificateEncodingException ex) {
- logger.error("Could not get the encoded form of the certificate.", ex);
- }
- JLabel fingerprintsLabel = new JLabel("Fingerprints");
- fingerprintsLabel.setFont(new Font(null, BOLD, 11));
- GridBagConstraints gbc_fingerprintsLabel = (GridBagConstraints) gbc_labels
- .clone();
- gbc_fingerprintsLabel.gridy = 15;
- gbc_fingerprintsLabel.gridwidth = 2; // takes two columns
- gbc_fingerprintsLabel.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
- // SHA-1 Fingerprint
- JLabel sha1FingerprintLabel = new JLabel("SHA1 Fingerprint");
- sha1FingerprintLabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_sha1FingerprintLabel = (GridBagConstraints) gbc_labels
- .clone();
- gbc_sha1FingerprintLabel.gridy = 16;
- JLabel sha1FingerprintValue = new JLabel(
- dnParser.getMessageDigestAsFormattedString(
- binaryCertificateEncoding, "SHA1"));
- sha1FingerprintValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_sha1FingerprintValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_sha1FingerprintValue.gridy = 16;
- // MD5 Fingerprint
- JLabel md5FingerprintLabel = new JLabel("MD5 Fingerprint");
- md5FingerprintLabel.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_md5FingerprinLabel = (GridBagConstraints) gbc_labels
- .clone();
- gbc_md5FingerprinLabel.gridy = 17;
- JLabel md5FingerprintValue = new JLabel(
- dnParser.getMessageDigestAsFormattedString(
- binaryCertificateEncoding, "MD5"));
- md5FingerprintValue.setFont(new Font(null, PLAIN, 11));
- GridBagConstraints gbc_md5FingerprintValue = (GridBagConstraints) gbc_values
- .clone();
- gbc_md5FingerprintValue.gridy = 17;
-
- /*
- * Empty label to add a bit space at the bottom of the panel to make it
- * look like Firefox's view certificate dialog
- */
- JLabel emptyLabel = new JLabel("");
- GridBagConstraints gbc_emptyLabel = (GridBagConstraints) gbc_labels.clone();
- gbc_emptyLabel.gridy = 18;
- gbc_emptyLabel.gridwidth = 2; // takes two columns
- gbc_emptyLabel.ipady = 40;
-
- JPanel certificatePanel = new JPanel(new GridBagLayout());
- certificatePanel.setBorder(new CompoundBorder(new EmptyBorder(15, 15, 15,
- 15), new EtchedBorder()));
-
-// if (intendedUses != null)
-// certificatePanel.add(intendedUsesPanel, gbc_intendedUsesLabel);
- certificatePanel.add(issuedToLabel, gbc_issuedTo); // Issued To
- certificatePanel.add(subjectCNLabel, gbc_subjectCNLabel);
- certificatePanel.add(subjectCNValue, gbc_subjectCNValue);
- certificatePanel.add(subjectOrgLabel, gbc_subjectOrgLabel);
- certificatePanel.add(subjectOrgValue, gbc_subjectOrgValue);
- certificatePanel.add(subjectOULabel, gbc_subjectOULabel);
- certificatePanel.add(subjectOUValue, gbc_subjectOUValue);
- // jpCertificate.add(jlEmail, gbc_jlEmail);
- // jpCertificate.add(jlEmailValue, gbc_jlEmailValue);
- certificatePanel.add(snLabel, gbc_snLabel);
- certificatePanel.add(snValue, gbc_snValue);
- certificatePanel.add(versionLabel, gbc_versionLabel);
- certificatePanel.add(versionValue, gbc_versionValue);
- certificatePanel.add(issuedByLabel, gbc_issuedByLabel); // Issued By
- certificatePanel.add(issuerCNLabel, gbc_issuerCNLabel);
- certificatePanel.add(issuerCNValue, gbc_issuerCNValue);
- certificatePanel.add(issuerOrgLabel, gbc_issuerOrgLabel);
- certificatePanel.add(issuerOrgValue, gbc_issuerOrgValue);
- certificatePanel.add(issuerOULabel, gbc_issuerOULabel);
- certificatePanel.add(issuerOUValue, gbc_issuerOUValue);
- certificatePanel.add(validityLabel, gbc_validityLabel); // Validity
- certificatePanel.add(issuedOnLabel, gbc_issuedOnLabel);
- certificatePanel.add(issuedOnValue, gbc_issuedOnValue);
- certificatePanel.add(expiresOnLabel, gbc_expiresOnLabel);
- certificatePanel.add(expiresOnValue, gbc_expiresOnValue);
- certificatePanel.add(fingerprintsLabel, gbc_fingerprintsLabel); // Fingerprints
- certificatePanel.add(sha1FingerprintLabel, gbc_sha1FingerprintLabel);
- certificatePanel.add(sha1FingerprintValue, gbc_sha1FingerprintValue);
- certificatePanel.add(md5FingerprintLabel, gbc_md5FingerprinLabel);
- certificatePanel.add(md5FingerprintValue, gbc_md5FingerprintValue);
- // Empty label to get some vertical space on the frame
- certificatePanel.add(emptyLabel, gbc_emptyLabel);
- return certificatePanel;
- }
-
-// private void trustPressed() {
-// shouldTrust = true;
-// shouldSave = false;
-// closeDialog();
-// }
-
- private void trustAlwaysPressed() {
- shouldTrust = true;
- shouldSave = true;
- closeDialog();
- }
-
- private void dontTrustPressed() {
- shouldTrust = false;
- shouldSave = false;
- closeDialog();
- }
-
- public void closeDialog() {
- setVisible(false);
- dispose();
- }
-
- public boolean shouldTrust() {
- return shouldTrust;
- }
-
- public boolean shouldSave() {
- return shouldSave;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ConfirmTrustedCertificateUI.java
----------------------------------------------------------------------
diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ConfirmTrustedCertificateUI.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ConfirmTrustedCertificateUI.java
deleted file mode 100644
index c7eaef5..0000000
--- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/ConfirmTrustedCertificateUI.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.ui.credentialmanager;
-
-import static javax.swing.JOptionPane.INFORMATION_MESSAGE;
-import static javax.swing.JOptionPane.showMessageDialog;
-
-import java.awt.Frame;
-import java.security.cert.X509Certificate;
-
-import org.apache.taverna.security.credentialmanager.DistinguishedNameParser;
-import org.apache.taverna.security.credentialmanager.TrustConfirmationProvider;
-
-import org.apache.log4j.Logger;
-
-/**
- * @author Stian Soiland-Reyes
- */
-public class ConfirmTrustedCertificateUI implements TrustConfirmationProvider {
- private static Logger logger = Logger
- .getLogger(ConfirmTrustedCertificateUI.class);
-
- private DistinguishedNameParser dnParser;
-
- @Override
- public Boolean shouldTrustCertificate(X509Certificate[] chain) {
- boolean trustConfirm = false;
- logger.info("Asking the user if they want to trust a certificate.");
- // Ask user if they want to trust this service
- ConfirmTrustedCertificateDialog confirmCertTrustDialog = new ConfirmTrustedCertificateDialog(
- (Frame) null, "Untrusted HTTPS connection", true,
- (X509Certificate) chain[0], dnParser);
- confirmCertTrustDialog.setLocationRelativeTo(null);
- confirmCertTrustDialog.setVisible(true);
- trustConfirm = confirmCertTrustDialog.shouldTrust();
-// trustConfirm.setShouldSave(confirmCertTrustDialog.shouldSave());
- if (!confirmCertTrustDialog.shouldTrust())
- showMessageDialog(
- null,
- "As you refused to trust this host, you will not be able to use its services from a workflow.",
- "Untrusted HTTPS connection", INFORMATION_MESSAGE);
-
- return trustConfirm;
- }
-
- /**
- * @param dnParser
- * the dnParser to set
- */
- public void setDistinguishedNameParser(DistinguishedNameParser dnParser) {
- this.dnParser = dnParser;
- }
-}