Bug 307163 DBCS3.6: Resource Filter UI didn't restore grouped filters
Build Identifier: I20100313-1044 When reopening Resource Filters property editor after adding several filters under either of top-level AND/OR/NOT group, none of children in such top-level group filter is shown while settings are actually persisted in .project. Reproducible: Always Steps to Reproduce: 1. Create a project and add some files and folders. 2. Add resource filters to the project or the folder just created, and filters are grouped by AND/OR/NOT. 3. Ensure filters are active for exiting resources under the project. 4. Reopen "Resource Fileters" property editor 5. Verify the filters added in Step 2 are restored. Problem: None of child filters under top-level AND/OR/NOT group is shown Expected: All nested child filters under top-level AND/OR/NOT group are totally shown. Note that persistent entries for all filters are actually existing in a .project file.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java
private FilterCopyTransfer() {
		}
		public void javaToNative(Object object, TransferData transferData) {
			if (object == null || !(object instanceof FilterCopy[]))
				return;
			if (isSupportedType(transferData)) {
				FilterCopy[] myTypes = (FilterCopy[]) object;
				try {
					ByteArrayOutputStream out = new ByteArrayOutputStream();
					DataOutputStream writeOut = new DataOutputStream(out);
					writeOut.writeInt(myTypes.length);
					for (int i = 0; i < myTypes.length; i++)
						writeOut.writeInt(myTypes[i].getSerialNumber());
					byte[] buffer = out.toByteArray();
					writeOut.close();
					super.javaToNative(buffer, transferData);
				} catch (IOException e) {
				}
			}
		}
		public Object nativeToJava(TransferData transferData) {
			if (isSupportedType(transferData)) {
				byte[] buffer = (byte[]) super.nativeToJava(transferData);
				if (buffer == null)
					return null;
				FilterCopy[] myData = new FilterCopy[0];
				try {
					ByteArrayInputStream in = new ByteArrayInputStream(buffer);
					DataInputStream readIn = new DataInputStream(in);