Java tutorial
/** * Copyright 2014 the original author or authors. * * Licensed under the Baidu company (the "License"); * you may not use this file except in compliance with the License. * */ package com.baidu.jprotobuf.rpc.server; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; import org.springframework.util.Assert; import com.baidu.bjf.remoting.protobuf.IDLProxyObject; import com.baidu.jprotobuf.rpc.support.IDLProxyCreator; import com.baidu.jprotobuf.rpc.support.IOUtils; /** * Export protobuf RPC service for IDL script file * * @author xiemalin * @since 1.0.0 * @see HttpRequestHandlerServlet */ public class IDLServiceExporter extends AbstractServiceExporter implements InitializingBean { /** * input protobuf IDL */ private Resource inputIDL; /** * input protobuf IDL defined object name for multiple message object * defined select */ private String inputIDLObjectName; /** * output protobuf IDL */ private Resource outputIDL; /** * output protobuf IDL defined object name for multiple message object * defined select */ private String outputIDLObjectName; private IDLProxyObject inputIDLProxyObject; private IDLProxyObject outputIDLProxyObject; private String inputIDLStr; private String outputIDLStr; /* * (non-Javadoc) * * @see * org.springframework.beans.factory.InitializingBean#afterPropertiesSet() */ @Override public void afterPropertiesSet() throws Exception { Assert.notNull(getInvoker(), "property 'invoker' is null."); Assert.hasText(getServiceName(), "property 'serviceName' is blank."); if (inputIDL != null) { inputIDLStr = IOUtils.toString(inputIDL.getInputStream()); } if (outputIDL != null) { outputIDLStr = IOUtils.toString(outputIDL.getInputStream()); } IDLProxyCreator idlProxyCreator = new IDLProxyCreator(inputIDLStr, outputIDLStr); inputIDLProxyObject = idlProxyCreator.getInputProxyObject(inputIDLObjectName); outputIDLProxyObject = idlProxyCreator.getOutputProxyObject(outputIDLObjectName); } public IDLProxyObject execute(IDLProxyObject input) throws Exception { IDLProxyObject output = getOutputIDLProxyObject(); getInvoker().invoke(input, output); return output; } /** * get the inputIDLProxyObject * @return the inputIDLProxyObject */ public IDLProxyObject getInputProxyObject() { if (inputIDLProxyObject != null) { return inputIDLProxyObject.newInstnace(); } return inputIDLProxyObject; } /** * set inputIDLProxyObject value to inputIDLProxyObject * @param inputIDLProxyObject the inputIDLProxyObject to set */ protected void setInputIDLProxyObject(IDLProxyObject inputIDLProxyObject) { this.inputIDLProxyObject = inputIDLProxyObject; } /** * get the outputIDLProxyObject * @return the outputIDLProxyObject */ protected IDLProxyObject getOutputIDLProxyObject() { if (outputIDLProxyObject != null) { return outputIDLProxyObject.newInstnace(); } return outputIDLProxyObject; } /** * set outputIDLProxyObject value to outputIDLProxyObject * @param outputIDLProxyObject the outputIDLProxyObject to set */ protected void setOutputIDLProxyObject(IDLProxyObject outputIDLProxyObject) { this.outputIDLProxyObject = outputIDLProxyObject; } /** * set inputIDLObjectName value to inputIDLObjectName * @param inputIDLObjectName the inputIDLObjectName to set */ public void setInputIDLObjectName(String inputIDLObjectName) { this.inputIDLObjectName = inputIDLObjectName; } /** * set outputIDLObjectName value to outputIDLObjectName * @param outputIDLObjectName the outputIDLObjectName to set */ public void setOutputIDLObjectName(String outputIDLObjectName) { this.outputIDLObjectName = outputIDLObjectName; } /** * set inputIDL value to inputIDL * @param inputIDL the inputIDL to set */ public void setInputIDL(Resource inputIDL) { this.inputIDL = inputIDL; } /** * set outputIDL value to outputIDL * @param outputIDL the outputIDL to set */ public void setOutputIDL(Resource outputIDL) { this.outputIDL = outputIDL; } /* (non-Javadoc) * @see com.baidu.jprotobuf.rpc.server.ServiceExporter#getInputIDL() */ @Override public String getInputIDL() { return inputIDLStr; } /* (non-Javadoc) * @see com.baidu.jprotobuf.rpc.server.ServiceExporter#getOutputIDL() */ @Override public String getOutputIDL() { return outputIDLStr; } }