You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by da...@apache.org on 2009/09/14 17:12:20 UTC

svn commit: r814684 - in /cxf/dosgi/trunk: samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/ samples/greeter/impl/src/main/java/org/apache/cxf/dosgi/samples/greeter/impl/ samples/greeter/interface/src/main/java/org/apach...

Author: davidb
Date: Mon Sep 14 15:12:19 2009
New Revision: 814684

URL: http://svn.apache.org/viewvc?rev=814684&view=rev
Log:
Enhanced the Greeter Demo to include an API that takes a data object.
The new GreeterService API is as follows:
  public interface GreeterService {
    Map<GreetingPhrase, String> greetMe(String name);
    GreetingPhrase [] greetMe(GreeterData name) throws GreeterException;
  }

where the GreeterData interface is defined as follows:
  public interface GreeterData {
    String getName();
    int getAge();
    boolean isException();
  }

This in response to some questions on the CXF users list around passing data objects.

Added:
    cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDataImpl.java   (with props)
    cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDialog.java   (with props)
    cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterData.java   (with props)
Modified:
    cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/Activator.java
    cxf/dosgi/trunk/samples/greeter/impl/src/main/java/org/apache/cxf/dosgi/samples/greeter/impl/GreeterServiceImpl.java
    cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterService.java
    cxf/dosgi/trunk/systests/common/src/main/java/org/apache/cxf/dosgi/systests/common/AbstractBasicPublishHookTest.java
    cxf/dosgi/trunk/systests/common/src/main/java/org/apache/cxf/dosgi/systests/common/AbstractListenerHookServiceListenerTest.java

Modified: cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/Activator.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/Activator.java?rev=814684&r1=814683&r2=814684&view=diff
==============================================================================
--- cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/Activator.java (original)
+++ cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/Activator.java Mon Sep 14 15:12:19 2009
@@ -20,8 +20,7 @@
 
 import java.util.Map;
 
-import javax.swing.JOptionPane;
-
+import org.apache.cxf.dosgi.samples.greeter.GreeterData;
 import org.apache.cxf.dosgi.samples.greeter.GreeterException;
 import org.apache.cxf.dosgi.samples.greeter.GreeterService;
 import org.apache.cxf.dosgi.samples.greeter.GreetingPhrase;
@@ -66,26 +65,37 @@
     private void greeterUI(final BundleContext bc, final GreeterService greeter) {
         while (true) {
             System.out.println("*** Opening greeter client dialog ***");
-            String name = JOptionPane.showInputDialog("Enter name:");
-            if (name == null) {
-                break;
-            } else {
+            Object gd = getGreeterData();
+            if (gd instanceof String) {
+                System.out.println("*** Invoking greeter ***");
+                Map<GreetingPhrase, String> result = greeter.greetMe((String) gd);
+
+                System.out.println("greetMe(\"" + gd + "\") returns:");
+                for (Map.Entry<GreetingPhrase, String> greeting : result.entrySet()) {
+                    System.out.println("  " + greeting.getKey().getPhrase() 
+                            + " " + greeting.getValue());
+                }
+            } else if (gd instanceof GreeterData) {
                 System.out.println("*** Invoking greeter ***");
                 try {
-                    Map<GreetingPhrase, String> result = greeter.greetMe(name);
-    
-                    System.out.println("greetMe(\"" + name + "\") returns:");
-                    for (Map.Entry<GreetingPhrase, String> greeting : result.entrySet()) {
-                        System.out.println("  " + greeting.getKey().getPhrase() 
-                                + " " + greeting.getValue());
+                    GreetingPhrase [] result = greeter.greetMe((GreeterData) gd);
+                    System.out.println("greetMe(\"" + gd + "\") returns:");
+                    for (GreetingPhrase phrase : result) {
+                        System.out.println("  " + phrase.getPhrase());
                     }
                 } catch (GreeterException ex) {
                     System.out.println("GreeterException : " + ex.toString());
-                }
+                }                
             }
         }
     }
 
+    private static Object getGreeterData() {
+        GreeterDialog gd = new GreeterDialog();
+        gd.setVisible(true);
+        return gd.getSelection();
+    }
+
     public void stop(BundleContext bc) throws Exception {
         tracker.close();
     }

Added: cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDataImpl.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDataImpl.java?rev=814684&view=auto
==============================================================================
--- cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDataImpl.java (added)
+++ cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDataImpl.java Mon Sep 14 15:12:19 2009
@@ -0,0 +1,45 @@
+/** 
+  * 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.cxf.dosgi.samples.greeter.client;
+
+import org.apache.cxf.dosgi.samples.greeter.GreeterData;
+
+public class GreeterDataImpl implements GreeterData {
+    private final String name;
+    private final int age;
+    private final boolean exception;
+        
+    public GreeterDataImpl(String n, int a, boolean b) {
+        name = n;
+        age = a;
+        exception = b;
+    }
+    
+    public String getName() {
+        return name;
+    }
+
+    public int getAge() {
+        return age;
+    }
+
+    public boolean isException() {
+        return exception;
+    }
+}

Propchange: cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDataImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDataImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDialog.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDialog.java?rev=814684&view=auto
==============================================================================
--- cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDialog.java (added)
+++ cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDialog.java Mon Sep 14 15:12:19 2009
@@ -0,0 +1,189 @@
+/** 
+  * 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.cxf.dosgi.samples.greeter.client;
+
+import java.awt.Component;
+import java.awt.FlowLayout;
+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 javax.swing.BoxLayout;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class GreeterDialog extends JDialog {
+    private static final long serialVersionUID = 1L;
+    
+    Object selection;
+
+    public GreeterDialog() {
+        super((Frame) null, "Invoke Remote Greeter Service", true);
+        
+        JPanel panel = new JPanel();
+        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));     
+        setContentPane(panel);
+
+        final JRadioButton rb1 = new JRadioButton("invoke: Map<GreetingPhrase, String> greetMe(String name);");
+        rb1.setSelected(true);
+        rb1.setAlignmentX(Component.LEFT_ALIGNMENT);        
+        panel.add(rb1);
+        
+        final JPanel simplePanel = new JPanel(new GridBagLayout());
+        simplePanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+        GridBagConstraints c1 = new GridBagConstraints();
+        
+        rb1.addChangeListener(new ChangeListener() {
+            public void stateChanged(ChangeEvent e) {
+                enablePanel(simplePanel, rb1.isSelected());
+            }
+        });
+        
+        JLabel lb1 = new JLabel("Name: ");
+        c1.weightx = 0.0;
+        c1.gridx = 0;
+        c1.gridy = 0;
+        c1.insets = new Insets(0, 25, 0, 0);
+        c1.anchor = GridBagConstraints.LINE_START;
+        simplePanel.add(lb1, c1);
+        
+        final JTextField tf1 = new JTextField(20);
+        c1.weightx = 0.2;
+        c1.gridx = 1;
+        c1.gridy = 0;
+        c1.insets = new Insets(0, 10, 0, 0);
+        c1.anchor = GridBagConstraints.LINE_START;
+        simplePanel.add(tf1, c1);
+        panel.add(simplePanel);
+
+        panel.add(new JLabel(" ")); // add a spacer
+        
+        final JRadioButton rb2 = new JRadioButton("invoke: GreetingPhrase [] greetMe(GreeterData data) throws GreeterException;");
+        rb2.setAlignmentX(Component.LEFT_ALIGNMENT);
+        panel.add(rb2);
+        
+        final JPanel complexPanel = new JPanel(new GridBagLayout());
+        complexPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+        GridBagConstraints c2 = new GridBagConstraints();
+
+        rb2.addChangeListener(new ChangeListener() {            
+            public void stateChanged(ChangeEvent e) {
+                enablePanel(complexPanel, rb2.isSelected());
+            }
+        });            
+        
+        JLabel lb2 = new JLabel("Name: ");
+        c2.weightx = 0.0;
+        c2.gridx = 0;
+        c2.gridy = 0;
+        c2.insets = new Insets(0, 25, 0, 0);
+        c2.anchor = GridBagConstraints.LINE_START;
+        complexPanel.add(lb2, c2);
+        
+        final JTextField tf2 = new JTextField(20);
+        c2.weightx = 0.2;
+        c2.gridx = 1;
+        c2.gridy = 0;
+        c2.insets = new Insets(0, 10, 0, 0);
+        c2.anchor = GridBagConstraints.LINE_START;
+        complexPanel.add(tf2, c2);        
+                
+        JLabel lb3 = new JLabel("Age: ");
+        c2.weightx = 0.0;
+        c2.gridx = 0;
+        c2.gridy = 1;
+        c2.insets = new Insets(0, 25, 0, 0);
+        c2.anchor = GridBagConstraints.LINE_START;
+        complexPanel.add(lb3, c2);
+        
+        final JTextField tf3 = new JTextField(7);
+        c2.weightx = 0.2;
+        c2.gridx = 1;
+        c2.gridy = 1;
+        c2.insets = new Insets(0, 10, 0, 0);
+        c2.anchor = GridBagConstraints.LINE_START;
+        complexPanel.add(tf3, c2);
+        
+        final JCheckBox cb1 = new JCheckBox("Throw Exception");
+        c2.weightx = 0.0;
+        c2.gridx = 0;
+        c2.gridy = 2;
+        c2.gridwidth = 2;
+        c2.insets = new Insets(0, 22, 0, 0);
+        c2.anchor = GridBagConstraints.LINE_START;
+        complexPanel.add(cb1, c2);
+
+        panel.add(complexPanel);
+        enablePanel(complexPanel, false);
+        
+        JPanel buttons = new JPanel(new FlowLayout(FlowLayout.CENTER));        
+        buttons.setAlignmentX(Component.LEFT_ALIGNMENT);
+        
+        JButton b1 = new JButton("Invoke");
+        buttons.add(b1);
+        
+        b1.addActionListener(new ActionListener() {            
+            public void actionPerformed(ActionEvent e) {
+                if (rb1.isSelected()) {
+                    selection = tf1.getText();
+                } else {
+                    selection = new GreeterDataImpl(tf2.getText(), new Integer(tf3.getText()), cb1.isSelected());
+                }                
+                
+                setVisible(false);
+            }
+        });
+        
+        panel.add(buttons);
+        
+        ButtonGroup bg = new ButtonGroup();
+        bg.add(rb1);
+        bg.add(rb2);
+        
+        pack();
+        setLocationRelativeTo(null); // centers frame on screen
+    }
+    
+    public Object getSelection() {
+        return selection;
+    }
+    
+    private static void enablePanel(JPanel panel, boolean b) {
+        for (Component c : panel.getComponents()) {
+            c.setEnabled(b);
+        }
+    }
+
+    public static void main(String ... args) {
+        GreeterDialog gd = new GreeterDialog();
+        gd.setVisible(true);
+        System.exit(0);
+    }
+}

Propchange: cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDialog.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/GreeterDialog.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: cxf/dosgi/trunk/samples/greeter/impl/src/main/java/org/apache/cxf/dosgi/samples/greeter/impl/GreeterServiceImpl.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/samples/greeter/impl/src/main/java/org/apache/cxf/dosgi/samples/greeter/impl/GreeterServiceImpl.java?rev=814684&r1=814683&r2=814684&view=diff
==============================================================================
--- cxf/dosgi/trunk/samples/greeter/impl/src/main/java/org/apache/cxf/dosgi/samples/greeter/impl/GreeterServiceImpl.java (original)
+++ cxf/dosgi/trunk/samples/greeter/impl/src/main/java/org/apache/cxf/dosgi/samples/greeter/impl/GreeterServiceImpl.java Mon Sep 14 15:12:19 2009
@@ -21,21 +21,15 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.cxf.dosgi.samples.greeter.GreeterData;
 import org.apache.cxf.dosgi.samples.greeter.GreeterException;
 import org.apache.cxf.dosgi.samples.greeter.GreeterService;
 import org.apache.cxf.dosgi.samples.greeter.GreetingPhrase;
 
 public class GreeterServiceImpl implements GreeterService {
-
-    private final static String STRANGER_NAME = "Stranger";
-
-    public Map<GreetingPhrase, String> greetMe(String name) throws GreeterException {
+    public Map<GreetingPhrase, String> greetMe(String name) {
         System.out.println("Invoking: greetMe(" + name + ")");
         
-        if (name.equals(STRANGER_NAME)) {
-            throw new GreeterException(name);
-        }
-
         Map<GreetingPhrase, String> greetings = 
             new HashMap<GreetingPhrase, String>();
         
@@ -48,4 +42,21 @@
         return greetings;
     }
 
+    public GreetingPhrase [] greetMe(GreeterData gd) throws GreeterException {
+        if (gd.isException()) {
+            System.out.println("Throwing custom exception from: greetMe(" + gd.getName() + ")");
+            throw new GreeterException(gd.getName());
+        }
+        
+        String details = gd.getName() + "(" + gd.getAge() + ")";
+        System.out.println("Invoking: greetMe(" + details + ")");
+        
+        GreetingPhrase [] greetings = new GreetingPhrase [] {
+            new GreetingPhrase("Howdy " + details),
+            new GreetingPhrase("Hallo " + details),
+            new GreetingPhrase("Ni hao " + details)
+        };
+        
+        return greetings;
+    }
 }

Added: cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterData.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterData.java?rev=814684&view=auto
==============================================================================
--- cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterData.java (added)
+++ cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterData.java Mon Sep 14 15:12:19 2009
@@ -0,0 +1,25 @@
+/** 
+  * 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.cxf.dosgi.samples.greeter;
+
+public interface GreeterData {
+    String getName();
+    int getAge();
+    boolean isException();
+}

Propchange: cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterData.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterData.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterService.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterService.java?rev=814684&r1=814683&r2=814684&view=diff
==============================================================================
--- cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterService.java (original)
+++ cxf/dosgi/trunk/samples/greeter/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/GreeterService.java Mon Sep 14 15:12:19 2009
@@ -22,7 +22,6 @@
 
 
 public interface GreeterService {
-
-    Map<GreetingPhrase, String> greetMe(String name) throws GreeterException;
-
+    Map<GreetingPhrase, String> greetMe(String name);
+    GreetingPhrase [] greetMe(GreeterData name) throws GreeterException;
 }

Modified: cxf/dosgi/trunk/systests/common/src/main/java/org/apache/cxf/dosgi/systests/common/AbstractBasicPublishHookTest.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests/common/src/main/java/org/apache/cxf/dosgi/systests/common/AbstractBasicPublishHookTest.java?rev=814684&r1=814683&r2=814684&view=diff
==============================================================================
--- cxf/dosgi/trunk/systests/common/src/main/java/org/apache/cxf/dosgi/systests/common/AbstractBasicPublishHookTest.java (original)
+++ cxf/dosgi/trunk/systests/common/src/main/java/org/apache/cxf/dosgi/systests/common/AbstractBasicPublishHookTest.java Mon Sep 14 15:12:19 2009
@@ -27,6 +27,7 @@
 import java.util.Map;
 
 import org.apache.cxf.aegis.databinding.AegisDatabinding;
+import org.apache.cxf.dosgi.samples.greeter.GreeterData;
 import org.apache.cxf.dosgi.samples.greeter.GreeterException;
 import org.apache.cxf.dosgi.samples.greeter.GreeterService;
 import org.apache.cxf.dosgi.samples.greeter.GreetingPhrase;
@@ -110,11 +111,35 @@
         assertNotNull(greeter);
         
         Map<GreetingPhrase, String> greetings = greeter.greetMe("Fred");
-
         assertEquals("Fred", greetings.get(new GreetingPhrase("Hello")));
         
         try {
-            greeter.greetMe("Stranger");
+            class GreeterDataImpl implements GreeterData {
+                private String name;
+                private int age;
+                private boolean exception;
+
+                GreeterDataImpl(String n, int a, boolean ex) {
+                    name = n;
+                    age = a;
+                    exception = ex;
+                }
+                
+                public String getName() {
+                    return name;
+                }
+
+                public int getAge() {
+                    return age;
+                }
+
+                public boolean isException() {
+                    return exception;
+                }                
+            }
+            
+            GreeterData gd = new GreeterDataImpl("Stranger", 11, true);
+            greeter.greetMe(gd);
             fail("GreeterException has to be thrown");
         } catch (GreeterException ex) {
             assertEquals("Wrong exception message", 

Modified: cxf/dosgi/trunk/systests/common/src/main/java/org/apache/cxf/dosgi/systests/common/AbstractListenerHookServiceListenerTest.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests/common/src/main/java/org/apache/cxf/dosgi/systests/common/AbstractListenerHookServiceListenerTest.java?rev=814684&r1=814683&r2=814684&view=diff
==============================================================================
--- cxf/dosgi/trunk/systests/common/src/main/java/org/apache/cxf/dosgi/systests/common/AbstractListenerHookServiceListenerTest.java (original)
+++ cxf/dosgi/trunk/systests/common/src/main/java/org/apache/cxf/dosgi/systests/common/AbstractListenerHookServiceListenerTest.java Mon Sep 14 15:12:19 2009
@@ -28,6 +28,7 @@
 import java.util.concurrent.FutureTask;
 
 import org.apache.cxf.aegis.databinding.AegisDatabinding;
+import org.apache.cxf.dosgi.samples.greeter.GreeterData;
 import org.apache.cxf.dosgi.samples.greeter.GreeterException;
 import org.apache.cxf.dosgi.samples.greeter.GreeterService;
 import org.apache.cxf.dosgi.samples.greeter.GreetingPhrase;
@@ -191,15 +192,8 @@
     }
     
     private class GreeterServiceImpl implements GreeterService {
-
-        private final static String STRANGER_NAME = "Stranger";
-                
-        public Map<GreetingPhrase, String> greetMe(String name) 
-            throws GreeterException {
-
-            if (name.equals(STRANGER_NAME)) {
-                throw new GreeterException(name);
-            }
+        public Map<GreetingPhrase, String> greetMe(String name) {
+            System.out.println("Invoking: greetMe(" + name + ")");
             
             Map<GreetingPhrase, String> greetings = 
                 new HashMap<GreetingPhrase, String>();
@@ -213,7 +207,24 @@
             return greetings;
         }
 
-    } 
+        public GreetingPhrase [] greetMe(GreeterData gd) throws GreeterException {
+            if (gd.isException()) {
+                System.out.println("Throwing custom exception from: greetMe(" + gd.getName() + ")");
+                throw new GreeterException(gd.getName());
+            }
+            
+            String details = gd.getName() + "(" + gd.getAge() + ")";
+            System.out.println("Invoking: greetMe(" + details + ")");
+            
+            GreetingPhrase [] greetings = new GreetingPhrase [] {
+                new GreetingPhrase("Howdy " + details),
+                new GreetingPhrase("Hallo " + details),
+                new GreetingPhrase("Ni hao " + details)
+            };
+            
+            return greetings;
+        }
+    }
     
     private Server startServer(String address, Class<?> type, Object impl) {
         ServerFactoryBean factory = new ServerFactoryBean();