You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by aj...@apache.org on 2005/06/03 10:12:50 UTC
svn commit: r179743 [2/2] - in
/webservices/axis/trunk/java/modules/samples/src/sample: ./ amazon/
amazon/amazonSimpleQueueService/ amazon/amazonSimpleQueueService/util/
google/ google/search/
Added: webservices/axis/trunk/java/modules/samples/src/sample/google/search/ClientUtil.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/sample/google/search/ClientUtil.java?rev=179743&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/sample/google/search/ClientUtil.java (added)
+++ webservices/axis/trunk/java/modules/samples/src/sample/google/search/ClientUtil.java Fri Jun 3 01:12:48 2005
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package sample.google.search;
+
+import org.apache.axis.om.*;
+import org.apache.axis.soap.SOAPFactory;
+import org.apache.axis.soap.SOAPEnvelope;
+import org.apache.axis.context.ConfigurationContextFactory;
+import org.apache.axis.context.ConfigurationContext;
+import org.apache.axis.context.MessageContext;
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.deployment.DeploymentException;
+
+/**
+ * Builds the MessageContext as called by AsynchronousClient
+ * First build the request soap envilope
+ * then build a messageContext and soap envelope is attached to it
+ *
+ * @author Gayan Asanka (gayan@opensource.lk)
+ */
+public class ClientUtil {
+
+ /** Soap request is included to this and pass it to sendMsg() in AsynchronousClient */
+ static MessageContext msgContext;
+
+ /**
+ * method getMessageContext
+ * @return msgContext
+ */
+ public static MessageContext getMessageContext() throws DeploymentException {
+ OMNamespace namespace,defNs;
+ OMElement operation,part1,part2,part3,part4,part5,part6,part7,part8,part9,part10;
+
+ String str_ST_index = Integer.toString(AsynchronousClient.StartIndex);
+
+ defNs = OMAbstractFactory.getSOAP11Factory().createOMNamespace("", "");
+ SOAPFactory omFactory = OMAbstractFactory.getSOAP11Factory();
+ SOAPEnvelope envelope = omFactory.getDefaultEnvelope();
+ namespace = envelope.declareNamespace(
+ "http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV");
+ namespace = envelope.declareNamespace(
+ "http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+ namespace = envelope.declareNamespace(
+ "http://www.w3.org/1999/XMLSchema-instance/", "xsi");
+ namespace = envelope.declareNamespace("http://www.w3.org/1999/XMLSchema",
+ "xsd");
+
+ operation = omFactory.createOMElement("doGoogleSearch", "urn:GoogleSearch", "ns1");
+ envelope.getBody().addChild(operation);
+ operation.addAttribute("SOAP-ENV:encordingStyle",
+ "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+ part1 = omFactory.createOMElement("key", defNs);
+ part1.addAttribute("xsi:type", "xsd:string", null);
+ part1.addChild(omFactory.createText(AsynchronousClient.key));
+ //a sample valid key "F0wt5EFQFHKxTs+rl3P+27o6D112BTWd"));
+
+ part2 = omFactory.createOMElement("q", defNs);
+ part2.addAttribute("xsi:type", "xsd:string", null);
+ part2.addChild(omFactory.createText(AsynchronousClient.search));
+
+ part3 = omFactory.createOMElement("start", defNs);
+ part3.addAttribute("xsi:type", "xsd:int", null);
+ part3.addChild(omFactory.createText(str_ST_index));
+
+ part4 = omFactory.createOMElement("maxResults", defNs);
+ part4.addAttribute("xsi:type", "xsd:int", null);
+ part4.addChild(omFactory.createText(AsynchronousClient.maxResults));
+
+ part5 = omFactory.createOMElement("filter", defNs);
+ part5.addAttribute("xsi:type", "xsd:boolean", null);
+ part5.addChild(omFactory.createText("true"));
+
+ part6 = omFactory.createOMElement("restrict", defNs);
+ part6.addAttribute("xsi:type", "xsd:string", null);
+
+ part7 = omFactory.createOMElement("safeSearch", defNs);
+ part7.addAttribute("xsi:type", "xsd:boolean", null);
+ part7.addChild(omFactory.createText("false"));
+
+ part8 = omFactory.createOMElement("lr", defNs);
+ part8.addAttribute("xsi:type", "xsd:string", null);
+
+ part9 = omFactory.createOMElement("ie", defNs);
+ part9.addAttribute("xsi:type", "xsd:string", null);
+ part9.addChild(omFactory.createText("latin1"));
+
+ part10 = omFactory.createOMElement("oe", defNs);
+ part10.addAttribute("xsi:type", "xsd:string", null);
+ part10.addChild(omFactory.createText("latin1"));
+
+ operation.addChild(part10);
+ operation.addChild(part9);
+ operation.addChild(part8);
+ operation.addChild(part7);
+ operation.addChild(part6);
+ operation.addChild(part5);
+ operation.addChild(part4);
+ operation.addChild(part3);
+ operation.addChild(part2);
+ operation.addChild(part1);
+
+ ConfigurationContextFactory fac = new ConfigurationContextFactory();
+ ConfigurationContext configContext = fac.buildClientEngineContext("doGoogleSearch");
+ try {
+ msgContext = new MessageContext(configContext);
+ } catch (AxisFault axisFault) {
+ axisFault.printStackTrace();
+ }
+ msgContext.setEnvelope(envelope);
+ return msgContext;
+ }
+}
+
+
+
Added: webservices/axis/trunk/java/modules/samples/src/sample/google/search/GUIHandler.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/sample/google/search/GUIHandler.java?rev=179743&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/sample/google/search/GUIHandler.java (added)
+++ webservices/axis/trunk/java/modules/samples/src/sample/google/search/GUIHandler.java Fri Jun 3 01:12:48 2005
@@ -0,0 +1,295 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package sample.google.search;
+
+import org.apache.axis.engine.AxisFault;
+
+import javax.swing.*;
+import java.awt.event.KeyListener;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.ActionEvent;
+import java.awt.*;
+import java.io.*;
+
+/**
+ * Build and desplay the GUI
+ * implements both KeyListner and ActionListner
+ * KeyListner is used to detect space or Enter key at textField
+ * ActionListner is used for menu cammands
+ * Thread is run to isolate the GUI from internal actions
+ *
+ * @author Gayan Asanka (gayan@opensource.lk)
+ */
+public class GUIHandler implements KeyListener, ActionListener, Runnable {
+
+ /**
+ * Results are desplayed here
+ */
+ private static JEditorPane text;
+
+ /**
+ * Query parameters typed here
+ */
+ private static JTextField textBox;
+
+ /**
+ * Buttons clicked to view more results and back
+ */
+ private static JButton next, back;
+
+ /**
+ * Menu commands to set the key and maximum no of results per page
+ */
+ private static JMenuItem mnuKey, mnuMaxResults;
+
+ /**
+ * Build the GUI using awt and swing components
+ */
+ public void buildFrame() {
+ JFrame frame;
+ SpringLayout layout;
+ JMenuBar menuBar;
+ JMenu setMenu;
+ Spring xSpring, ySpring, hSpring, wSpring;
+
+ frame = new JFrame("Google Search");
+ frame.setResizable(false);
+ layout = new SpringLayout();
+ Container pane = frame.getContentPane();
+ pane.setLayout(layout);
+
+ menuBar = new JMenuBar();
+ frame.setJMenuBar(menuBar);
+ setMenu = new JMenu("Set"); // Create Set menu
+ menuBar.add(setMenu);
+ setMenu.addActionListener(this);
+ mnuKey = new JMenuItem("Key");
+ mnuMaxResults = new JMenuItem("Result per page");
+
+ setMenu.add(mnuKey);
+ setMenu.add(mnuMaxResults);
+
+ mnuKey.addActionListener(this);
+ mnuMaxResults.addActionListener(this);
+
+ Toolkit theKit = frame.getToolkit(); // Get the window toolkit
+ Dimension wndSize = theKit.getScreenSize(); // Get screen size
+
+ // Set the position to screen center & size to half screen size
+ frame.setBounds(wndSize.width / 6, wndSize.height / 10, // Position
+ wndSize.width * 3 / 5, wndSize.height * 3 / 4); // Size
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ next = new JButton("More Results");
+ back = new JButton("Previous Page");
+ back.setVisible(false);
+ text = new JEditorPane();
+ text.setEditable(false);
+ text.setContentType("text/html");
+ text.addHyperlinkListener(new LinkFollower());
+
+ JScrollPane scroll = new JScrollPane(text, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+ JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ pane.add(scroll);
+ pane.add(next);
+ pane.add(back);
+ next.addActionListener(this);
+ back.addActionListener(this);
+ textBox = new JTextField();
+ textBox.addKeyListener(this);
+
+ pane.add(textBox);
+
+ SpringLayout.Constraints textBoxConstraints = layout.getConstraints(textBox);
+ xSpring = Spring.constant(0); // Spring well use for X
+ ySpring = Spring.constant(0); // Spring well use for Y
+ wSpring = Spring.constant(frame.getBounds().width); // Spring well use for width
+ hSpring = Spring.constant(30); // Strut well use for height
+ textBoxConstraints.setWidth(wSpring); // Set component width constraint
+ textBoxConstraints.setHeight(hSpring);
+ textBoxConstraints.setX(xSpring); // Set the WEST edge constraint
+ textBoxConstraints.setY(ySpring);
+
+ SpringLayout.Constraints scrollConstraints = layout.getConstraints(scroll);
+ xSpring = Spring.constant(0); // Spring well use for X
+ ySpring = Spring.constant(30); // Spring well use for Y
+ wSpring = Spring.constant(frame.getBounds().width); // Spring well use for width
+ hSpring = Spring.constant(450); // Strut well use for height
+ scrollConstraints.setWidth(wSpring); // Set component width constraint
+ scrollConstraints.setHeight(hSpring);
+ scrollConstraints.setX(xSpring); // Set the WEST edge constraint
+ scrollConstraints.setY(ySpring); // Set the NORTH edge constraint
+
+ SpringLayout.Constraints backBtnConstraints = layout.getConstraints(back);
+ xSpring = Spring.constant(50); // Spring well use for X
+ ySpring = Spring.constant(480); // Spring well use for Y
+ wSpring = Spring.constant(200); // Spring well use for width
+ hSpring = Spring.constant(30); // Strut well use for height
+ backBtnConstraints.setWidth(wSpring); // Set component width constraint
+ backBtnConstraints.setHeight(hSpring);
+ backBtnConstraints.setX(xSpring); // Set the WEST edge constraint
+ backBtnConstraints.setY(ySpring);
+
+ SpringLayout.Constraints nextBtnConstraints = layout.getConstraints(next);
+ xSpring = Spring.constant(250); // Spring well use for X
+ ySpring = Spring.constant(480); // Spring well use for Y
+ wSpring = Spring.constant(200); // Spring well use for width
+ hSpring = Spring.constant(30); // Strut well use for height
+ nextBtnConstraints.setWidth(wSpring); // Set component width constraint
+ nextBtnConstraints.setHeight(hSpring);
+ nextBtnConstraints.setX(xSpring); // Set the WEST edge constraint
+ nextBtnConstraints.setY(ySpring);
+ frame.setVisible(true);
+ }
+
+ /**
+ * method showResults
+ * desplay results by ClientCallbackHandler
+ *
+ * @param results
+ */
+ protected static void showResults(String results) {
+ text.setText(results);
+ }
+
+ /**
+ * method setKey
+ * Get the key from user via an inputDialog and
+ * store it in the properties file
+ */
+ protected void setKey() {
+ File propertyFile;
+
+ AsynchronousClient.key = JOptionPane.showInputDialog(null, "Enter the license Key");
+ if (AsynchronousClient.key == null) {
+ setKey();
+ }
+ OutputStream propOut;
+ try {
+ String workingDir = System.getProperty("user.dir");
+ propertyFile =
+ new File(
+ workingDir + File.separator + "samples" + File.separator +
+ "/key.properties");
+ propOut = new FileOutputStream(propertyFile);
+
+ AsynchronousClient.prop.setProperty("gglKey", AsynchronousClient.key);
+ AsynchronousClient.prop.store(propOut, "License Key");
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * method keyTyped
+ * fires when user typing in TextField textBox
+ * act when detects space and Enter key only
+ *
+ * @param e
+ */
+ public void keyTyped(KeyEvent e) {
+ System.out.println("inside");
+ int event = e.getKeyChar();
+
+ if (event == KeyEvent.VK_SPACE || event == KeyEvent.VK_ENTER) {
+ AsynchronousClient.search = textBox.getText().trim();
+ AsynchronousClient.search.trim();
+ System.out.println(textBox.getText());
+ if (!AsynchronousClient.prevSearch.equals(AsynchronousClient.search)) {
+ AsynchronousClient.doSearch = true;
+ }
+ }
+ }
+
+ public void keyPressed(KeyEvent e) {
+
+ }
+
+ public void keyReleased(KeyEvent s) {
+
+ }
+
+ /**
+ * method actionPerformed
+ * Detects menu click events and btn click events
+ * set flags
+ * @param e
+ */
+ public void actionPerformed(ActionEvent e) {
+ int i;
+
+ System.out.println("action is " + e.getSource());
+ if (e.getSource() == next) {
+ i = Integer.parseInt(AsynchronousClient.maxResults);
+ AsynchronousClient.StartIndex = AsynchronousClient.StartIndex + i;
+ back.setVisible(true);
+ AsynchronousClient.doSearch = true;
+ }
+ if (e.getSource() == back) {
+ if (AsynchronousClient.StartIndex != 0) {
+ i = Integer.parseInt(AsynchronousClient.maxResults);
+ AsynchronousClient.StartIndex = AsynchronousClient.StartIndex - i;
+ if (AsynchronousClient.StartIndex == 0) {
+ back.setVisible(false);
+ }
+ AsynchronousClient.doSearch = true;
+ }
+ }
+ if (e.getSource() == mnuMaxResults) {
+ do {
+ System.out.println("come to the place");
+ AsynchronousClient.maxResults =
+ JOptionPane.showInputDialog(null,
+ "Enter the number of maximum results per page (Maximum allowed is 10)");
+ } while (Integer.parseInt(AsynchronousClient.maxResults) > 10 ||
+ Integer.parseInt(AsynchronousClient.maxResults) < 0);
+ }
+ if (e.getSource() == mnuKey) {
+ setKey();
+ }
+ }
+
+ /**
+ * method run
+ * check the flag doSearch
+ * if it's set, call sendMsg method
+ */
+ public void run() {
+ while (true) {
+ AsynchronousClient.search.toString().trim();
+ if (AsynchronousClient.doSearch == true) {
+ if (!AsynchronousClient.search.equals(AsynchronousClient.prevSearch)) {
+ AsynchronousClient.StartIndex = 0;
+ }
+ try {
+ AsynchronousClient.doSearch = false;
+ AsynchronousClient.sendMsg();
+ } catch (AxisFault axisFault) {
+ axisFault.printStackTrace();
+ }
+ }
+ try {
+ Thread.sleep(50);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
\ No newline at end of file
Added: webservices/axis/trunk/java/modules/samples/src/sample/google/search/LinkFollower.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/sample/google/search/LinkFollower.java?rev=179743&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/sample/google/search/LinkFollower.java (added)
+++ webservices/axis/trunk/java/modules/samples/src/sample/google/search/LinkFollower.java Fri Jun 3 01:12:48 2005
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package sample.google.search;
+
+import javax.swing.*;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
+import java.awt.*;
+import java.io.IOException;
+
+/**
+ * class LinkFollower
+ * Listen to HyperLink actions and Open Simple web browser to open URLs
+ *
+ * @author Gayan Asanka (gayan@opensource.lk)
+ */
+class LinkFollower implements HyperlinkListener, Runnable {
+
+
+ /**
+ * Flag to used by the thread, If set, thread opens a URL in the Simple Web Browser
+ */
+ protected static boolean showURL = false;
+
+ /**
+ * Used as the root of the Simple web Browser, only one instance is needed
+ */
+ private static JEditorPane jep;
+
+ /**
+ * Used for the Simple web Browser, only one instance is needed
+ */
+ private static JFrame f;
+ private static JPanel contentPane;
+ private static JScrollPane scrollPane;
+
+ /**
+ * Flag to prevent duplicating Building of the Simple web browser Window
+ */
+ private static boolean builded = false;
+
+ /**
+ * Keep the URL of the last Hyperlink click event
+ */
+ private static String currentURL;
+
+ /**
+ * Constructor
+ */
+ public LinkFollower() {
+
+ }
+
+ /**
+ * method hyperlinkUpdate
+ * The action is to show the page of the URL the user clicked on.
+ *
+ * @param evt the event. We only care when its type is ACTIVATED.
+ */
+ public void hyperlinkUpdate(HyperlinkEvent evt) {
+ if (evt.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+
+ /** Window is not built yet, so build it */
+
+ if (builded == false) {
+ buildURLWindaw();
+ }
+ try {
+ currentURL = evt.getURL().toString();
+ System.out.println(currentURL);
+ //System.out.println("Going to " + currentURL);
+ showURL = true;
+
+ } catch (Exception e) {
+ System.out.println("ERROR: Trouble fetching url");
+ }
+ }
+ }
+
+ /**
+ * method setPage
+ * Open the URL in the simple web browser window by replacing the previous one
+ */
+ protected void setPage() {
+ jep.setEditable(false);
+ jep.addHyperlinkListener(new LinkFollower());
+ f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+
+ contentPane.setLayout(new BorderLayout());
+ contentPane.setPreferredSize(new Dimension(400, 100));
+ contentPane.add(scrollPane, BorderLayout.CENTER);
+
+ f.pack();
+ f.setSize(640, 360);
+ f.setVisible(true);
+ try {
+ jep.setPage(currentURL);
+ //jep.setPage("http://www.google.com/");
+ } catch (IOException e) {
+ System.err.println(e);
+ }
+ }
+
+ /**
+ * method buildURLWindow
+ * Build the Simple Web Broser but not displayed
+ */
+ private void buildURLWindaw() {
+ builded = true;
+ jep = new JEditorPane();
+ f = new JFrame("Simple Web Browser");
+ contentPane = (JPanel) f.getContentPane();
+ scrollPane = new JScrollPane(jep);
+ }
+
+ /**
+ * method run
+ * check the showURL flag and if set, open the url in simple Web Browser
+ */
+ public void run() {
+ while (true) {
+ if (showURL == true) {
+ this.setPage();
+ showURL = false;
+ }
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
+
Added: webservices/axis/trunk/java/modules/samples/src/sample/google/search/key.properties
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/sample/google/search/key.properties?rev=179743&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/sample/google/search/key.properties (added)
+++ webservices/axis/trunk/java/modules/samples/src/sample/google/search/key.properties Fri Jun 3 01:12:48 2005
@@ -0,0 +1,3 @@
+#License Key
+#Wed Jun 01 15:28:16 LKT 2005
+Key=F0wt5EFQFHKxTs+rl3P+27o6D112BTWd