001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package com.sun.rave.designtime.ext;
042:
043: /**
044: * <p>These are the common constants used in several places within the Visual Web Design-Time API.
045: * These constants are separated into different sub-interfaces to better associate them with where
046: * they are used in the API. See the separate sub-interfaces for detailed documentation.</p>
047: */
048: public interface ConstantsExt {
049: /**
050: * These constants are used as attribute keys for the BeanDescriptor. Use the 'setValue' method
051: * on the BeanDescriptor to set these values, and the 'getValue' method to retrieve them.
052: *
053: * @see java.beans.BeanDescriptor#setValue(String, Object)
054: * @see java.beans.BeanDescriptor#getValue(String)
055: */
056: public interface BeanDescriptor {
057:
058: /**
059: * This enum describes the different ways in which the Bean writer
060: * wants the tool to handle the instance initialization code.
061: */
062: enum INSTANCE_INITIALIZATION_PERSISTENCE_MODES {
063: /** This indicates that the tool should not generate any code. This
064: * is the default in case of Interface and Abstract typed Beans
065: * when the <code>INSTANCE_INITIALIZATION_PERSISTENCE_MODE</code> value is
066: * not specified in the BeanDescriptor. */
067: NONE,
068: /** This indicates that the tool should generate the
069: * initialization code using the default constructor of the Bean's
070: * type. This is the default for Beans of concrete type
071: * that have default constructors, when the
072: * <code>INSTANCE_INITIALIZATION_PERSISTENCE_MODE</code> value is not
073: * specified in the BeanDescriptor. */
074: DEFAULT_CONSTRUCTOR,
075: /** This indicates that the tool should generate the initialization
076: * code using the value of <code>INITIALIZATION_EXPRESSION</code>.
077: * The String value of <code>INITIALIZATION_EXPRESSION</code>
078: * should be a syntactically correct expression that
079: * returns an instance that can initialize the Bean instance.
080: * Otherwise a syntax error may result. If the value is <code>null</code>
081: * no initialization code is generated.
082: *
083: * If the value of <code>INITIALIZATION_EXPRESSION</code>
084: * is null no code is generated by the tool.
085: *
086: * The tool is responsible for cleaning up the code when the Design Bean
087: * is deleted.
088: *
089: * The tool is responsible for updating the code when the Design
090: * Bean's instance name is changed. */
091: INITIALIZATION_EXPRESSION,
092: /** This indicates that the tool should generate the
093: * initialization code using the factory specified by
094: * <code>INITIALIZATION_STATEMENT_FACTORY</code>. The
095: * factory must implement the interface
096: * <code>InstanceInitializationStatementFactory</code>.
097: * The factory is used to create the statement which is inserted in
098: * the method that initializes the Bean instances at run
099: * time e.g. <code>_init()</code> method. The String
100: * value should be syntactically correct statement or a statement
101: * block that initializes the instance of the Bean. Otherwise a
102: * syntax error may result. If the block fails to initilize the
103: * instance, a <codejava.lang.NullPointerException</code> may be
104: * thrown at run time when the Bean instance is dereferenced.
105: * If the value of <code>INITIALIZATION_STATEMENT_FACTORY</code>
106: * is null no code is generated by the tool.
107: *
108: * The tool is responsible for cleaning up the code when the Design
109: * Bean is deleted.
110: *
111: * The tool is responsible for updating the code when the Design
112: * Bean's instance name is changed. */
113: INITIALIZATION_STATEMENT,
114: }
115:
116: /** This is used by the tool to discover how the Design Bean writer wants
117: * the tool to handle the instance initialization code. The allowed
118: * values are the set enum constants of the enum
119: * <code>INSTANCE_INITIALIZATION_PERSISTENCE_MODES</code> */
120: public static final String INSTANCE_INITIALIZATION_PERSISTENCE_MODE = "instanceInitializationPersistenceMode";
121:
122: /**
123: * This is used by the tool to discover the intialization expression that
124: * is used to initialize the Bean instance.
125: *
126: * @see INSTANCE_INITIALIZATION_PERSISTENCE_MODES.INITIALIZATION_EXPRESSION
127: */
128: public static final String INITIALIZATION_EXPRESSION = "initializationExpression"; // NOI18N
129:
130: /**
131: * This is used by the tool to discover the intialization statement that
132: * is used to initialize the Bean instance.
133: *
134: * @see INSTANCE_INITIALIZATION_PERSISTENCE_MODES.INITIALIZATION_STATEMENT
135: */
136: public static final String INITIALIZATION_STATEMENT_FACTORY = "initializationStatementFactory"; // NOI18N
137:
138: /**
139: * This is used by the tool to discover design time instance creation
140: * factory. The value should be an instance of
141: * <code>com.sun.rave.designtime.ext.ConstantsExt.DesigntimeInstanceFactory</code>.
142: *
143: * If not <code>null</code> the factory is used to instantiate the instance.
144: */
145: public static final String DESIGNTIME_INSTANCE_FACTORY = "designtimeInstanceFactory"; // NOI18N
146: }
147: }
|