org.glassfish.jaxb.runtime.v2.runtime.property.ArrayProperty Maven / Gradle / Ivy
/*
* Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0, which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.glassfish.jaxb.runtime.v2.runtime.property;
import org.glassfish.jaxb.runtime.api.AccessorException;
import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimePropertyInfo;
import org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl;
import org.glassfish.jaxb.runtime.v2.runtime.reflect.Accessor;
import org.glassfish.jaxb.runtime.v2.runtime.reflect.Lister;
/**
* {@link Property} implementation for multi-value properties
* (including arrays and collections.)
*
* @author Kohsuke Kawaguchi ([email protected])
*/
abstract class ArrayProperty extends PropertyImpl {
protected final Accessor acc;
protected final Lister lister;
protected ArrayProperty(JAXBContextImpl context, RuntimePropertyInfo prop) {
super(context,prop);
assert prop.isCollection();
lister = Lister.create(
Utils.REFLECTION_NAVIGATOR.erasure(prop.getRawType()),prop.id(),prop.getAdapter());
assert lister!=null;
acc = prop.getAccessor().optimize(context);
assert acc!=null;
}
public void reset(BeanT o) throws AccessorException {
lister.reset(o,acc);
}
public final String getIdValue(BeanT bean) {
// mutli-value property can't be ID
return null;
}
}