Modified: incubator/tuscany/java/sdo/tools/templates/models/SDOFactoryClass.javajet URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/tools/templates/models/SDOFactoryClass.javajet?view=diff&rev=558163&r1=558162&r2=558163 ============================================================================== --- incubator/tuscany/java/sdo/tools/templates/models/SDOFactoryClass.javajet (original) +++ incubator/tuscany/java/sdo/tools/templates/models/SDOFactoryClass.javajet Fri Jul 20 14:51:12 2007 @@ -150,13 +150,21 @@ * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated - */ - public void register(HelperContext scope) { - if(scope == null) { - throw new IllegalArgumentException("Scope can not be null"); - } - TypeHelperImpl th = (TypeHelperImpl)scope.getTypeHelper(); - th.getExtendedMetaData().putPackage(NAMESPACE_URI, this); + */ + public void register(HelperContext scope) + { + if(scope == null) { + throw new IllegalArgumentException("Scope can not be null"); + } + + //Register dependent packages with provided scope + <%for (Iterator p=genPackage.getPackageInitializationDependencies().iterator(); p.hasNext();) { GenPackage dep = (GenPackage)p.next();%> + <%=dep.getImportedFactoryInterfaceName()%>.INSTANCE.register(scope); + <%}%> + + // Initialize this package + TypeHelperImpl th = (TypeHelperImpl)scope.getTypeHelper(); + th.getExtendedMetaData().putPackage(NAMESPACE_URI, this); } /** @@ -250,38 +258,27 @@ <%} }%> - private static boolean isInited = false; - + private static <%=factoryType%> instance = null; public static <%=factoryType%> init() { - if (isInited) return (<%=factoryType%>)FactoryBase.getStaticFactory(<%=factoryType%>.NAMESPACE_URI); - <%=factoryType%> the<%=factoryType%> = new <%=factoryType%>(); - isInited = true; - - // Initialize dependencies - <% - List packages = new ArrayList(genPackage.getPackageSimpleDependencies()); - for (Iterator pidi=genPackage.getPackageInitializationDependencies().iterator(); pidi.hasNext();) { - Object pkg = pidi.next(); - if(!packages.contains(pkg)) { - packages.add(pkg); - } - } - %> - <%for (Iterator p=packages.iterator(); p.hasNext();) { GenPackage dep = (GenPackage)p.next();%> - <%=genModel.getImportedName("org.apache.tuscany.sdo.util.SDOUtil")%>.registerStaticTypes(<%=dep.getImportedFactoryInterfaceName()%>.class); - <%}%> + if (instance != null ) return instance; + instance = new <%=factoryType%>(); + // Initialize dependent packages + <%for (Iterator p=genPackage.getPackageInitializationDependencies().iterator(); p.hasNext();) { GenPackage dep = (GenPackage)p.next();%> + <%=dep.getImportedFactoryInterfaceName()%> <%=dep.getImportedFactoryInterfaceName()%>Instance = <%=dep.getImportedFactoryInterfaceName()%>.INSTANCE; + <%}%> + // Create package meta-data objects - the<%=factoryType%>.createMetaData(); + instance.createMetaData(); // Initialize created meta-data - the<%=factoryType%>.initializeMetaData(); - + instance.initializeMetaData(); + // Mark meta-data to indicate it can't be changed //the<%=factoryType%>.freeze(); //FB do we need to freeze / should we freeze ???? - return the<%=factoryType%>; + return instance; } private boolean isCreated = false; @@ -295,7 +292,7 @@ // Create types and their properties <%for (Iterator c=genPackage.getGenClasses().iterator(); c.hasNext();) { GenClass genClass = (GenClass)c.next();%> <%if (!genClass.isDynamic()) {%> - <%=genClass.getSafeUncapName()%>Type = createType(false, <%=genPackage.getClassifierID(genClass)%>); + <%=genClass.getSafeUncapName()%>Type = createType(false, <%=genPackage.getClassifierID(genClass)%>); <%for (Iterator j=genClass.getGenFeatures().iterator(); j.hasNext();) { GenFeature genFeature = (GenFeature)j.next();%> createProperty(<%=!genFeature.isReferenceType()%>, <%=genClass.getSafeUncapName()%>Type,<%=genClass.getClassName()%>.INTERNAL_<%=genFeature.getUpperName()%>); <%}%> @@ -321,7 +318,7 @@ // Obtain other dependent packages <%for (Iterator p=genPackage.getPackageInitializationDependencies().iterator(); p.hasNext();) { GenPackage dep = (GenPackage)p.next();%> - <%=dep.getImportedFactoryClassName()%> <%=genPackage.getPackageInstanceVariable(dep)%> = (<%=dep.getImportedFactoryClassName()%>)FactoryBase.getStaticFactory(<%=dep.getImportedFactoryClassName()%>.NAMESPACE_URI); + <%=dep.getImportedFactoryClassName()%> <%=genPackage.getPackageInstanceVariable(dep)%> = (<%=dep.getImportedFactoryClassName()%>)<%=dep.getImportedFactoryInterfaceName()%>.INSTANCE; <%}%> <%}%> <%List annotationSources = genPackage.getAnnotationSources();%>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
