/******************************************************************************* * Copyright (c) 2012, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Matt MacIvor - 2.4 - Initial Implementation ******************************************************************************/ package org.eclipse.persistence.testing.jaxb.annotations.xmlaccessorfactory; import java.lang.reflect.Field; import java.lang.reflect.Method; import javax.xml.bind.JAXBException; import com.sun.xml.bind.AccessorFactory; import com.sun.xml.bind.api.AccessorException; import com.sun.xml.bind.v2.runtime.reflect.Accessor; public class MyCustomAccessorFactory implements AccessorFactory { public Accessor createFieldAccessor(Class beanClass, Field field, boolean isReadOnly) throws JAXBException { return new MyCustomAccessorFactory.MyCustomFieldAccessor(beanClass); } public Accessor createPropertyAccessor(Class beanClass, Method getMethod, Method setMethod) throws JAXBException { return new MyCustomAccessorFactory.MyCustomPropertyAccessor(beanClass); } public static class MyCustomFieldAccessor extends Accessor { protected MyCustomFieldAccessor(Class valueType) { super(valueType); } public Object get(Object arg0) throws AccessorException { CustomerPackageLevel cust = (CustomerPackageLevel)arg0; return "package:field:" + cust.fieldProperty; } public void set(Object arg0, Object arg1) throws AccessorException { String value = (String)arg1; value = value.substring(value.lastIndexOf(":") + 1); ((CustomerPackageLevel)arg0).fieldProperty = value; } } public class MyCustomPropertyAccessor extends Accessor{ protected MyCustomPropertyAccessor(Class valueType) { super(valueType); } public Object get(Object arg0) throws AccessorException { CustomerPackageLevel cust = (CustomerPackageLevel)arg0; return "package:prop:" + cust.getProperty(); } public void set(Object arg0, Object arg1) throws AccessorException { String value = (String)arg1; value = value.substring(value.lastIndexOf(":") + 1); ((CustomerPackageLevel)arg0).setProperty(value); } } }