Java Doc for AntProjectHelper.java in  » IDE-Netbeans » project.ant » org » netbeans » spi » project » support » ant » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » IDE Netbeans » project.ant » org.netbeans.spi.project.support.ant 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


java.lang.Object
   org.netbeans.spi.project.support.ant.AntProjectHelper

AntProjectHelper
final public class AntProjectHelper (Code)
Support class for implementing Ant-based projects.
author:
   Jesse Glick


Field Summary
final static  StringPRIVATE_NS
     XML namespace of private component of Ant projects.
final public static  StringPRIVATE_PROPERTIES_PATH
     Relative path from project directory to the customary private properties file.
final public static  StringPRIVATE_XML_PATH
     Relative path from project directory to the required private project metadata file.
final static  StringPROJECT_NS
     XML namespace of Ant projects.
final public static  StringPROJECT_PROPERTIES_PATH
     Relative path from project directory to the customary shared properties file.
final public static  StringPROJECT_XML_PATH
     Relative path from project directory to the required shared project metadata file.
static  booleanQUIETLY_SWALLOW_XML_LOAD_ERRORS
     If true, do not report XML load errors.


Method Summary
public  voidaddAntProjectListener(AntProjectListener listener)
     Add a listener to changes in the project configuration.
 voidcancelPendingHook()
    
public  AuxiliaryConfigurationcreateAuxiliaryConfiguration()
     Create an object permitting this project to store auxiliary configuration.
public  CacheDirectoryProvidercreateCacheDirectoryProvider()
     Create an object permitting this project to expose a cache directory.
public  FileBuiltQueryImplementationcreateGlobFileBuiltQuery(PropertyEvaluator eval, String[] from, String[] to)
     Create an implementation of org.netbeans.api.queries.FileBuiltQuery that works with files within the project based on simple glob pattern mappings.
public  SharabilityQueryImplementationcreateSharabilityQuery(PropertyEvaluator eval, String[] sourceRoots, String[] buildDirectories)
     Create an implementation of the file sharability query. You may specify a list of source roots to include that should be considered sharable, as well as a list of build directories that should not be considered sharable.

The project directory itself is automatically included in the list of sharable directories so you need not explicitly specify it. Similarly, the nbproject/private subdirectory is automatically excluded from VCS, so you do not need to explicitly specify it.

Any file (or directory) mentioned (explicitly or implicity) in the source directory list but not in any of the build directory lists, and not containing any build directories inside it, will be given as sharable.

public  AntArtifactcreateSimpleAntArtifact(String type, String locationProperty, PropertyEvaluator eval, String targetName, String cleanTargetName)
     Create a basic implementation of AntArtifact which assumes everything of interest is in a fixed location under a standard Ant-based project.
Parameters:
  type - the type of artifact, e.g.
 voidfireExternalChange(String path)
     Fire a change of external provenance to all listeners.
 ElementgetConfigurationFragment(String elementName, String namespace, boolean shared)
     Get a piece of the configuration subtree by name.
Parameters:
  elementName - the simple XML element name expected
Parameters:
  namespace - the XML namespace expected
Parameters:
  shared - to use project.xml vs.
public  StringgetLibrariesLocation()
     Returns location of shared libraries associated with this project or null.
public  ElementgetPrimaryConfigurationData(boolean shared)
     Get the primary configuration data for this project.
public  FileObjectgetProjectDirectory()
     Get the top-level project directory.
public  PropertyProvidergetProjectLibrariesPropertyProvider()
     Creates a property provider which can load definitions of project libraries.
public  EditablePropertiesgetProperties(String path)
     Load a property file from some location in the project.
public  PropertyProvidergetPropertyProvider(String path)
     Get a property provider that works with loadable project properties.
public  PropertyEvaluatorgetStandardPropertyEvaluator()
     Get a property evaluator that can evaluate properties according to the default file layout for Ant-based projects.
public  PropertyProvidergetStockPropertyPreprovider()
     Get a property provider which defines basedir according to the project directory and also copies all system properties in the current VM.
 AntBasedProjectTypegetType()
     Get the corresponding Ant-based project type factory.
 booleanisProjectXmlModified()
     Check whether this project is currently modified including modifications to project.xml.
public  booleanisSharableProject()
     Is this project shared with other or not, that is is it using shrared libraries or not.
 voidmarkModified()
     Mark this project as being modified without actually changing anything in it.
 voidmaybeCallPendingHook()
     See issue #57794.
 voidneedPendingHook()
    
public  voidnotifyDeleted()
     Notification that this project has been deleted.
 voidputConfigurationFragment(Element fragment, boolean shared)
     Store a piece of the configuration subtree by name.
Parameters:
  fragment - a piece of the subtree to store (overwrite or add)
Parameters:
  shared - to use project.xml vs.
public  voidputPrimaryConfigurationData(Element data, boolean shared)
     Store the primary configuration data for this project. The supplied element must be named according to AntBasedProjectType.getPrimaryConfigurationDataElementName and AntBasedProjectType.getPrimaryConfigurationDataElementNamespace . The project may save this document fragment to set custom information in nbproject/project.xml and nbproject/private/private.xml. The fragment will be cloned and so further modifications will have no effect.

Acquires write access from ProjectManager.mutex .

public  voidputProperties(String path, EditableProperties props)
     Store a property file to some location in the project. A clone will be made of the supplied properties file so as to snapshot it. The new properties are not actually stored to disk immediately, but the project is marked modified so that they will be later. You can store to a path that does not yet exist and the file will be created if and when the project is saved. If the old value is the same as the new, nothing is done. Otherwise an expected properties change event is fired.

Acquires write access from ProjectManager.mutex .

public  voidremoveAntProjectListener(AntProjectListener listener)
     Remove a listener to changes in the project configuration.
 booleanremoveConfigurationFragment(String elementName, String namespace, boolean shared)
     Remove a piece of the configuration subtree by name.
Parameters:
  elementName - the simple XML element name expected
Parameters:
  namespace - the XML namespace expected
Parameters:
  shared - to use project.xml vs.
public  FileresolveFile(String filename)
     Find an absolute file path from a possibly project-relative path.
public  FileObjectresolveFileObject(String filename)
     Same as AntProjectHelper.resolveFile , but produce a FileObject if possible.
public  StringresolvePath(String path)
     Take an Ant-style path specification and convert it to a platform-specific absolute path.
public  voidsetLibrariesLocation(String location)
     Change project's associated shared libraries location.
public  StringtoString()
    

Field Detail
PRIVATE_NS
final static String PRIVATE_NS(Code)
XML namespace of private component of Ant projects.



PRIVATE_PROPERTIES_PATH
final public static String PRIVATE_PROPERTIES_PATH(Code)
Relative path from project directory to the customary private properties file.



PRIVATE_XML_PATH
final public static String PRIVATE_XML_PATH(Code)
Relative path from project directory to the required private project metadata file.



PROJECT_NS
final static String PROJECT_NS(Code)
XML namespace of Ant projects.



PROJECT_PROPERTIES_PATH
final public static String PROJECT_PROPERTIES_PATH(Code)
Relative path from project directory to the customary shared properties file.



PROJECT_XML_PATH
final public static String PROJECT_XML_PATH(Code)
Relative path from project directory to the required shared project metadata file.



QUIETLY_SWALLOW_XML_LOAD_ERRORS
static boolean QUIETLY_SWALLOW_XML_LOAD_ERRORS(Code)
If true, do not report XML load errors. For use only by unit tests.





Method Detail
addAntProjectListener
public void addAntProjectListener(AntProjectListener listener)(Code)
Add a listener to changes in the project configuration.

Thread-safe.
Parameters:
  listener - a listener to add




cancelPendingHook
void cancelPendingHook()(Code)



createAuxiliaryConfiguration
public AuxiliaryConfiguration createAuxiliaryConfiguration()(Code)
Create an object permitting this project to store auxiliary configuration. Would be placed into the project's lookup. an auxiliary configuration provider object suitable for the project lookup



createCacheDirectoryProvider
public CacheDirectoryProvider createCacheDirectoryProvider()(Code)
Create an object permitting this project to expose a cache directory. Would be placed into the project's lookup. a cache directory provider object suitable for the project lookup



createGlobFileBuiltQuery
public FileBuiltQueryImplementation createGlobFileBuiltQuery(PropertyEvaluator eval, String[] from, String[] to) throws IllegalArgumentException(Code)
Create an implementation of org.netbeans.api.queries.FileBuiltQuery that works with files within the project based on simple glob pattern mappings.

It is intended to be placed in org.netbeans.api.project.Project.getLookup .

It will return status objects for any files in the project matching a source glob pattern - this must include exactly one asterisk (*) representing a variable portion of a source file path (always slash-separated and relative to the project directory) and may include some Ant property references which will be resolved as per the property evaluator. A file is considered out of date if there is no file represented by the matching target pattern (which has the same format), or the target file is older than the source file, or the source file is modified as per org.openide.loaders.DataObject.isModified . An attempt is made to fire changes from the status object whenever the result should change from one call to the next.

The (evaluated) source and target patterns may be relative, resolved against the project directory (perhaps going outside it), or absolute.

A typical set of source and target patterns would be:

  1. ${src.dir}/*.java
  2. ${test.src.dir}/*.java
  1. ${build.classes.dir}/*.class
  2. ${test.build.classes.dir}/*.class

Parameters:
  eval - a property evaluator to interpret the patterns with
Parameters:
  from - a list of glob patterns for source files
Parameters:
  to - a matching list of glob patterns for built files a query implementation
throws:
  IllegalArgumentException - if either from or to patternshave zero or multiple asterisks,or the arrays are not of equal lengths



createSharabilityQuery
public SharabilityQueryImplementation createSharabilityQuery(PropertyEvaluator eval, String[] sourceRoots, String[] buildDirectories)(Code)
Create an implementation of the file sharability query. You may specify a list of source roots to include that should be considered sharable, as well as a list of build directories that should not be considered sharable.

The project directory itself is automatically included in the list of sharable directories so you need not explicitly specify it. Similarly, the nbproject/private subdirectory is automatically excluded from VCS, so you do not need to explicitly specify it.

Any file (or directory) mentioned (explicitly or implicity) in the source directory list but not in any of the build directory lists, and not containing any build directories inside it, will be given as sharable. If a directory itself is sharable but some directory inside it is not, it will be given as mixed. A file or directory inside some build directory will be listed as not sharable. A file or directory matching neither the source list nor the build directory list will be treated as of unknown status, but in practice such a file should never have been passed to this implementation anyway - org.netbeans.api.queries.SharabilityQuery will normally only call an implementation in project lookup if the file is owned by that project.

Each entry in either list should be a string evaluated first for Ant property escapes (if any), then treated as a file path relative to the project directory (or it may be absolute).

It is permitted, and harmless, to include items that overlap others. For example, you can have both a directory and one of its children in the include list.

Whether or not you use this method, all files named *-private.properties outside the project are marked unsharable, as are such files inside the project if currently referenced as project libraries. (See AntProjectHelper.getProjectLibrariesPropertyProvider .)

Typical usage would be:

 helper.createSharabilityQuery(helper.getStandardPropertyEvaluator(),
 new String[] {"${src.dir}", "${test.src.dir}"},
 new String[] {"${build.dir}", "${dist.dir}"})
 

A quick rule of thumb is that the include list should contain any source directories which might reside outside the project directory; and the exclude list should contain any directories which you would want to add to a .cvsignore file if using CVS (for example).

Note that in this case ${src.dir} and ${test.src.dir} may be relative paths inside the project directory; relative paths pointing outside of the project directory; or absolute paths (generally outside of the project directory). If they refer to locations inside the project directory, including them does nothing but is harmless - since the project directory itself is always treated as sharable. If they refer to external locations, you will need to also make sure that org.netbeans.api.project.FileOwnerQuery actually maps files in those directories to this project, or else org.netbeans.api.queries.SharabilityQuery will never find this implementation in your project lookup and may return UNKNOWN.


Parameters:
  eval - a property evaluator to interpret paths with
Parameters:
  sourceRoots - a list of additional paths to treat as sharable
Parameters:
  buildDirectories - a list of paths to treat as not sharable a sharability query implementation suitable for the project lookup
See Also:   Project.getLookup



createSimpleAntArtifact
public AntArtifact createSimpleAntArtifact(String type, String locationProperty, PropertyEvaluator eval, String targetName, String cleanTargetName)(Code)
Create a basic implementation of AntArtifact which assumes everything of interest is in a fixed location under a standard Ant-based project.
Parameters:
  type - the type of artifact, e.g. JavaProjectConstants.ARTIFACT_TYPE_JAR
Parameters:
  locationProperty - an Ant property name giving the project-relativelocation of the artifact, e.g. dist.jar
Parameters:
  eval - a way to evaluate the location property (e.g. AntProjectHelper.getStandardPropertyEvaluator)
Parameters:
  targetName - the name of an Ant target which will build the artifact,e.g. jar
Parameters:
  cleanTargetName - the name of an Ant target which will delete the artifact(and maybe other build products), e.g. clean an artifact



fireExternalChange
void fireExternalChange(String path)(Code)
Fire a change of external provenance to all listeners. Acquires write access.
Parameters:
  path - path to the changed file (XML or properties)



getConfigurationFragment
Element getConfigurationFragment(String elementName, String namespace, boolean shared)(Code)
Get a piece of the configuration subtree by name.
Parameters:
  elementName - the simple XML element name expected
Parameters:
  namespace - the XML namespace expected
Parameters:
  shared - to use project.xml vs. private.xml (a clone of) the named configuration fragment, or null if it does not exist



getLibrariesLocation
public String getLibrariesLocation()(Code)
Returns location of shared libraries associated with this project or null. relative or absolute OS path or null
since:
   org.netbeans.modules.project.ant/1 1.19



getPrimaryConfigurationData
public Element getPrimaryConfigurationData(boolean shared)(Code)
Get the primary configuration data for this project. The returned element will be named according to AntBasedProjectType.getPrimaryConfigurationDataElementName and AntBasedProjectType.getPrimaryConfigurationDataElementNamespace . The project may read this document fragment to get custom information from nbproject/project.xml and nbproject/private/private.xml. The fragment will have no parent node and while it may be modified, you must use AntProjectHelper.putPrimaryConfigurationData to store any changes.
Parameters:
  shared - if true, refers to project.xml, else refers toprivate.xml the configuration data that is available



getProjectDirectory
public FileObject getProjectDirectory()(Code)
Get the top-level project directory. the project directory beneath which everything in the project lies



getProjectLibrariesPropertyProvider
public PropertyProvider getProjectLibrariesPropertyProvider()(Code)
Creates a property provider which can load definitions of project libraries. If this project refers to any project library definition files, they will be included, with ${base} replaced by the appropriate value. a property provider
since:
   org.netbeans.modules.project.ant/1 1.19
See Also:    Schema for project library references



getProperties
public EditableProperties getProperties(String path)(Code)
Load a property file from some location in the project. The returned object may be edited but you must call AntProjectHelper.putProperties to save any changes you make. If the file does not (yet) exist or could not be loaded for whatever reason, an empty properties list is returned instead.
Parameters:
  path - a relative URI in the project directory, e.g.AntProjectHelper.PROJECT_PROPERTIES_PATH or AntProjectHelper.PRIVATE_PROPERTIES_PATH a set of properties



getPropertyProvider
public PropertyProvider getPropertyProvider(String path)(Code)
Get a property provider that works with loadable project properties. Its current values should match AntProjectHelper.getProperties , and calls to AntProjectHelper.putProperties should cause it to fire changes.
Parameters:
  path - a relative URI in the project directory, e.g.AntProjectHelper.PROJECT_PROPERTIES_PATH or AntProjectHelper.PRIVATE_PROPERTIES_PATH a property provider implementation



getStandardPropertyEvaluator
public PropertyEvaluator getStandardPropertyEvaluator()(Code)
Get a property evaluator that can evaluate properties according to the default file layout for Ant-based projects. First, AntProjectHelper.getStockPropertyPreprovider stock properties are predefined. Then AntProjectHelper.PRIVATE_PROPERTIES_PATH is loaded via AntProjectHelper.getPropertyProvider , then AntProjectHelper.getProjectLibrariesPropertyProvider , then global definitions from PropertyUtils.globalPropertyProvider (though these may be overridden using the property user.properties.file in private.properties), then AntProjectHelper.PROJECT_PROPERTIES_PATH . a standard property evaluator



getStockPropertyPreprovider
public PropertyProvider getStockPropertyPreprovider()(Code)
Get a property provider which defines basedir according to the project directory and also copies all system properties in the current VM. It may also define ant.home and ant.core.lib if it is able. a stock property provider for initial Ant-related definitions
See Also:   PropertyUtils.sequentialPropertyEvaluator



getType
AntBasedProjectType getType()(Code)
Get the corresponding Ant-based project type factory.



isProjectXmlModified
boolean isProjectXmlModified()(Code)
Check whether this project is currently modified including modifications to project.xml. Access from GeneratedFilesHelper.



isSharableProject
public boolean isSharableProject()(Code)
Is this project shared with other or not, that is is it using shrared libraries or not. true for shared project
since:
   org.netbeans.modules.project.ant/1 1.19



markModified
void markModified()(Code)
Mark this project as being modified without actually changing anything in it. Should only be called from ProjectGenerator.createProject .



maybeCallPendingHook
void maybeCallPendingHook()(Code)
See issue #57794.



needPendingHook
void needPendingHook()(Code)



notifyDeleted
public void notifyDeleted()(Code)
Notification that this project has been deleted.
See Also:   org.netbeans.spi.project.ProjectState.notifyDeleted
since:
   1.8



putConfigurationFragment
void putConfigurationFragment(Element fragment, boolean shared)(Code)
Store a piece of the configuration subtree by name.
Parameters:
  fragment - a piece of the subtree to store (overwrite or add)
Parameters:
  shared - to use project.xml vs. private.xml



putPrimaryConfigurationData
public void putPrimaryConfigurationData(Element data, boolean shared) throws IllegalArgumentException(Code)
Store the primary configuration data for this project. The supplied element must be named according to AntBasedProjectType.getPrimaryConfigurationDataElementName and AntBasedProjectType.getPrimaryConfigurationDataElementNamespace . The project may save this document fragment to set custom information in nbproject/project.xml and nbproject/private/private.xml. The fragment will be cloned and so further modifications will have no effect.

Acquires write access from ProjectManager.mutex . However, you are well advised to explicitly enclose a complete operation within write access, starting with AntProjectHelper.getPrimaryConfigurationData , to prevent race conditions.
Parameters:
  data - the desired new configuration data
Parameters:
  shared - if true, refers to project.xml, else refers toprivate.xml
throws:
  IllegalArgumentException - if the element is not correctly named




putProperties
public void putProperties(String path, EditableProperties props)(Code)
Store a property file to some location in the project. A clone will be made of the supplied properties file so as to snapshot it. The new properties are not actually stored to disk immediately, but the project is marked modified so that they will be later. You can store to a path that does not yet exist and the file will be created if and when the project is saved. If the old value is the same as the new, nothing is done. Otherwise an expected properties change event is fired.

Acquires write access from ProjectManager.mutex . However, you are well advised to explicitly enclose a complete operation within write access, starting with AntProjectHelper.getProperties , to prevent race conditions.
Parameters:
  path - a relative URI in the project directory, e.g.AntProjectHelper.PROJECT_PROPERTIES_PATH or AntProjectHelper.PRIVATE_PROPERTIES_PATH
Parameters:
  props - a set of properties to store, or null to delete any existing properties file there




removeAntProjectListener
public void removeAntProjectListener(AntProjectListener listener)(Code)
Remove a listener to changes in the project configuration.

Thread-safe.
Parameters:
  listener - a listener to remove




removeConfigurationFragment
boolean removeConfigurationFragment(String elementName, String namespace, boolean shared)(Code)
Remove a piece of the configuration subtree by name.
Parameters:
  elementName - the simple XML element name expected
Parameters:
  namespace - the XML namespace expected
Parameters:
  shared - to use project.xml vs. private.xml true if anything was actually removed



resolveFile
public File resolveFile(String filename)(Code)
Find an absolute file path from a possibly project-relative path.
Parameters:
  filename - a pathname which may be project-relative or absolute and mayuse / or \ as the path separator an absolute file corresponding to it



resolveFileObject
public FileObject resolveFileObject(String filename)(Code)
Same as AntProjectHelper.resolveFile , but produce a FileObject if possible.
Parameters:
  filename - a pathname according to Ant conventions a file object it represents, or null if there is no such file object in known filesystems



resolvePath
public String resolvePath(String path)(Code)
Take an Ant-style path specification and convert it to a platform-specific absolute path. The path separator characters are converted to the local convention, and individual path components are resolved and cleaned up as for AntProjectHelper.resolveFile .
Parameters:
  path - an Ant-style abstract path an absolute, locally usable path



setLibrariesLocation
public void setLibrariesLocation(String location)(Code)
Change project's associated shared libraries location. If location is null then project will not have shared libraries and will be considered as not being shared.
Parameters:
  location - project relative or absolute OS path or null
since:
   org.netbeans.modules.project.ant/1 1.18



toString
public String toString()(Code)



Methods inherited from java.lang.Object
native protected Object clone() throws CloneNotSupportedException(Code)(Java Doc)
public boolean equals(Object obj)(Code)(Java Doc)
protected void finalize() throws Throwable(Code)(Java Doc)
final native public Class getClass()(Code)(Java Doc)
native public int hashCode()(Code)(Java Doc)
final native public void notify()(Code)(Java Doc)
final native public void notifyAll()(Code)(Java Doc)
public String toString()(Code)(Java Doc)
final native public void wait(long timeout) throws InterruptedException(Code)(Java Doc)
final public void wait(long timeout, int nanos) throws InterruptedException(Code)(Java Doc)
final public void wait() throws InterruptedException(Code)(Java Doc)

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.