1 /* 2 * soapUI, copyright (C) 2004-2007 eviware.com 3 * 4 * soapUI is free software; you can redistribute it and/or modify it under the 5 * terms of version 2.1 of the GNU Lesser General Public License as published by 6 * the Free Software Foundation. 7 * 8 * soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 9 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 * See the GNU Lesser General Public License for more details at gnu.org. 11 */ 12 13 package com.eviware.soapui.impl.wsdl.submit.filters; 14 15 import com.eviware.soapui.impl.wsdl.WsdlRequest; 16 import com.eviware.soapui.impl.wsdl.submit.RequestFilter; 17 import com.eviware.soapui.model.iface.SubmitContext; 18 19 /*** 20 * RequestFilter that expands scripts in request content - not used for now, we need to fix validations first 21 * 22 * @author Ole.Matzura 23 */ 24 25 public class ScriptExpansionRequestFilter implements RequestFilter 26 { 27 public void filterRequest(SubmitContext context, WsdlRequest wsdlRequest) 28 { 29 /* String content = (String) context.getProperty( BaseHttpRequestTransport.REQUEST_CONTENT ); 30 31 content = expandScripts(context, content); 32 if( content != null ) 33 context.setProperty( BaseHttpRequestTransport.REQUEST_CONTENT, content ); 34 */ 35 } 36 37 public static String expandScripts(SubmitContext context, String content) 38 { 39 return content; 40 41 /*try 42 { 43 XmlObject obj = XmlObject.Factory.parse(content); 44 XmlCursor cursor = obj.newCursor(); 45 boolean replaced = false; 46 47 while (!cursor.isEnddoc()) 48 { 49 Node node = cursor.getDomNode(); 50 if ( node.getNodeType() == Node.ELEMENT_NODE) 51 { 52 if( node.getNamespaceURI().equals( "http://www.soapui.org/wsp" ) && node.getNodeName().equals( "script")) 53 { 54 GroovyShell shell = ScriptingSupport.createGroovyShell( null ); 55 String type = ((Element)node).getAttribute( "type" ); 56 String result = shell.evaluate( cursor.getTextValue() ).toString(); 57 58 if( type == null || type.length() == 0 || type.equals( "content")) 59 { 60 cursor.removeXml(); 61 cursor.insertChars( result ); 62 } 63 else if( type.equals( "markup" )) 64 { 65 Node parent = node.getParentNode(); 66 XmlOptions options = new XmlOptions(); 67 Map map = new HashMap(); 68 cursor.getAllNamespaces( map ); 69 70 StringBuffer buf = new StringBuffer(); 71 buf.append( "<result" ); 72 73 for( Iterator i = map.keySet().iterator(); i.hasNext(); ) 74 { 75 buf.append( " xmlns" ); 76 String next = (String) i.next(); 77 if( next.length() > 0 ) 78 buf.append( ':' ).append( next); 79 80 buf.append( "=\"" ).append( map.get( next )).append( "\"" ); 81 } 82 83 buf.append( ">" ).append( result ).append( "</result>" ); 84 result = buf.toString(); 85 86 XmlObject newObj = XmlObject.Factory.parse( result ); 87 Element docElm = ((Document)newObj.getDomNode()).getDocumentElement(); 88 89 parent.replaceChild( parent.getOwnerDocument().importNode( docElm.getFirstChild(), true ), node ); 90 } 91 92 replaced = true; 93 } 94 } 95 96 cursor.toNextToken(); 97 } 98 99 return replaced ? obj.toString() : null; 100 } 101 catch (Exception e) 102 { 103 UISupport.logError( e ); 104 return null; 105 } */ 106 } 107 }