1 /* 2 * Copyright 2006-2011 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package org.kuali.rice.shareddata.api.state; 18 19 import org.kuali.rice.core.api.exception.RiceIllegalArgumentException; 20 import org.kuali.rice.core.util.jaxb.ImmutableListAdapter; 21 import org.kuali.rice.shareddata.api.SharedDataConstants; 22 23 import javax.jws.WebMethod; 24 import javax.jws.WebParam; 25 import javax.jws.WebResult; 26 import javax.jws.WebService; 27 import javax.jws.soap.SOAPBinding; 28 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; 29 import java.util.List; 30 31 /** 32 * Service for interacting with {@link State States}. 33 */ 34 @WebService(name = "StateService", targetNamespace = SharedDataConstants.Namespaces.SHAREDDATA_NAMESPACE) 35 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) 36 public interface StateService { 37 38 /** 39 * Gets a {@link State} from a postal country code and postal state code. 40 * <p/> 41 * <p> 42 * This method will return null if the state does not exist. 43 * </p> 44 * <p/> 45 * <p> 46 * This method will return active or inactive states. 47 * </p> 48 * 49 * @param countryCode country code. cannot be blank. 50 * @param code state code. cannot be blank. 51 * @return a {@link State} or null 52 * @throws IllegalArgumentException country code or state code is blank 53 */ 54 @WebMethod(operationName = "getState") 55 @WebResult(name = "state") 56 State getState(@WebParam(name = "countryCode") String countryCode, @WebParam(name = "code") String code) 57 throws RiceIllegalArgumentException; 58 59 /** 60 * Finds all the {@link State States} for postal country code. 61 * <p/> 62 * <p> 63 * This method will always return an <b>immutable</b> Collection 64 * even when no values exist. 65 * </p> 66 * <p/> 67 * <p> 68 * This method will only return active states. 69 * </p> 70 * 71 * @param countryCode state code. cannot be blank. 72 * @return an immutable collection of states 73 * @throws IllegalArgumentException country code is blank 74 */ 75 @WebMethod(operationName = "findAllStatesInCountry") 76 @WebResult(name = "states") 77 @XmlJavaTypeAdapter(ImmutableListAdapter.class) 78 List<State> findAllStatesInCountry(@WebParam(name = "countryCode") String countryCode) 79 throws RiceIllegalArgumentException; 80 }