/* * Copyright 2011 the original author or authors. * * 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 org.springframework.remoting.avro; import junit.framework.Assert; import org.apache.avro.AvroRemoteException; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.After; import org.junit.Test; import org.springframework.obm.avro.crm.Crm; import org.springframework.obm.avro.crm.Customer; import org.springframework.remoting.avro.clients.SaslTransceiverCreationCallback; import org.springframework.remoting.avro.servers.SaslServerCreationCallback; import org.springframework.util.ClassUtils; import java.util.Random; /** * @author Josh Long */ public class TestServiceExportAndConsumption { Log log = LogFactory.getLog(getClass()); SaslTransceiverCreationCallback transceiverCreationCallback = new SaslTransceiverCreationCallback(); SaslServerCreationCallback serverCreationCallback = new SaslServerCreationCallback(); AvroExporter avroExporter; static class MyCrm implements Crm { static private Random randomIdGenerator = new Random(); @Override public Customer createCustomer(CharSequence fn, CharSequence ln, CharSequence email) throws AvroRemoteException { Customer c = new Customer(); c.email = email; c.lastName = ln; c.firstName = fn; c.id = randomIdGenerator.nextInt(); return c; } } @Test public void testCreatingAServer() throws Throwable { MyCrm crmImpl = new MyCrm(); avroExporter = new AvroExporter(); avroExporter.setService(crmImpl); avroExporter.setServiceInterface(Crm.class); avroExporter.setServerCreationCallback(serverCreationCallback); avroExporter.setBeanClassLoader(ClassUtils.getDefaultClassLoader()); avroExporter.afterPropertiesSet(); avroExporter.start(); AvroProxyFactoryBean<Crm> proxyFactoryBean = new AvroProxyFactoryBean<Crm>(); proxyFactoryBean.setServiceInterface(Crm.class); proxyFactoryBean.setTransceiverCreationCallback(transceiverCreationCallback); proxyFactoryBean.afterPropertiesSet(); Crm crmClient = proxyFactoryBean.getObject(); Customer customer = crmClient.createCustomer("Josh", "Long", "email@email.com"); if (log.isDebugEnabled()) { log.debug("received result " + ToStringBuilder.reflectionToString(customer)); } Assert.assertNotNull(customer); } @After public void stop() throws Throwable { Assert.assertTrue(avroExporter != null); avroExporter.stop(); } }