001/*
002 *  Licensed to the Apache Software Foundation (ASF) under one
003 *  or more contributor license agreements.  See the NOTICE file
004 *  distributed with this work for additional information
005 *  regarding copyright ownership.  The ASF licenses this file
006 *  to you under the Apache License, Version 2.0 (the
007 *  "License"); you may not use this file except in compliance
008 *  with the License.  You may obtain a copy of the License at
009 *
010 *        http://www.apache.org/licenses/LICENSE-2.0
011 *
012 *  Unless required by applicable law or agreed to in writing,
013 *  software distributed under the License is distributed on an
014 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 *  KIND, either express or implied.  See the License for the
016 *  specific language governing permissions and limitations
017 *  under the License.
018 */
019
020package org.apache.isis.progmodels.dflt;
021
022import org.apache.isis.core.metamodel.facets.object.audit.annotation.AuditableFromAuditedAnnotationFacetFactory;
023import org.apache.isis.core.metamodel.facets.object.audit.configuration.AuditableFromConfigurationFacetFactory;
024import org.apache.isis.core.metamodel.facets.object.audit.markerifc.AuditableMarkerInterfaceFacetFactory;
025import org.apache.isis.core.metamodel.progmodel.ProgrammingModelAbstract;
026import org.apache.isis.core.progmodel.facets.actions.bulk.annotation.BulkAnnotationFacetFactory;
027import org.apache.isis.core.progmodel.facets.actions.command.annotation.CommandAnnotationFacetFactory;
028import org.apache.isis.core.progmodel.facets.actions.command.configuration.CommandFromConfigurationFacetFactory;
029import org.apache.isis.core.progmodel.facets.actions.debug.annotation.DebugAnnotationFacetFactory;
030import org.apache.isis.core.progmodel.facets.actions.defaults.method.ActionDefaultsFacetFactory;
031import org.apache.isis.core.progmodel.facets.actions.exploration.annotation.ExplorationAnnotationFacetFactory;
032import org.apache.isis.core.progmodel.facets.actions.homepage.HomePageAnnotationFacetFactory;
033import org.apache.isis.core.progmodel.facets.actions.invoke.ActionInvocationFacetFactory;
034import org.apache.isis.core.progmodel.facets.actions.invoke.event.PostsActionInvokedEventFacetFactory;
035import org.apache.isis.core.progmodel.facets.actions.notcontributed.annotation.NotContributedAnnotationFacetFactory;
036import org.apache.isis.core.progmodel.facets.actions.notinservicemenu.annotation.NotInServiceMenuAnnotationFacetFactory;
037import org.apache.isis.core.progmodel.facets.actions.notinservicemenu.method.NotInServiceMenuMethodFacetFactory;
038import org.apache.isis.core.progmodel.facets.actions.prototype.annotation.PrototypeAnnotationFacetFactory;
039import org.apache.isis.core.progmodel.facets.actions.publish.PublishedActionAnnotationFacetFactory;
040import org.apache.isis.core.progmodel.facets.actions.semantics.ActionSemanticsAnnotationFacetFactory;
041import org.apache.isis.core.progmodel.facets.actions.semantics.ActionSemanticsFallbackFacetFactory;
042import org.apache.isis.core.progmodel.facets.actions.semantics.IdempotentAnnotationFacetFactory;
043import org.apache.isis.core.progmodel.facets.actions.semantics.QueryOnlyAnnotationFacetFactory;
044import org.apache.isis.core.progmodel.facets.actions.typeof.annotation.TypeOfAnnotationForActionsFacetFactory;
045import org.apache.isis.core.progmodel.facets.actions.validate.method.ActionValidationFacetViaValidateMethodFacetFactory;
046import org.apache.isis.core.progmodel.facets.collections.accessor.CollectionAccessorFacetFactory;
047import org.apache.isis.core.progmodel.facets.collections.aggregated.ParentedSinceCollectionFacetFactory;
048import org.apache.isis.core.progmodel.facets.collections.clear.CollectionClearFacetFactory;
049import org.apache.isis.core.progmodel.facets.collections.collection.CollectionFacetFactory;
050import org.apache.isis.core.progmodel.facets.collections.disabled.fromimmutable.DisabledFacetForCollectionDerivedFromImmutableTypeFacetFactory;
051import org.apache.isis.core.progmodel.facets.collections.event.PostsCollectionAddedToEventAnnotationFacetFactory;
052import org.apache.isis.core.progmodel.facets.collections.event.PostsCollectionRemovedFromEventAnnotationFacetFactory;
053import org.apache.isis.core.progmodel.facets.collections.modify.CollectionAddRemoveAndValidateFacetFactory;
054import org.apache.isis.core.progmodel.facets.collections.notpersisted.annotation.NotPersistedAnnotationForCollectionFacetFactory;
055import org.apache.isis.core.progmodel.facets.collections.sortedby.SortedByAnnotationFacetFactory;
056import org.apache.isis.core.progmodel.facets.collections.typeof.TypeOfAnnotationForCollectionsFacetFactory;
057import org.apache.isis.core.progmodel.facets.fallback.FallbackFacetFactory;
058import org.apache.isis.core.progmodel.facets.members.cssclass.CssClassOnMemberFacetFactory;
059import org.apache.isis.core.progmodel.facets.members.describedas.annotation.DescribedAsOnMemberFacetFactory;
060import org.apache.isis.core.progmodel.facets.members.describedas.staticmethod.DescribedAsFacetViaDescriptionMethodFacetFactory;
061import org.apache.isis.core.progmodel.facets.members.disabled.annotation.DisabledFacetFactory;
062import org.apache.isis.core.progmodel.facets.members.disabled.forsession.DisabledFacetViaDisableForSessionMethodFacetFactory;
063import org.apache.isis.core.progmodel.facets.members.disabled.method.DisabledFacetViaDisableMethodFacetFactory;
064import org.apache.isis.core.progmodel.facets.members.disabled.staticmethod.DisabledFacetViaProtectMethodFacetFactory;
065import org.apache.isis.core.progmodel.facets.members.hidden.annotation.HiddenForMemberFacetFactory;
066import org.apache.isis.core.progmodel.facets.members.hidden.forsession.HiddenFacetViaHideForSessionMethodFacetFactory;
067import org.apache.isis.core.progmodel.facets.members.hidden.method.HiddenFacetViaHideMethodFacetFactory;
068import org.apache.isis.core.progmodel.facets.members.hidden.staticmethod.HiddenFacetViaAlwaysHideMethodFacetFactory;
069import org.apache.isis.core.progmodel.facets.members.named.annotation.NamedOnMemberFacetFactory;
070import org.apache.isis.core.progmodel.facets.members.named.staticmethod.NamedFacetViaNameMethodFacetFactory;
071import org.apache.isis.core.progmodel.facets.members.order.MemberOrderFacetFactory;
072import org.apache.isis.core.progmodel.facets.members.resolve.RenderOrResolveFacetFactory;
073import org.apache.isis.core.progmodel.facets.object.aggregated.annotation.AggregatedAnnotationFacetFactory;
074import org.apache.isis.core.progmodel.facets.object.autocomplete.annotation.AutoCompleteAnnotationFacetFactory;
075import org.apache.isis.core.progmodel.facets.object.bookmarkable.annotation.BookmarkableAnnotationFacetFactory;
076import org.apache.isis.core.progmodel.facets.object.bounded.annotation.BoundedAnnotationFacetFactory;
077import org.apache.isis.core.progmodel.facets.object.bounded.markerifc.BoundedMarkerInterfaceFacetFactory;
078import org.apache.isis.core.progmodel.facets.object.callbacks.create.CreatedCallbackFacetFactory;
079import org.apache.isis.core.progmodel.facets.object.callbacks.load.LoadCallbackFacetFactory;
080import org.apache.isis.core.progmodel.facets.object.callbacks.persist.PersistCallbackFacetFactory;
081import org.apache.isis.core.progmodel.facets.object.callbacks.persist.PersistCallbackViaSaveMethodFacetFactory;
082import org.apache.isis.core.progmodel.facets.object.callbacks.remove.RemoveCallbackFacetFactory;
083import org.apache.isis.core.progmodel.facets.object.callbacks.update.UpdateCallbackFacetFactory;
084import org.apache.isis.core.progmodel.facets.object.choices.enums.EnumFacetFactory;
085import org.apache.isis.core.progmodel.facets.object.cssclass.CssClassAnnotationForTypeFacetFactory;
086import org.apache.isis.core.progmodel.facets.object.defaults.annotation.DefaultedAnnotationFacetFactory;
087import org.apache.isis.core.progmodel.facets.object.describedas.annotation.DescribedAsAnnotationOnTypeFacetFactory;
088import org.apache.isis.core.progmodel.facets.object.dirty.method.DirtyMethodsFacetFactory;
089import org.apache.isis.core.progmodel.facets.object.disabled.method.DisabledObjectViaDisabledMethodFacetFactory;
090import org.apache.isis.core.progmodel.facets.object.encodeable.EncodableAnnotationFacetFactory;
091import org.apache.isis.core.progmodel.facets.object.facets.annotation.FacetsAnnotationFacetFactory;
092import org.apache.isis.core.progmodel.facets.object.hidden.HiddenAnnotationForTypeFacetFactory;
093import org.apache.isis.core.progmodel.facets.object.hidden.method.HiddenObjectViaHiddenMethodFacetFactory;
094import org.apache.isis.core.progmodel.facets.object.icon.method.IconMethodFacetFactory;
095import org.apache.isis.core.progmodel.facets.object.ignore.annotation.RemoveProgrammaticOrIgnoreAnnotationMethodsFacetFactory;
096import org.apache.isis.core.progmodel.facets.object.ignore.isis.RemoveSetDomainObjectContainerMethodFacetFactory;
097import org.apache.isis.core.progmodel.facets.object.ignore.isis.RemoveStaticGettersAndSettersFacetFactory;
098import org.apache.isis.core.progmodel.facets.object.ignore.javalang.IteratorFilteringFacetFactory;
099import org.apache.isis.core.progmodel.facets.object.ignore.javalang.RemoveGetClassMethodFacetFactory;
100import org.apache.isis.core.progmodel.facets.object.ignore.javalang.RemoveInitMethodFacetFactory;
101import org.apache.isis.core.progmodel.facets.object.ignore.javalang.RemoveInjectMethodsFacetFactory;
102import org.apache.isis.core.progmodel.facets.object.ignore.javalang.RemoveJavaLangComparableMethodsFacetFactory;
103import org.apache.isis.core.progmodel.facets.object.ignore.javalang.RemoveJavaLangObjectMethodsFacetFactory;
104import org.apache.isis.core.progmodel.facets.object.ignore.javalang.RemoveSuperclassMethodsFacetFactory;
105import org.apache.isis.core.progmodel.facets.object.ignore.javalang.RemoveSyntheticOrAbstractMethodsFacetFactory;
106import org.apache.isis.core.progmodel.facets.object.ignore.jdo.RemoveJdoEnhancementTypesFacetFactory;
107import org.apache.isis.core.progmodel.facets.object.ignore.jdo.RemoveJdoPrefixedMethodsFacetFactory;
108import org.apache.isis.core.progmodel.facets.object.immutable.annotation.ImmutableAnnotationFacetFactory;
109import org.apache.isis.core.progmodel.facets.object.immutable.markerifc.ImmutableMarkerInterfaceFacetFactory;
110import org.apache.isis.core.progmodel.facets.object.mask.annotation.MaskAnnotationForTypeFacetFactory;
111import org.apache.isis.core.progmodel.facets.object.maxlen.annotation.MaxLengthAnnotationForTypeFacetFactory;
112import org.apache.isis.core.progmodel.facets.object.membergroups.MemberGroupLayoutFacetFactory;
113import org.apache.isis.core.progmodel.facets.object.multiline.annotation.MultiLineAnnotationOnTypeFacetFactory;
114import org.apache.isis.core.progmodel.facets.object.named.annotation.NamedAnnotationOnTypeFacetFactory;
115import org.apache.isis.core.progmodel.facets.object.named.staticmethod.NamedFacetViaSingularNameStaticMethodFacetFactory;
116import org.apache.isis.core.progmodel.facets.object.notpersistable.NotPersistableAnnotationFacetFactory;
117import org.apache.isis.core.progmodel.facets.object.notpersistable.NotPersistableMarkerInterfacesFacetFactory;
118import org.apache.isis.core.progmodel.facets.object.objecttype.ObjectSpecIdAnnotationFacetFactory;
119import org.apache.isis.core.progmodel.facets.object.objecttype.ObjectTypeDerivedFromClassNameFacetFactory;
120import org.apache.isis.core.progmodel.facets.object.orderactions.ActionOrderAnnotationFacetFactory;
121import org.apache.isis.core.progmodel.facets.object.orderfields.FieldOrderAnnotationFacetFactory;
122import org.apache.isis.core.progmodel.facets.object.parseable.ParseableFacetFactory;
123import org.apache.isis.core.progmodel.facets.object.plural.annotation.PluralAnnotationFacetFactory;
124import org.apache.isis.core.progmodel.facets.object.plural.staticmethod.PluralMethodFacetFactory;
125import org.apache.isis.core.progmodel.facets.object.publish.PublishedObjectAnnotationFacetFactory;
126import org.apache.isis.core.progmodel.facets.object.regex.annotation.RegExFacetAnnotationForTypeFacetFactory;
127import org.apache.isis.core.progmodel.facets.object.title.TitleMethodFacetFactory;
128import org.apache.isis.core.progmodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
129import org.apache.isis.core.progmodel.facets.object.typicallen.annotation.TypicalLengthAnnotationOnTypeFacetFactory;
130import org.apache.isis.core.progmodel.facets.object.validate.method.ValidateObjectViaValidateMethodFacetFactory;
131import org.apache.isis.core.progmodel.facets.object.validperspec.MustSatisfySpecificationOnTypeFacetFactory;
132import org.apache.isis.core.progmodel.facets.object.validprops.ObjectValidPropertiesFacetFactory;
133import org.apache.isis.core.progmodel.facets.object.value.annotation.ValueFacetFactory;
134import org.apache.isis.core.progmodel.facets.object.viewmodel.annotation.ViewModelIntefaceFacetFactory;
135import org.apache.isis.core.progmodel.facets.paged.PagedOnParentedCollectionFacetFactory;
136import org.apache.isis.core.progmodel.facets.paged.PagedAnnotationOnTypeFacetFactory;
137import org.apache.isis.core.progmodel.facets.param.autocomplete.ActionParameterAutoCompleteFacetFactory;
138import org.apache.isis.core.progmodel.facets.param.choices.enums.ParameterChoicesFacetDerivedFromChoicesFacetFacetFactory;
139import org.apache.isis.core.progmodel.facets.param.choices.method.ActionChoicesFacetFactory;
140import org.apache.isis.core.progmodel.facets.param.choices.methodnum.ActionParameterChoicesFacetFactory;
141import org.apache.isis.core.progmodel.facets.param.defaults.fromtype.ParameterDefaultDerivedFromTypeFacetFactory;
142import org.apache.isis.core.progmodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetFactory;
143import org.apache.isis.core.progmodel.facets.param.describedas.annotation.DescribedAsAnnotationOnParameterFacetFactory;
144import org.apache.isis.core.progmodel.facets.param.javaxvaldigits.BigDecimalForParameterDerivedFromJavaxValidationAnnotationFacetFactory;
145import org.apache.isis.core.progmodel.facets.param.mandatory.annotation.OptionalAnnotationForParameterFacetFactory;
146import org.apache.isis.core.progmodel.facets.param.mandatory.dflt.MandatoryDefaultForParametersFacetFactory;
147import org.apache.isis.core.progmodel.facets.param.multiline.annotation.MultiLineAnnotationOnParameterFacetFactory;
148import org.apache.isis.core.progmodel.facets.param.named.annotation.NamedAnnotationOnParameterFacetFactory;
149import org.apache.isis.core.progmodel.facets.param.renderedasdaybefore.annotation.RenderedAsDayBeforeAnnotationOnParameterFacetFactory;
150import org.apache.isis.core.progmodel.facets.param.typicallen.annotation.TypicalLengthAnnotationOnParameterFacetFactory;
151import org.apache.isis.core.progmodel.facets.param.typicallen.fromtype.TypicalLengthFacetForParameterDerivedFromTypeFacetFactory;
152import org.apache.isis.core.progmodel.facets.param.validate.maskannot.MaskAnnotationForParameterFacetFactory;
153import org.apache.isis.core.progmodel.facets.param.validate.maxlenannot.MaxLengthAnnotationForParameterFacetFactory;
154import org.apache.isis.core.progmodel.facets.param.validate.perspec.MustSatisfySpecificationOnParameterFacetFactory;
155import org.apache.isis.core.progmodel.facets.param.validate.regexannot.RegExFacetAnnotationForParameterFacetFactory;
156import org.apache.isis.core.progmodel.facets.properties.accessor.PropertyAccessorFacetFactory;
157import org.apache.isis.core.progmodel.facets.properties.autocomplete.PropertyAutoCompleteFacetFactory;
158import org.apache.isis.core.progmodel.facets.properties.choices.enums.PropertyChoicesFacetDerivedFromChoicesFacetFacetFactory;
159import org.apache.isis.core.progmodel.facets.properties.choices.method.PropertyChoicesFacetFactory;
160import org.apache.isis.core.progmodel.facets.properties.defaults.fromtype.PropertyDefaultDerivedFromTypeFacetFactory;
161import org.apache.isis.core.progmodel.facets.properties.defaults.method.PropertyDefaultFacetFactory;
162import org.apache.isis.core.progmodel.facets.properties.disabled.fromimmutable.DisabledFacetForPropertyDerivedFromImmutableTypeFacetFactory;
163import org.apache.isis.core.progmodel.facets.properties.event.PostsPropertyChangedEventAnnotationFacetFactory;
164import org.apache.isis.core.progmodel.facets.properties.javaxvaldigits.BigDecimalForPropertyDerivedFromJavaxValidationDigitsFacetFactory;
165import org.apache.isis.core.progmodel.facets.properties.mandatory.annotation.MandatoryAnnotationForPropertyFacetFactory;
166import org.apache.isis.core.progmodel.facets.properties.mandatory.annotation.OptionalAnnotationForPropertyFacetFactory;
167import org.apache.isis.core.progmodel.facets.properties.mandatory.dflt.MandatoryDefaultForPropertiesFacetFactory;
168import org.apache.isis.core.progmodel.facets.properties.mandatory.staticmethod.PropertyOptionalFacetFactory;
169import org.apache.isis.core.progmodel.facets.properties.modify.PropertyModifyFacetFactory;
170import org.apache.isis.core.progmodel.facets.properties.modify.PropertySetAndClearFacetFactory;
171import org.apache.isis.core.progmodel.facets.properties.multiline.annotation.MultiLineOnPropertyFacetFactory;
172import org.apache.isis.core.progmodel.facets.properties.notpersisted.annotation.NotPersistedAnnotationForPropertyFacetFactory;
173import org.apache.isis.core.progmodel.facets.properties.renderedasdaybefore.annotation.RenderedAsDayBeforeAnnotationOnPropertyFacetFactory;
174import org.apache.isis.core.progmodel.facets.properties.typicallen.annotation.TypicalLengthOnPropertyFacetFactory;
175import org.apache.isis.core.progmodel.facets.properties.typicallen.fromtype.TypicalLengthFacetForPropertyDerivedFromTypeFacetFactory;
176import org.apache.isis.core.progmodel.facets.properties.validate.PropertyValidateDefaultFacetFactory;
177import org.apache.isis.core.progmodel.facets.properties.validate.PropertyValidateFacetFactory;
178import org.apache.isis.core.progmodel.facets.properties.validate.maskannot.MaskAnnotationForPropertyFacetFactory;
179import org.apache.isis.core.progmodel.facets.properties.validate.maxlenannot.MaxLengthAnnotationForPropertyFacetFactory;
180import org.apache.isis.core.progmodel.facets.properties.validate.perspec.MustSatisfySpecificationOnPropertyFacetFactory;
181import org.apache.isis.core.progmodel.facets.properties.validate.regexannot.RegExFacetAnnotationForPropertyFacetFactory;
182import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueTypeFacetFactory;
183import org.apache.isis.core.progmodel.facets.value.biginteger.BigIntegerValueTypeFacetFactory;
184import org.apache.isis.core.progmodel.facets.value.blobs.BlobValueTypeFacetFactory;
185import org.apache.isis.core.progmodel.facets.value.booleans.BooleanPrimitiveValueTypeFacetFactory;
186import org.apache.isis.core.progmodel.facets.value.booleans.BooleanWrapperValueTypeFacetFactory;
187import org.apache.isis.core.progmodel.facets.value.bytes.BytePrimitiveValueTypeFacetFactory;
188import org.apache.isis.core.progmodel.facets.value.bytes.ByteWrapperValueTypeFacetFactory;
189import org.apache.isis.core.progmodel.facets.value.chars.CharPrimitiveValueTypeFacetFactory;
190import org.apache.isis.core.progmodel.facets.value.chars.CharWrapperValueTypeFacetFactory;
191import org.apache.isis.core.progmodel.facets.value.clobs.ClobValueTypeFacetFactory;
192import org.apache.isis.core.progmodel.facets.value.color.ColorValueTypeFacetFactory;
193import org.apache.isis.core.progmodel.facets.value.date.DateValueTypeFacetFactory;
194import org.apache.isis.core.progmodel.facets.value.datejodalocal.JodaLocalDateValueTypeFacetFactory;
195import org.apache.isis.core.progmodel.facets.value.datesql.JavaSqlDateValueTypeFacetFactory;
196import org.apache.isis.core.progmodel.facets.value.datetime.DateTimeValueTypeFacetFactory;
197import org.apache.isis.core.progmodel.facets.value.datetimejoda.JodaDateTimeValueTypeFacetFactory;
198import org.apache.isis.core.progmodel.facets.value.datetimejodalocal.JodaLocalDateTimeValueTypeFacetFactory;
199import org.apache.isis.core.progmodel.facets.value.dateutil.JavaUtilDateValueTypeFacetFactory;
200import org.apache.isis.core.progmodel.facets.value.floats.FloatPrimitiveValueTypeFacetFactory;
201import org.apache.isis.core.progmodel.facets.value.floats.FloatWrapperValueTypeFacetFactory;
202import org.apache.isis.core.progmodel.facets.value.image.ImageValueTypeFacetFactory;
203import org.apache.isis.core.progmodel.facets.value.imageawt.JavaAwtImageValueTypeFacetFactory;
204import org.apache.isis.core.progmodel.facets.value.integer.IntPrimitiveValueTypeFacetFactory;
205import org.apache.isis.core.progmodel.facets.value.integer.IntWrapperValueTypeFacetFactory;
206import org.apache.isis.core.progmodel.facets.value.longs.DoublePrimitiveValueTypeFacetFactory;
207import org.apache.isis.core.progmodel.facets.value.longs.DoubleWrapperValueTypeFacetFactory;
208import org.apache.isis.core.progmodel.facets.value.longs.LongPrimitiveValueTypeFacetFactory;
209import org.apache.isis.core.progmodel.facets.value.longs.LongWrapperValueTypeFacetFactory;
210import org.apache.isis.core.progmodel.facets.value.money.MoneyValueTypeFacetFactory;
211import org.apache.isis.core.progmodel.facets.value.password.PasswordValueTypeFacetFactory;
212import org.apache.isis.core.progmodel.facets.value.percentage.PercentageValueTypeFacetFactory;
213import org.apache.isis.core.progmodel.facets.value.shortint.ShortPrimitiveValueTypeFacetFactory;
214import org.apache.isis.core.progmodel.facets.value.shortint.ShortWrapperValueTypeFacetFactory;
215import org.apache.isis.core.progmodel.facets.value.string.StringValueTypeFacetFactory;
216import org.apache.isis.core.progmodel.facets.value.time.TimeValueTypeFacetFactory;
217import org.apache.isis.core.progmodel.facets.value.timesql.JavaSqlTimeValueTypeFacetFactory;
218import org.apache.isis.core.progmodel.facets.value.timestamp.TimeStampValueTypeFacetFactory;
219import org.apache.isis.core.progmodel.facets.value.timestampsql.JavaSqlTimeStampValueTypeFacetFactory;
220import org.apache.isis.core.progmodel.facets.value.url.URLValueTypeFacetFactory;
221import org.apache.isis.core.progmodel.facets.value.uuid.UUIDValueTypeFacetFactory;
222
223public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract {
224
225    public ProgrammingModelFacetsJava5() {
226        
227        // must be first, so any Facets created can be replaced by other
228        // FacetFactorys later.
229        addFactory(FallbackFacetFactory.class);
230        addFactory(ObjectTypeDerivedFromClassNameFacetFactory.class);
231        
232        addFactory(IteratorFilteringFacetFactory.class);
233        addFactory(RemoveSyntheticOrAbstractMethodsFacetFactory.class);
234        addFactory(RemoveSuperclassMethodsFacetFactory.class);
235        addFactory(RemoveJavaLangObjectMethodsFacetFactory.class);
236        addFactory(RemoveJavaLangComparableMethodsFacetFactory.class);
237        addFactory(RemoveSetDomainObjectContainerMethodFacetFactory.class);
238        addFactory(RemoveInitMethodFacetFactory.class);
239        addFactory(RemoveInjectMethodsFacetFactory.class);
240        addFactory(RemoveStaticGettersAndSettersFacetFactory.class);
241        addFactory(RemoveGetClassMethodFacetFactory.class);
242        addFactory(RemoveProgrammaticOrIgnoreAnnotationMethodsFacetFactory.class);
243        
244        // come what may, we have to ignore the PersistenceCapable supertype.
245        addFactory(RemoveJdoEnhancementTypesFacetFactory.class);
246        // so we may as well also just ignore any 'jdo' prefixed methods here also.
247        addFactory(RemoveJdoPrefixedMethodsFacetFactory.class);
248
249        // must be before any other FacetFactories that install
250        // MandatoryFacet.class facets
251        addFactory(MandatoryDefaultForPropertiesFacetFactory.class);
252        addFactory(MandatoryDefaultForParametersFacetFactory.class);
253
254        addFactory(PropertyValidateDefaultFacetFactory.class);
255
256        // enum support
257        addFactory(EnumFacetFactory.class);
258        addFactory(ParameterChoicesFacetDerivedFromChoicesFacetFacetFactory.class);
259        addFactory(PropertyChoicesFacetDerivedFromChoicesFacetFacetFactory.class);
260
261
262        // properties
263        addFactory(PropertyAccessorFacetFactory.class);
264        addFactory(PropertySetAndClearFacetFactory.class);
265        // must come after PropertySetAndClearFacetFactory
266        addFactory(PropertyModifyFacetFactory.class);
267        
268        addFactory(PropertyValidateFacetFactory.class);
269        addFactory(PropertyChoicesFacetFactory.class);
270        addFactory(PropertyAutoCompleteFacetFactory.class);
271        addFactory(PropertyDefaultFacetFactory.class);
272        addFactory(PropertyOptionalFacetFactory.class);
273
274        // collections
275        addFactory(CollectionAccessorFacetFactory.class);
276        addFactory(CollectionClearFacetFactory.class);
277        addFactory(CollectionAddRemoveAndValidateFacetFactory.class);
278        addFactory(SortedByAnnotationFacetFactory.class);
279
280        // actions
281        addFactory(ActionInvocationFacetFactory.class);
282        addFactory(ActionValidationFacetViaValidateMethodFacetFactory.class);
283        addFactory(ActionChoicesFacetFactory.class);
284        addFactory(ActionParameterChoicesFacetFactory.class);
285        addFactory(ActionParameterAutoCompleteFacetFactory.class);
286        addFactory(ActionDefaultsFacetFactory.class);
287        addFactory(ActionParameterDefaultsFacetFactory.class);
288        addFactory(QueryOnlyAnnotationFacetFactory.class);
289        addFactory(IdempotentAnnotationFacetFactory.class);
290        addFactory(ActionSemanticsAnnotationFacetFactory.class);
291        addFactory(ActionSemanticsFallbackFacetFactory.class);
292
293        // members in general
294        addFactory(NamedFacetViaNameMethodFacetFactory.class);
295        addFactory(DescribedAsFacetViaDescriptionMethodFacetFactory.class);
296        addFactory(DisabledFacetViaDisableForSessionMethodFacetFactory.class);
297        addFactory(DisabledFacetViaDisableMethodFacetFactory.class);
298        addFactory(DisabledFacetViaProtectMethodFacetFactory.class);
299        addFactory(HiddenFacetViaHideForSessionMethodFacetFactory.class);
300        addFactory(HiddenFacetViaAlwaysHideMethodFacetFactory.class);
301        addFactory(HiddenFacetViaHideMethodFacetFactory.class);
302        addFactory(RenderOrResolveFacetFactory.class);
303
304        // objects
305        addFactory(ObjectSpecIdAnnotationFacetFactory.class);
306        addFactory(IconMethodFacetFactory.class);
307
308        addFactory(CreatedCallbackFacetFactory.class);
309        addFactory(LoadCallbackFacetFactory.class);
310        addFactory(PersistCallbackViaSaveMethodFacetFactory.class);
311        addFactory(PersistCallbackFacetFactory.class);
312        addFactory(UpdateCallbackFacetFactory.class);
313        addFactory(RemoveCallbackFacetFactory.class);
314
315        addFactory(DirtyMethodsFacetFactory.class);
316        addFactory(ValidateObjectViaValidateMethodFacetFactory.class);
317        addFactory(ObjectValidPropertiesFacetFactory.class);
318        addFactory(PluralMethodFacetFactory.class);
319        addFactory(NamedFacetViaSingularNameStaticMethodFacetFactory.class);
320        addFactory(TitleAnnotationFacetFactory.class);
321        addFactory(TitleMethodFacetFactory.class);
322
323        addFactory(MemberOrderFacetFactory.class);
324        addFactory(ActionOrderAnnotationFacetFactory.class);
325        addFactory(FieldOrderAnnotationFacetFactory.class);
326        addFactory(MemberGroupLayoutFacetFactory.class);
327        
328        addFactory(AggregatedAnnotationFacetFactory.class);
329        addFactory(BookmarkableAnnotationFacetFactory.class);
330        addFactory(HomePageAnnotationFacetFactory.class);
331        addFactory(BoundedAnnotationFacetFactory.class);
332        addFactory(BoundedMarkerInterfaceFacetFactory.class);
333        addFactory(DebugAnnotationFacetFactory.class);
334
335        addFactory(DefaultedAnnotationFacetFactory.class);
336        addFactory(PropertyDefaultDerivedFromTypeFacetFactory.class);
337        addFactory(ParameterDefaultDerivedFromTypeFacetFactory.class);
338
339        addFactory(DescribedAsAnnotationOnTypeFacetFactory.class);
340        addFactory(DescribedAsOnMemberFacetFactory.class);
341        addFactory(DescribedAsAnnotationOnParameterFacetFactory.class);
342        
343        addFactory(BigDecimalForParameterDerivedFromJavaxValidationAnnotationFacetFactory.class);
344        addFactory(BigDecimalForPropertyDerivedFromJavaxValidationDigitsFacetFactory.class);
345
346        addFactory(DisabledFacetFactory.class);
347        addFactory(EncodableAnnotationFacetFactory.class);
348        addFactory(ExplorationAnnotationFacetFactory.class);
349        addFactory(PrototypeAnnotationFacetFactory.class);
350        addFactory(NotContributedAnnotationFacetFactory.class);
351        addFactory(NotInServiceMenuAnnotationFacetFactory.class);
352        addFactory(NotInServiceMenuMethodFacetFactory.class);
353        addFactory(BulkAnnotationFacetFactory.class);
354
355        addFactory(HiddenAnnotationForTypeFacetFactory.class);
356        // must come after the TitleAnnotationFacetFactory, because can act as an override
357        addFactory(HiddenForMemberFacetFactory.class);
358        addFactory(CssClassAnnotationForTypeFacetFactory.class);
359        addFactory(CssClassOnMemberFacetFactory.class);
360
361        addFactory(HiddenObjectViaHiddenMethodFacetFactory.class);
362        addFactory(DisabledObjectViaDisabledMethodFacetFactory.class);
363
364        addFactory(ImmutableAnnotationFacetFactory.class);
365        addFactory(DisabledFacetForPropertyDerivedFromImmutableTypeFacetFactory.class);
366        addFactory(DisabledFacetForCollectionDerivedFromImmutableTypeFacetFactory.class);
367
368        // must come after the property/collection/action accessor+mutator facet factories
369        addFactory(PostsPropertyChangedEventAnnotationFacetFactory.class);
370        addFactory(PostsCollectionAddedToEventAnnotationFacetFactory.class);
371        addFactory(PostsCollectionRemovedFromEventAnnotationFacetFactory.class);
372        addFactory(PostsActionInvokedEventFacetFactory.class);
373
374        
375        addFactory(ImmutableMarkerInterfaceFacetFactory.class);
376
377        addFactory(ViewModelIntefaceFacetFactory.class);
378
379        addFactory(MaxLengthAnnotationForTypeFacetFactory.class);
380        addFactory(MaxLengthAnnotationForPropertyFacetFactory.class);
381        addFactory(MaxLengthAnnotationForParameterFacetFactory.class);
382
383        addFactory(MustSatisfySpecificationOnTypeFacetFactory.class);
384        addFactory(MustSatisfySpecificationOnPropertyFacetFactory.class);
385        addFactory(MustSatisfySpecificationOnParameterFacetFactory.class);
386
387        addFactory(MultiLineAnnotationOnTypeFacetFactory.class);
388        addFactory(MultiLineOnPropertyFacetFactory.class);
389        addFactory(MultiLineAnnotationOnParameterFacetFactory.class);
390
391        addFactory(NamedAnnotationOnTypeFacetFactory.class);
392        addFactory(NamedOnMemberFacetFactory.class);
393        addFactory(NamedAnnotationOnParameterFacetFactory.class);
394
395        addFactory(NotPersistableAnnotationFacetFactory.class);
396        addFactory(NotPersistableMarkerInterfacesFacetFactory.class);
397
398        addFactory(NotPersistedAnnotationForCollectionFacetFactory.class);
399        addFactory(NotPersistedAnnotationForPropertyFacetFactory.class);
400
401        addFactory(OptionalAnnotationForPropertyFacetFactory.class);
402        addFactory(OptionalAnnotationForParameterFacetFactory.class);
403        addFactory(MandatoryAnnotationForPropertyFacetFactory.class);
404
405        addFactory(ParseableFacetFactory.class);
406        addFactory(PluralAnnotationFacetFactory.class);
407        addFactory(PagedAnnotationOnTypeFacetFactory.class);
408        addFactory(PagedOnParentedCollectionFacetFactory.class);
409
410        addFactory(AutoCompleteAnnotationFacetFactory.class);
411
412        // must come after any facets that install titles
413        addFactory(MaskAnnotationForTypeFacetFactory.class);
414        addFactory(MaskAnnotationForPropertyFacetFactory.class);
415        addFactory(MaskAnnotationForParameterFacetFactory.class);
416
417        // must come after any facets that install titles, and after mask
418        // if takes precedence over mask.
419        addFactory(RegExFacetAnnotationForTypeFacetFactory.class);
420        addFactory(RegExFacetAnnotationForPropertyFacetFactory.class);
421        addFactory(RegExFacetAnnotationForParameterFacetFactory.class);
422
423        addFactory(TypeOfAnnotationForCollectionsFacetFactory.class);
424        addFactory(TypeOfAnnotationForActionsFacetFactory.class);
425
426        addFactory(TypicalLengthFacetForPropertyDerivedFromTypeFacetFactory.class);
427        addFactory(TypicalLengthFacetForParameterDerivedFromTypeFacetFactory.class);
428
429        addFactory(TypicalLengthAnnotationOnTypeFacetFactory.class);
430        addFactory(TypicalLengthOnPropertyFacetFactory.class);
431        addFactory(TypicalLengthAnnotationOnParameterFacetFactory.class);
432        addFactory(RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.class);
433        addFactory(RenderedAsDayBeforeAnnotationOnParameterFacetFactory.class);
434
435        // built-in value types for Java language
436        addFactory(BooleanPrimitiveValueTypeFacetFactory.class);
437        addFactory(BooleanWrapperValueTypeFacetFactory.class);
438        addFactory(BytePrimitiveValueTypeFacetFactory.class);
439        addFactory(ByteWrapperValueTypeFacetFactory.class);
440        addFactory(ShortPrimitiveValueTypeFacetFactory.class);
441        addFactory(ShortWrapperValueTypeFacetFactory.class);
442        addFactory(IntPrimitiveValueTypeFacetFactory.class);
443        addFactory(IntWrapperValueTypeFacetFactory.class);
444        addFactory(LongPrimitiveValueTypeFacetFactory.class);
445        addFactory(LongWrapperValueTypeFacetFactory.class);
446        addFactory(FloatPrimitiveValueTypeFacetFactory.class);
447        addFactory(FloatWrapperValueTypeFacetFactory.class);
448        addFactory(DoublePrimitiveValueTypeFacetFactory.class);
449        addFactory(DoubleWrapperValueTypeFacetFactory.class);
450        addFactory(CharPrimitiveValueTypeFacetFactory.class);
451        addFactory(CharWrapperValueTypeFacetFactory.class);
452        addFactory(BigIntegerValueTypeFacetFactory.class);
453        addFactory(BigDecimalValueTypeFacetFactory.class);
454        addFactory(JavaSqlDateValueTypeFacetFactory.class);
455        addFactory(JavaSqlTimeValueTypeFacetFactory.class);
456        addFactory(JavaUtilDateValueTypeFacetFactory.class);
457        addFactory(JavaSqlTimeStampValueTypeFacetFactory.class);
458        addFactory(StringValueTypeFacetFactory.class);
459        addFactory(URLValueTypeFacetFactory.class);
460        addFactory(UUIDValueTypeFacetFactory.class);
461
462        addFactory(JavaAwtImageValueTypeFacetFactory.class);
463        
464        // applib values
465        addFactory(BlobValueTypeFacetFactory.class);
466        addFactory(ClobValueTypeFacetFactory.class);
467        addFactory(DateValueTypeFacetFactory.class);
468        addFactory(DateTimeValueTypeFacetFactory.class);
469        addFactory(ColorValueTypeFacetFactory.class);
470        addFactory(MoneyValueTypeFacetFactory.class);
471        addFactory(PasswordValueTypeFacetFactory.class);
472        addFactory(PercentageValueTypeFacetFactory.class);
473        addFactory(TimeStampValueTypeFacetFactory.class);
474        addFactory(TimeValueTypeFacetFactory.class);
475        addFactory(ImageValueTypeFacetFactory.class);
476
477        // jodatime values
478        addFactory(JodaLocalDateValueTypeFacetFactory.class);
479        addFactory(JodaLocalDateTimeValueTypeFacetFactory.class);
480        addFactory(JodaDateTimeValueTypeFacetFactory.class);
481        
482        // written to not trample over TypeOf if already installed
483        addFactory(CollectionFacetFactory.class);
484        // must come after CollectionFacetFactory
485        addFactory(ParentedSinceCollectionFacetFactory.class);
486
487        // so we can dogfood the NO applib "value" types
488        addFactory(ValueFacetFactory.class);
489
490
491        //
492        // services
493        //
494        
495        addFactory(CommandAnnotationFacetFactory.class);
496        // will not trample over CommandFacet if already installed
497        // must be after ActionSemantics facet setup.
498        addFactory(CommandFromConfigurationFacetFactory.class);
499
500        addFactory(AuditableFromAuditedAnnotationFacetFactory.class);
501        addFactory(AuditableMarkerInterfaceFacetFactory.class);
502        // will not trample over AuditableFacet if already installed
503        addFactory(AuditableFromConfigurationFacetFactory.class);
504
505        addFactory(PublishedActionAnnotationFacetFactory.class);
506        addFactory(PublishedObjectAnnotationFacetFactory.class);
507
508        addFactory(FacetsAnnotationFacetFactory.class);
509    }
510
511
512
513
514}