com.sun.tools.xjc.model.CDefaultValue Maven / Gradle / Ivy
/*
* 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.model;
import com.sun.codemodel.JExpression;
import com.sun.tools.xjc.outline.Outline;
import com.sun.xml.xsom.XmlString;
/**
* Object that computes the default value expression lazily.
*
* The computation is done lazily because often the default value
* needs to refer to things (such as enum classes) that are only generated
* after some of the outline is built.
*
* @author Kohsuke Kawaguchi
*/
public abstract class CDefaultValue {
/**
* Default constructor.
*/
protected CDefaultValue() {}
public abstract JExpression compute(Outline outline);
/**
* Creates a new that computes the default value
* by applying a lexical representation to a {@link TypeUse}.
*/
public static CDefaultValue create(final TypeUse typeUse, final XmlString defaultValue) {
return new CDefaultValue() {
@Override
public JExpression compute(Outline outline) {
return typeUse.createConstant(outline,defaultValue);
}
};
}
}