*  Copyright 2007-2008 Yoav Abrahami 
 *  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 com.abra.j2xb.exampleBeans.customType; 
import com.abra.j2xb.beans.propertyEditors.MOPropertyEditor; 
import com.abra.j2xb.beans.model.MOValueValidationResult; 
import com.abra.j2xb.beans.model.MOPropertySimpleTypeDescriptor; 
import com.abra.j2xb.beans.xmlBinding.XmlValue; 
import com.abra.j2xb.beans.exceptions.MOBeansException; 
import com.abra.j2xb.annotations.xmlAnnotations.MoXmlBaseSimpleType; 
 * @author Yoav Abrahami 
 * @version 1.0, May 1, 2008 
 * @since   JDK1.5 
public class IPAddressPropertyEditor implements MOPropertyEditor { 
  public Object fromString(Class<?> propertyValueType, String value) { 
    return new IPAddressValue(value); 
  public String toString(Class<?> propertyValueType, Object value) { 
    return value.toString(); 
  public MOValueValidationResult validateStringEncoding(Class propertyValueType, String value) { 
    if (IPAddressValue.isValidStringValue(value)) 
      return new MOValueValidationResult(); 
      return new MOValueValidationResult(false, propertyValueType, 
              String.format("the value [%s] is not a valid ip address", value)); 
  public Object fromXmlValue(MOPropertySimpleTypeDescriptor simpleTypeDescriptor, XmlValue value) throws MOBeansException { 
    return new IPAddressValue((String)value.getValue()); 
  public XmlValue toXmlValue(MOPropertySimpleTypeDescriptor simpleTypeDescriptor, Object value) { 
    return new XmlValue(value.toString(), MoXmlBaseSimpleType.xmlString); 
  public boolean isCompatibleSimpleType(MoXmlBaseSimpleType xmlSimpleType) { 
    return xmlSimpleType == MoXmlBaseSimpleType.xmlString; 
  public MoXmlBaseSimpleType getXmlDefaultSimpleType(MoXmlBaseSimpleType xmlSimpleType) { 
    return MoXmlBaseSimpleType.xmlString; 
  public String[] getEnumerations(Class<?> propertyValueType) { 
    return new String[0]; 
  public boolean supportsStringValidations() { 
    return false; 
  public boolean supportsNumberValidations() { 
    return false; 
  public int compareValues(Object obj_a, Object obj_b) { 
    return obj_a.toString().compareTo(obj_b.toString());