You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "Michael Andrews (JIRA)" <ji...@apache.org> on 2008/08/13 02:13:44 UTC

[jira] Created: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

TupleWritable listed as public class but cannot be used without methods private to the package
----------------------------------------------------------------------------------------------

                 Key: HADOOP-3944
                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
             Project: Hadoop Core
          Issue Type: Improvement
          Components: documentation
    Affects Versions: 0.17.1
            Reporter: Michael Andrews
            Priority: Minor


Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Chris Douglas (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12623841#action_12623841 ] 

Chris Douglas commented on HADOOP-3944:
---------------------------------------

Sorry, I think I was unclear. The join package is for end-users and the value type returned from it (TupleWritable) should have javadoc. However, TupleWritable relies on said framework to enforce type safety and should not be used when a user wants a less general, composite type. Most often, creating a new Writable type will be what is actually required, and the confusion this creates as an unusable type is at least less destructive than what it would wreak when misunderstood.

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Enis Soztutar (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Enis Soztutar updated HADOOP-3944:
----------------------------------

      Resolution: Fixed
        Assignee: Chris Douglas
    Release Note: TupleWritable in join package needs to be public, but it is not supposed to be constructed/altered by users. This issue improves the javadoc for the TupleWritable, describing the use cases.  
    Hadoop Flags: [Reviewed]
          Status: Resolved  (was: Patch Available)

I have committed this. 

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Assignee: Chris Douglas
>            Priority: Trivial
>             Fix For: 0.19.0
>
>         Attachments: 3944-0.patch
>
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Michael Andrews (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12623834#action_12623834 ] 

Michael Andrews commented on HADOOP-3944:
-----------------------------------------

If the join package is only used internally, then javadoc can still be generated by using the -private flag (there is also an ant parameter that sets this in the javadoc target).  A developer javadoc target could be added, which most end users won't use (ala dist, or maintainer-mode).  This idea falls apart if end users also need access to the join package. 

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Chris Douglas (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Douglas updated HADOOP-3944:
----------------------------------

    Attachment: 3944-0.patch

Patch documenting the limitations of TupleWritable.

Also removed TupleWritable::mask(), which is not called since HADOOP-3721

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>             Fix For: 0.19.0
>
>         Attachments: 3944-0.patch
>
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Enis Soztutar (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Enis Soztutar resolved HADOOP-3944.
-----------------------------------

    Resolution: Won't Fix

I am closing this issue as won't fix. 

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Chris Douglas (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Douglas updated HADOOP-3944:
----------------------------------

    Priority: Trivial  (was: Minor)

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Trivial
>             Fix For: 0.19.0
>
>         Attachments: 3944-0.patch
>
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Robert Chansler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Robert Chansler updated HADOOP-3944:
------------------------------------

    Release Note:   (was: TupleWritable in join package needs to be public, but it is not supposed to be constructed/altered by users. This issue improves the javadoc for the TupleWritable, describing the use cases.  )

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Assignee: Chris Douglas
>            Priority: Trivial
>             Fix For: 0.19.0
>
>         Attachments: 3944-0.patch
>
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Doug Cutting (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12623784#action_12623784 ] 

Doug Cutting commented on HADOOP-3944:
--------------------------------------

I don't think ReflectionUtils#newInstance() requires that the constructor is public.  This was done specifically so that internal classes could be excluded from the javadoc.  If TupleWritable is not for end-users, it should not be in the javadoc.  Should we re-open this?

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Chris Douglas (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12623806#action_12623806 ] 

Chris Douglas commented on HADOOP-3944:
---------------------------------------

Anyone using the join package needs to know how to get data out of a TupleWritable, so generating the javadoc is pretty important. Most of the \*Written methods were kept package-private to discourage users from using TupleWritable instead of writing their own composite Writable, which can be much more efficiently encoded than it is. Further, TupleWritable itself is not only an affront to efficiency, but also type safety when used casually. By construction, the join framework should be reasonably responsible about its types, but there are many opportunities to misuse this.

I prefer the current arrangement, where the type generated by this framework is documented but not fully available to end-users. Some documentation on TupleWritable describing the intent would make it less confusing, though.

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Enis Soztutar (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12625284#action_12625284 ] 

Enis Soztutar commented on HADOOP-3944:
---------------------------------------

bq. I don't think ReflectionUtils#newInstance() requires that the constructor is public. This was done specifically so that internal classes could be excluded from the javadoc. 
Right, I missed the change in 0.5 which introduced skipping accessibility checks for constructors. 
+1 for better documenting TupleWritable. 

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Hudson (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12626575#action_12626575 ] 

Hudson commented on HADOOP-3944:
--------------------------------

Integrated in Hadoop-trunk #586 (See [http://hudson.zones.apache.org/hudson/job/Hadoop-trunk/586/])

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Assignee: Chris Douglas
>            Priority: Trivial
>             Fix For: 0.19.0
>
>         Attachments: 3944-0.patch
>
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Chris Douglas (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Douglas updated HADOOP-3944:
----------------------------------

    Fix Version/s: 0.19.0
           Status: Patch Available  (was: Reopened)

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>             Fix For: 0.19.0
>
>         Attachments: 3944-0.patch
>
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Reopened: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Chris Douglas (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Douglas reopened HADOOP-3944:
-----------------------------------


> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Enis Soztutar (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12622827#action_12622827 ] 

Enis Soztutar commented on HADOOP-3944:
---------------------------------------

You are right that it may be confusing to have public classes, that cannot be used outside its package. However due to Writable semantics, TupleWritable should be public so that other classes can instantiate them using reflection. 

You can use ArrayWritable which is similar. 


> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HADOOP-3944) TupleWritable listed as public class but cannot be used without methods private to the package

Posted by "Stuart Sierra (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12622286#action_12622286 ] 

Stuart Sierra commented on HADOOP-3944:
---------------------------------------

The visibility of TupleWritable in the javadocs is confusing to new users (like me), who may be tempted to use it as a general-purpose container object in MapReduce jobs, which doesn't work.

> TupleWritable listed as public class but cannot be used without methods private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but cannot use it correctly without the setWritten, and clearWritten methods being public.   It seems as the though the intent was to make TupleWritable hidden from the user as it is dependent on CompositeRecordReader.  As a possible solution, classes within a package can be made invisible to the user by omitting 'public' from the class definition.  In the case of TupleWritable, this removes the javadoc link from other classes in mapred.join and it's not clear if these classes should be hidden from the user.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.