| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package sample.mtom.client; |
| |
| import java.io.File; |
| import java.io.FileNotFoundException; |
| import java.rmi.RemoteException; |
| import java.util.List; |
| import java.util.Map; |
| |
| import javax.activation.DataHandler; |
| import javax.activation.FileDataSource; |
| |
| import org.apache.axis2.Constants; |
| import org.apache.axis2.util.CommandLineOption; |
| import org.apache.axis2.util.CommandLineOptionParser; |
| import org.apache.axis2.util.OptionsValidator; |
| import org.apache.ws.axis2.mtomsample.MTOMSampleMTOMSampleSOAP11Port_httpStub; |
| |
| |
| public class Client { |
| |
| /** |
| * @param args |
| * @throws Exception |
| */ |
| public static void main(String[] args) throws Exception { |
| CommandLineOptionParser optionsParser = new CommandLineOptionParser( |
| args); |
| List invalidOptionsList = optionsParser |
| .getInvalidOptions(new OptionsValidator() { |
| public boolean isInvalid(CommandLineOption option) { |
| String optionType = option.getOptionType(); |
| return !("dest".equalsIgnoreCase(optionType) || "file" |
| .equalsIgnoreCase(optionType)); |
| } |
| }); |
| |
| if ((invalidOptionsList.size() > 0) || (args.length != 4)) { |
| // printUsage(); |
| System.out.println("Invalid Parameters."); |
| return; |
| } |
| |
| Map optionsMap = optionsParser.getAllOptions(); |
| |
| CommandLineOption fileOption = (CommandLineOption) optionsMap |
| .get("file"); |
| CommandLineOption destinationOption = (CommandLineOption) optionsMap |
| .get("dest"); |
| File file = new File(fileOption.getOptionValue()); |
| if (file.exists()) |
| transferFile(file, destinationOption.getOptionValue()); |
| else |
| throw new FileNotFoundException(); |
| } |
| |
| public static void transferFile(File file, String destination) |
| throws RemoteException { |
| // uncomment the following if you need to capture the messages from |
| // TCPMON. Please look at http://ws.apache.org/commons/tcpmon/tcpmontutorial.html |
| // to learn how to setup tcpmon |
| MTOMSampleMTOMSampleSOAP11Port_httpStub serviceStub = new MTOMSampleMTOMSampleSOAP11Port_httpStub( |
| //"http://localhost:8081/axis2/rest/MTOMSample" |
| ); |
| |
| // Enable MTOM in the client side |
| serviceStub._getServiceClient().getOptions().setProperty( |
| Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE); |
| //Increase the time out when sending large attachments |
| serviceStub._getServiceClient().getOptions().setTimeOutInMilliSeconds(10000); |
| |
| // Uncomment and fill the following if you want to have client side file |
| // caching switched ON. |
| /* |
| * serviceStub._getServiceClient().getOptions().setProperty( |
| * Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE); |
| * serviceStub._getServiceClient().getOptions().setProperty( |
| * Constants.Configuration.ATTACHMENT_TEMP_DIR, "your temp dir"); |
| * serviceStub._getServiceClient().getOptions().setProperty( |
| * Constants.Configuration.FILE_SIZE_THRESHOLD, "4000"); |
| */ |
| |
| // Populating the code generated beans |
| MTOMSampleMTOMSampleSOAP11Port_httpStub.AttachmentRequest attachmentRequest = new MTOMSampleMTOMSampleSOAP11Port_httpStub.AttachmentRequest(); |
| MTOMSampleMTOMSampleSOAP11Port_httpStub.AttachmentType attachmentType = new MTOMSampleMTOMSampleSOAP11Port_httpStub.AttachmentType(); |
| MTOMSampleMTOMSampleSOAP11Port_httpStub.Base64Binary base64Binary = new MTOMSampleMTOMSampleSOAP11Port_httpStub.Base64Binary(); |
| |
| // Creating a javax.activation.FileDataSource from the input file. |
| FileDataSource fileDataSource = new FileDataSource(file); |
| |
| // Create a dataHandler using the fileDataSource. Any implementation of |
| // javax.activation.DataSource interface can fit here. |
| DataHandler dataHandler = new DataHandler(fileDataSource); |
| base64Binary.setBase64Binary(dataHandler); |
| MTOMSampleMTOMSampleSOAP11Port_httpStub.ContentType_type0 param = new MTOMSampleMTOMSampleSOAP11Port_httpStub.ContentType_type0(); |
| param.setContentType_type0(dataHandler.getContentType()); |
| base64Binary.setContentType(param); |
| attachmentType.setBinaryData(base64Binary); |
| attachmentType.setFileName(destination); |
| attachmentRequest.setAttachmentRequest(attachmentType); |
| |
| MTOMSampleMTOMSampleSOAP11Port_httpStub.AttachmentResponse response = serviceStub.attachment(attachmentRequest); |
| System.out.println(response.getAttachmentResponse()); |
| } |
| |
| } |