Java tutorial
/* * Copyright 2013 The Apache Software Foundation. * * 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.apache.juddi.validation; import java.util.List; import javax.xml.ws.BindingProvider; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.juddi.api.impl.UDDIValueSetValidationImpl; import org.apache.juddi.config.Property; import org.apache.juddi.v3.client.UDDIConstants; import org.apache.juddi.v3.client.UDDIService; import org.apache.juddi.v3.error.ErrorMessage; import org.apache.juddi.v3.error.ValueNotAllowedException; import org.uddi.api_v3.BindingTemplate; import org.uddi.api_v3.BusinessEntity; import org.uddi.api_v3.BusinessService; import org.uddi.api_v3.DispositionReport; import org.uddi.api_v3.PublisherAssertion; import org.uddi.api_v3.TModel; import org.uddi.v3_service.UDDIValueSetValidationPortType; import org.uddi.vs_v3.ValidateValues; /** * This class handles when this UDDI server receives some kind of SaveXXX * Publish API request and the request uses a tModel KeyedReference that is both * "checked" and has a {@link UDDIConstants#IS_VALIDATED_BY} property. The value of the * IS_VALIDATED_BY reference points to a BindingTemplate which should in turn * point to a Web Service that handles validation requests for the tModel * KeyedReferences. * * Short Story long, this class handles the external callout. It also handles * classpath:/ URLs (which is currently just jUDDI's implementation of VSV. * * @author Alex O'Ree * @see UDDIConstants * @since 3.3 */ public class ValidateValuesFromWebService { static final Log log = LogFactory.getLog(ValidateValuesFromWebService.class); private static UDDIValueSetValidationPortType getPort(String url) throws ValueNotAllowedException { UDDIService svc = new UDDIService(); UDDIValueSetValidationPortType vsv = svc.getUDDIValueSetValidationPort(); if (url == null || url.trim().length() == 0) { log.error("VSV Validation Failed: Calling Url is null"); ValueNotAllowedException x = new ValueNotAllowedException( new ErrorMessage("errors.valuesetvalidation.invalidurl")); throw x; } else if (url.startsWith(Property.DEFAULT_BASE_URL) || url.startsWith(Property.DEFAULT_BASE_URL_SECURE)) { vsv = new UDDIValueSetValidationImpl(); } else if (url.startsWith("classpath:/")) { try { String clz = url.substring(11); Class<UDDIValueSetValidationPortType> forName = (Class<UDDIValueSetValidationPortType>) Class .forName(clz); vsv = forName.newInstance(); } catch (Exception ex) { log.error("VSV Validation Failed: Cannot locate class from url " + url, ex); } } else if (url.toLowerCase().startsWith("http")) { //external service, stick with log.info("Calling External VSV Service"); ((BindingProvider) vsv).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url); } else { log.warn("Unable to figure out how to use the URL " + url + " as a Value Set Validation Service transport mechanism."); ValueNotAllowedException x = new ValueNotAllowedException( new ErrorMessage("errors.valuesetvalidation.invalidurl", url)); throw x; } return vsv; } public static void ValidateTModel(String url, List<TModel> obj) throws ValueNotAllowedException { UDDIValueSetValidationPortType vsv = getPort(url); ValidateValues req = new ValidateValues(); req.getTModel().addAll(obj); try { DispositionReport validateValues = vsv.validateValues(req); } catch (Exception ex) { log.warn(ex.getMessage()); log.debug(ex.getMessage(), ex); ValueNotAllowedException x = new ValueNotAllowedException( new ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage())); throw x; } } public static void ValidateBinding(String url, List<BindingTemplate> obj) throws ValueNotAllowedException { UDDIValueSetValidationPortType vsv = getPort(url); ValidateValues req = new ValidateValues(); req.getBindingTemplate().addAll(obj); try { DispositionReport validateValues = vsv.validateValues(req); } catch (Exception ex) { log.warn(ex.getMessage()); log.debug(ex.getMessage(), ex); ValueNotAllowedException x = new ValueNotAllowedException( new ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage())); throw x; } } public static void ValidateService(String url, List<BusinessService> obj) throws ValueNotAllowedException { UDDIValueSetValidationPortType vsv = getPort(url); ValidateValues req = new ValidateValues(); req.getBusinessService().addAll(obj); try { DispositionReport validateValues = vsv.validateValues(req); } catch (Exception ex) { log.warn(ex.getMessage()); log.debug(ex.getMessage(), ex); ValueNotAllowedException x = new ValueNotAllowedException( new ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage())); throw x; } } public static void ValidateBusiness(String url, List<BusinessEntity> obj) throws ValueNotAllowedException { UDDIValueSetValidationPortType vsv = getPort(url); ValidateValues req = new ValidateValues(); req.getBusinessEntity().addAll(obj); try { DispositionReport validateValues = vsv.validateValues(req); } catch (Exception ex) { log.warn(ex.getMessage()); log.debug(ex.getMessage(), ex); ValueNotAllowedException x = new ValueNotAllowedException( new ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage())); throw x; } } public static void ValidatePubAss(String url, PublisherAssertion obj) throws ValueNotAllowedException { UDDIValueSetValidationPortType vsv = getPort(url); ValidateValues req = new ValidateValues(); req.getPublisherAssertion().add(obj); try { DispositionReport validateValues = vsv.validateValues(req); } catch (Exception ex) { log.warn(ex.getMessage()); log.debug(ex.getMessage(), ex); ValueNotAllowedException x = new ValueNotAllowedException( new ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage())); throw x; } } }