All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.tools.xjc.reader.xmlschema.bindinfo.BIEnum Maven / Gradle / Ivy

There is a newer version: 4.0.5
Show newest version
/*
 * Copyright (c) 1997, 2022 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 com.sun.tools.xjc.reader.xmlschema.bindinfo;

import java.util.HashMap;
import java.util.Map;

import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlTransient;
import javax.xml.namespace.QName;

import com.sun.tools.xjc.reader.Const;
import com.sun.tools.xjc.reader.xmlschema.SimpleTypeBuilder;

/**
 * Enumeration customization.
 * 

* This customization binds a simple type to a type-safe enum class. * The actual binding process takes place in {@link SimpleTypeBuilder}. * *

* This customization is acknowledged by {@link SimpleTypeBuilder}. * * @author * Kohsuke Kawaguchi ([email protected]) */ @XmlRootElement(name="typesafeEnumClass") public final class BIEnum extends AbstractDeclarationImpl { /** * If false, it means not to bind to a type-safe enum. * * this takes precedence over all the other properties of this class. */ @XmlAttribute(name="map") private boolean map = true; /** Gets the specified class name, or null if not specified. */ @XmlAttribute(name="name") public String className = null; /** * @see BIClass#getExistingClassRef() */ @XmlAttribute(name="ref") public String ref; /** * Gets the javadoc comment specified in the customization. * Can be null if none is specified. */ @XmlElement public final String javadoc = null; public boolean isMapped() { return map; } /** * Gets the map that contains {@code XML value -> BIEnumMember} pairs. * This table is built from {@code } customizations. * * Always return non-null. */ @XmlTransient public final Map members = new HashMap<>(); /** * Default constructor. */ public BIEnum() {} @Override public QName getName() { return NAME; } @Override public void setParent(BindInfo p) { super.setParent(p); for( BIEnumMember mem : members.values() ) mem.setParent(p); // if this specifies a reference to external class, // then it's OK even if noone actually refers this class. if(ref!=null) markAsAcknowledged(); } /** Name of this declaration. */ public static final QName NAME = new QName( Const.JAXB_NSURI, "enum" ); // setter method for JAXB runtime @XmlElement(name="typesafeEnumMember") private void setMembers(BIEnumMember2[] mems) { for (BIEnumMember2 e : mems) members.put(e.value,e); } /** * {@link BIEnumMember} used inside {@link BIEnum} has additional 'value' attribute. */ static class BIEnumMember2 extends BIEnumMember { /** * Default constructor. */ public BIEnumMember2() {} /** * The lexical representaion of the constant to which we are attaching. */ @XmlAttribute(required=true) String value; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy