This is an automated email from the ASF dual-hosted git repository. bschuchardt pushed a commit to branch feature/GEODE-7536b in repository https://gitbox.apache.org/repos/asf/geode.git
commit e7eb5b583970319e49587a0cf583bb3d2d0b88b5 Author: Bruce Schuchardt <[email protected]> AuthorDate: Mon Dec 9 11:30:24 2019 -0800 GEODE-7536: Add serialization analysis to geode-gfsh The new geode-gfsh module left all of its serializables in the sanctioned list from geode-core. This commit adds serialization analysis to the new module and removes geode-gfsh serializables from sanctioned-geode-core-serializables.txt. I had to modify the base test class to read the sanctioned list using a resource stream instead of a file. Geode-gfsh, for some reason, has the module's JAR file on the path and the test is finding the resource there instead of as a regular file. --- .../sanctioned-geode-core-serializables.txt | 112 --------------------- .../AnalyzeGfshSerializablesJUnitTest.java | 31 ++++++ .../apache/geode/codeAnalysis/excludedClasses.txt | 2 + .../org/apache/geode/codeAnalysis/openBugs.txt | 18 ++++ .../codeAnalysis/sanctionedDataSerializables.txt | 0 .../internal/GfshDistributedSystemService.java | 43 ++++++++ ...e.distributed.internal.DistributedSystemService | 16 +++ .../sanctioned-geode-gfsh-serializables.txt | 111 ++++++++++++++++++++ .../AnalyzeSerializablesJUnitTestBase.java | 27 +++-- .../geode/codeAnalysis/CompiledClassUtils.java | 11 +- 10 files changed, 244 insertions(+), 127 deletions(-) diff --git a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt index 80f480f..9497aec 100644 --- a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt +++ b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt @@ -401,8 +401,6 @@ org/apache/geode/internal/process/signal/SignalType,false,description:java/lang/ org/apache/geode/internal/security/SecurableCommunicationChannel,false,constant:java/lang/String org/apache/geode/internal/sequencelog/GraphType,false org/apache/geode/internal/sequencelog/model/GraphID,false,graphName:java/lang/String,type:org/apache/geode/internal/sequencelog/GraphType -org/apache/geode/internal/serialization/DSFIDNotFoundException,true,130596009484324655,dsfid:int,versionOrdinal:short -org/apache/geode/internal/serialization/UnsupportedSerializationVersionException,true,3572445857994216007 org/apache/geode/internal/size/ReflectionObjectSizer,false org/apache/geode/internal/size/SizeClassOnceObjectSizer,false org/apache/geode/internal/statistics/CounterMonitor$Type,false @@ -435,10 +433,6 @@ org/apache/geode/management/DependenciesNotFoundException,true,90823049292381598 org/apache/geode/management/JVMMetrics,false,committedMemory:long,gcCount:long,gcTimeMillis:long,initMemory:long,maxMemory:long,totalThreads:int,usedMemory:long org/apache/geode/management/ManagementException,true,879398950879472121 org/apache/geode/management/OSMetrics,false,arch:java/lang/String,availableProcessors:int,committedVirtualMemorySize:long,freePhysicalMemorySize:long,freeSwapSpaceSize:long,maxFileDescriptorCount:long,name:java/lang/String,openFileDescriptorCount:long,processCpuTime:long,systemLoadAverage:double,totalPhysicalMemorySize:long,totalSwapSpaceSize:long,version:java/lang/String -org/apache/geode/management/cli/CliFunction,false -org/apache/geode/management/cli/CommandProcessingException,true,-1398779521639575884,errorData:java/lang/Object,errorType:int -org/apache/geode/management/cli/CommandServiceException,true,7316102209844678329 -org/apache/geode/management/cli/Result$Status,false,code:int org/apache/geode/management/internal/BackupStatusImpl,true,3704172840296221840,backedUpDiskStores:java/util/Map,offlineDiskStores:java/util/Set org/apache/geode/management/internal/CacheElementOperation,false org/apache/geode/management/internal/ContextAwareSSLRMIClientSocketFactory,true,8159615071011918570 @@ -450,112 +444,6 @@ org/apache/geode/management/internal/beans/FileUploader$RemoteFile,false,filenam org/apache/geode/management/internal/beans/QueryDataFunction,true,1 org/apache/geode/management/internal/beans/QueryDataFunction$LocalQueryFunction,true,1,id:java/lang/String,optimizeForWrite:boolean,regionName:java/lang/String,showMembers:boolean,this$0:org/apache/geode/management/internal/beans/QueryDataFunction org/apache/geode/management/internal/beans/stats/StatType,false -org/apache/geode/management/internal/cli/AbstractCliAroundInterceptor$Response,false,text:java/lang/String -org/apache/geode/management/internal/cli/CliUtil$DeflaterInflaterData,true,1104813333595216795,data:byte[],dataLength:int -org/apache/geode/management/internal/cli/commands/CreateJndiBindingCommand$DATASOURCE_TYPE,false,type:java/lang/String -org/apache/geode/management/internal/cli/commands/ImportClusterConfigurationCommand$Action,false -org/apache/geode/management/internal/cli/domain/AsyncEventQueueDetails,true,1,batchSize:int,createdWithPausedEventProcessing:boolean,diskStoreName:java/lang/String,id:java/lang/String,listener:java/lang/String,listenerProperties:java/util/Properties,maxQueueMemory:int,pausedEventProcessing:boolean,persistent:boolean -org/apache/geode/management/internal/cli/domain/DataCommandRequest,false,command:java/lang/String,key:java/lang/String,keyClass:java/lang/String,loadOnCacheMiss:boolean,principal:java/lang/Object,putIfAbsent:boolean,query:java/lang/String,recursive:boolean,regionName:java/lang/String,removeAllKeys:java/lang/String,value:java/lang/String,valueClass:java/lang/String -org/apache/geode/management/internal/cli/domain/DataCommandResult,true,2601227194108110936,command:java/lang/String,error:java/lang/Throwable,errorString:java/lang/String,getResult:java/lang/Object,hasResultForAggregation:boolean,infoString:java/lang/String,inputKey:java/lang/Object,inputQuery:java/lang/Object,inputValue:java/lang/Object,keyClass:java/lang/String,limit:int,locateEntryLocations:java/util/List,locateEntryResult:org/apache/geode/management/internal/cli/domain/DataCommandRes [...] -org/apache/geode/management/internal/cli/domain/DataCommandResult$KeyInfo,false,host:java/lang/String,locations:java/util/ArrayList,memberId:java/lang/String,memberName:java/lang/String,pid:int -org/apache/geode/management/internal/cli/domain/DataCommandResult$SelectResultRow,true,1,columnValues:java/util/Map,type:int -org/apache/geode/management/internal/cli/domain/DiskStoreDetails,false,allowForceCompaction:java/lang/Boolean,asyncEventQueueDetailsSet:java/util/Set,autoCompact:java/lang/Boolean,cacheServerDetailsSet:java/util/Set,compactionThreshold:java/lang/Integer,diskDirDetailsSet:java/util/Set,diskUsageCriticalPercentage:java/lang/Float,diskUsageWarningPercentage:java/lang/Float,gatewayDetailsSet:java/util/Set,id:java/util/UUID,maxOplogSize:java/lang/Long,memberId:java/lang/String,memberName:java [...] -org/apache/geode/management/internal/cli/domain/DiskStoreDetails$AsyncEventQueueDetails,false,id:java/lang/String -org/apache/geode/management/internal/cli/domain/DiskStoreDetails$CacheServerDetails,false,bindAddress:java/lang/String,hostName:java/lang/String,port:int -org/apache/geode/management/internal/cli/domain/DiskStoreDetails$DiskDirDetails,false,absolutePath:java/lang/String,size:int -org/apache/geode/management/internal/cli/domain/DiskStoreDetails$GatewayDetails,false,id:java/lang/String,persistent:boolean -org/apache/geode/management/internal/cli/domain/DiskStoreDetails$RegionDetails,false,fullPath:java/lang/String,name:java/lang/String,overflowToDisk:boolean,persistent:boolean -org/apache/geode/management/internal/cli/domain/EvictionAttributesInfo,true,1,evictionAction:java/lang/String,evictionAlgorithm:java/lang/String,evictionMaxValue:int,nonDefaultAttributes:java/util/Map -org/apache/geode/management/internal/cli/domain/FixedPartitionAttributesInfo,true,1,isPrimary:boolean,numBuckets:int,partitionName:java/lang/String -org/apache/geode/management/internal/cli/domain/IndexDetails,true,-2198907141534201288,fromClause:java/lang/String,indexName:java/lang/String,indexStatisticsDetails:org/apache/geode/management/internal/cli/domain/IndexDetails$IndexStatisticsDetails,indexType:org/apache/geode/cache/query/IndexType,indexedExpression:java/lang/String,isValid:boolean,memberId:java/lang/String,memberName:java/lang/String,projectionAttributes:java/lang/String,regionName:java/lang/String,regionPath:java/lang/String -org/apache/geode/management/internal/cli/domain/IndexDetails$IndexStatisticsDetails,false,numberOfKeys:java/lang/Long,numberOfUpdates:java/lang/Long,numberOfValues:java/lang/Long,totalUpdateTime:java/lang/Long,totalUses:java/lang/Long -org/apache/geode/management/internal/cli/domain/MemberConfigurationInfo,false,cacheAttributes:java/util/Map,cacheServerAttributes:java/util/List,gfePropsRuntime:java/util/Map,gfePropsSetFromFile:java/util/Map,gfePropsSetUsingApi:java/util/Map,gfePropsSetWithDefaults:java/util/Map,jvmInputArguments:java/util/List,pdxAttributes:java/util/Map,systemProperties:java/util/Properties -org/apache/geode/management/internal/cli/domain/PartitionAttributesInfo,true,1,colocatedWith:java/lang/String,fpaInfoList:java/util/List,localMaxMemory:int,nonDefaultAttributes:java/util/Map,partitionResolverName:java/lang/String,recoveryDelay:long,redundantCopies:int,startupRecoveryDelay:long,totalNumBuckets:int -org/apache/geode/management/internal/cli/domain/RegionAttributesInfo,true,336184564012988487,asyncEventQueueIDs:java/util/Set,cacheListenerClassNames:java/util/List,cacheLoaderClassName:java/lang/String,cacheWriterClassName:java/lang/String,cloningEnabled:boolean,compressorClassName:java/lang/String,concurrencyChecksEnabled:boolean,concurrencyLevel:int,customExpiryIdleTimeoutClass:java/lang/String,customExpiryTTLClass:java/lang/String,dataPolicy:org/apache/geode/cache/DataPolicy,diskStor [...] -org/apache/geode/management/internal/cli/domain/RegionDescription,true,6461449275798378332,cndEvictionAttributes:java/util/Map,cndPartitionAttributes:java/util/Map,cndRegionAttributes:java/util/Map,dataPolicy:org/apache/geode/cache/DataPolicy,isAccessor:boolean,isLocal:boolean,isPartition:boolean,isPersistent:boolean,isReplicate:boolean,name:java/lang/String,regionDescPerMemberMap:java/util/Map,scope:org/apache/geode/cache/Scope -org/apache/geode/management/internal/cli/domain/RegionDescriptionPerMember,true,1,hostingMember:java/lang/String,isAccessor:boolean,name:java/lang/String,regionAttributesInfo:org/apache/geode/management/internal/cli/domain/RegionAttributesInfo,size:int -org/apache/geode/management/internal/cli/domain/RegionInformation,true,1,dataPolicy:org/apache/geode/cache/DataPolicy,isRoot:boolean,name:java/lang/String,parentRegion:java/lang/String,path:java/lang/String,scope:org/apache/geode/cache/Scope,subRegionInformationSet:java/util/Set -org/apache/geode/management/internal/cli/domain/StackTracesPerMember,true,1,memberNameOrId:java/lang/String,stackTraces:byte[],timestamp:java/time/Instant -org/apache/geode/management/internal/cli/functions/AlterQueryServiceFunction,true,7155576168386556341 -org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction,true,1 -org/apache/geode/management/internal/cli/functions/AsyncEventQueueFunctionArgs,true,-6524494645663740872,asyncEventQueueId:java/lang/String,batchSize:int,batchTimeInterval:int,diskStoreName:java/lang/String,diskSynchronous:boolean,dispatcherThreads:int,enableBatchConflation:boolean,forwardExpirationDestroy:boolean,gatewayEventFilters:java/lang/String[],gatewaySubstitutionFilter:java/lang/String,isParallel:boolean,listenerClassName:java/lang/String,listenerProperties:java/util/Properties, [...] -org/apache/geode/management/internal/cli/functions/ChangeLogLevelFunction,true,1 -org/apache/geode/management/internal/cli/functions/CloseDurableClientFunction,true,1 -org/apache/geode/management/internal/cli/functions/CloseDurableCqFunction,true,1 -org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction,true,1 -org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction$ClientInfo,true,1,isDurable:java/lang/String,primaryServer:java/lang/String,secondaryServer:java/lang/String,this$0:org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction -org/apache/geode/management/internal/cli/functions/CreateAsyncEventQueueFunction,true,1 -org/apache/geode/management/internal/cli/functions/CreateDefinedIndexesFunction,true,6756381106602823693 -org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction,true,1 -org/apache/geode/management/internal/cli/functions/CreateIndexFunction,true,1 -org/apache/geode/management/internal/cli/functions/CreateJndiBindingFunction,false -org/apache/geode/management/internal/cli/functions/CreateRegionFunctionArgs,false,config:org/apache/geode/cache/configuration/RegionConfig,ifNotExists:boolean,regionPath:java/lang/String -org/apache/geode/management/internal/cli/functions/DataCommandFunction,true,1,optimizeForWrite:boolean -org/apache/geode/management/internal/cli/functions/DeployFunction,true,1 -org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunction,false -org/apache/geode/management/internal/cli/functions/DescribeQueryServiceFunction,true,8283480284191516847 -org/apache/geode/management/internal/cli/functions/DestroyAsyncEventQueueFunction,true,-7754359270344102817 -org/apache/geode/management/internal/cli/functions/DestroyAsyncEventQueueFunctionArgs,true,1755045410754561928,id:java/lang/String,ifExists:boolean -org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunction,true,1 -org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunctionArgs,true,2296397958405313306,id:java/lang/String,ifExists:boolean -org/apache/geode/management/internal/cli/functions/DestroyGatewayReceiverFunction,true,1490927519860899562 -org/apache/geode/management/internal/cli/functions/DestroyIndexFunction,true,-868082551095130315 -org/apache/geode/management/internal/cli/functions/DestroyJndiBindingFunction,false -org/apache/geode/management/internal/cli/functions/ExportConfigFunction,true,1 -org/apache/geode/management/internal/cli/functions/ExportDataFunction,true,1 -org/apache/geode/management/internal/cli/functions/ExportLogsFunction,true,1 -org/apache/geode/management/internal/cli/functions/ExportLogsFunction$Args,false,endTime:java/time/LocalDateTime,includeLogs:boolean,includeStats:boolean,logLevel:org/apache/logging/log4j/Level,startTime:java/time/LocalDateTime,thisLogLevelOnly:boolean -org/apache/geode/management/internal/cli/functions/FetchRegionAttributesFunction,true,4366812590788342070 -org/apache/geode/management/internal/cli/functions/FetchSharedConfigurationStatusFunction,true,1 -org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction,true,1 -org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction,true,8746830191680509335 -org/apache/geode/management/internal/cli/functions/GatewaySenderCreateFunction,true,8746830191680509335 -org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunction,true,1 -org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunctionArgs,true,3848480256348119530,id:java/lang/String,ifExists:boolean -org/apache/geode/management/internal/cli/functions/GatewaySenderFunctionArgs,true,4636678328980816780,alertThreshold:java/lang/Integer,batchSize:java/lang/Integer,batchTimeInterval:java/lang/Integer,diskStoreName:java/lang/String,diskSynchronous:java/lang/Boolean,dispatcherThreads:java/lang/Integer,enableBatchConflation:java/lang/Boolean,enablePersistence:java/lang/Boolean,gatewayEventFilters:java/util/List,gatewayTransportFilters:java/util/List,id:java/lang/String,manualStart:java/lang/ [...] -org/apache/geode/management/internal/cli/functions/GetMemberConfigInformationFunction,true,1 -org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction,true,1 -org/apache/geode/management/internal/cli/functions/GetRegionsFunction,true,1 -org/apache/geode/management/internal/cli/functions/GetStackTracesFunction,true,1 -org/apache/geode/management/internal/cli/functions/GetSubscriptionQueueSizeFunction,true,1 -org/apache/geode/management/internal/cli/functions/ImportDataFunction,true,1 -org/apache/geode/management/internal/cli/functions/ListAsyncEventQueuesFunction,true,1 -org/apache/geode/management/internal/cli/functions/ListDeployedFunction,true,1 -org/apache/geode/management/internal/cli/functions/ListDiskStoresFunction,false -org/apache/geode/management/internal/cli/functions/ListDurableCqNamesFunction,true,1 -org/apache/geode/management/internal/cli/functions/ListFunctionFunction,true,1 -org/apache/geode/management/internal/cli/functions/ListIndexFunction,false -org/apache/geode/management/internal/cli/functions/ListJndiBindingFunction,true,5254506785395069200 -org/apache/geode/management/internal/cli/functions/NetstatFunction,true,1 -org/apache/geode/management/internal/cli/functions/NetstatFunction$NetstatFunctionArgument,true,1,lineSeparator:java/lang/String,withlsof:boolean -org/apache/geode/management/internal/cli/functions/NetstatFunction$NetstatFunctionResult,true,1,compressedBytes:org/apache/geode/management/internal/cli/CliUtil$DeflaterInflaterData,headerInfo:java/lang/String,host:java/lang/String -org/apache/geode/management/internal/cli/functions/RegionAlterFunction,true,-4846425364943216425 -org/apache/geode/management/internal/cli/functions/RegionAttributesWrapper,true,-5517424520268271436,cacheListenerClasses:java/util/List,cacheLoaderClass:org/apache/geode/management/configuration/ClassName,cacheWriterClass:org/apache/geode/management/configuration/ClassName,compressorClass:java/lang/String,keyConstraintClass:java/lang/String,regionAttributes:org/apache/geode/cache/RegionAttributes,valueConstraintClass:java/lang/String -org/apache/geode/management/internal/cli/functions/RegionCreateFunction,true,8746830191680509335 -org/apache/geode/management/internal/cli/functions/RegionDestroyFunction,true,9172773671865750685 -org/apache/geode/management/internal/cli/functions/RegionFunctionArgs,true,2204943186081037302,asyncEventQueueIds:java/util/Set,cacheListeners:java/util/Set,cacheLoader:org/apache/geode/management/configuration/ClassName,cacheWriter:org/apache/geode/management/configuration/ClassName,cloningEnabled:java/lang/Boolean,compressor:java/lang/String,concurrencyChecksEnabled:java/lang/Boolean,concurrencyLevel:java/lang/Integer,diskStore:java/lang/String,diskSynchronous:java/lang/Boolean,enableA [...] -org/apache/geode/management/internal/cli/functions/RegionFunctionArgs$EvictionAttrs,true,9015454906371076014,evictionAction:java/lang/String,maxEntryCount:java/lang/Integer,maxMemory:java/lang/Integer,objectSizer:java/lang/String -org/apache/geode/management/internal/cli/functions/RegionFunctionArgs$ExpirationAttrs,true,1474255033398008063,action:org/apache/geode/cache/ExpirationAction,time:java/lang/Integer -org/apache/geode/management/internal/cli/functions/RegionFunctionArgs$PartitionArgs,true,5907052187323280919,partitionResolver:java/lang/String,prColocatedWith:java/lang/String,prLocalMaxMemory:java/lang/Integer,prRecoveryDelay:java/lang/Long,prRedundantCopies:java/lang/Integer,prStartupRecoveryDelay:java/lang/Long,prTotalMaxMemory:java/lang/Long,prTotalNumBuckets:java/lang/Integer -org/apache/geode/management/internal/cli/functions/ResumeAsyncEventQueueDispatcherFunction,false -org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction,false -org/apache/geode/management/internal/cli/functions/ShutDownFunction,true,1 -org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction,true,1 -org/apache/geode/management/internal/cli/functions/UndeployFunction,true,1 -org/apache/geode/management/internal/cli/functions/UnregisterFunction,true,1 -org/apache/geode/management/internal/cli/functions/UserFunctionExecution,true,1 -org/apache/geode/management/internal/cli/result/CommandResultException,true,1,result:org/apache/geode/management/cli/Result -org/apache/geode/management/internal/cli/result/TableBuilder$Align,false -org/apache/geode/management/internal/cli/result/TableBuilderHelper$TooManyColumnsException,false -org/apache/geode/management/internal/cli/shell/JMXConnectionException,true,3872374016604940917,exceptionType:int -org/apache/geode/management/internal/cli/shell/JMXInvocationException,true,-4265451314790394366 -org/apache/geode/management/internal/cli/shell/jline/ANSIHandler$ANSIStyle,false -org/apache/geode/management/internal/cli/util/EvictionAttributesInfo,true,1,evictionAction:java/lang/String,evictionAlgorithm:java/lang/String,evictionMaxValue:int -org/apache/geode/management/internal/cli/util/ExportLogsCacheWriter,false,currentFile:java/nio/file/Path,currentOutputStream:java/io/BufferedOutputStream,isEmpty:boolean -org/apache/geode/management/internal/cli/util/FixedPartitionAttributesInfo,false,isPrimary:boolean,numBuckets:int,partitionName:java/lang/String -org/apache/geode/management/internal/cli/util/JConsoleNotFoundException,true,-1485615321440327206 -org/apache/geode/management/internal/cli/util/LogFilter$LineFilterResult,false -org/apache/geode/management/internal/cli/util/VisualVmNotFoundException,true,-8491645604829510102 org/apache/geode/management/internal/configuration/domain/SharedConfigurationStatus,false org/apache/geode/management/internal/configuration/functions/DownloadJarFunction,true,1 org/apache/geode/management/internal/configuration/functions/GetClusterConfigurationFunction,false diff --git a/geode-gfsh/src/integrationTest/java/org/apache/geode/codeAnalysis/AnalyzeGfshSerializablesJUnitTest.java b/geode-gfsh/src/integrationTest/java/org/apache/geode/codeAnalysis/AnalyzeGfshSerializablesJUnitTest.java new file mode 100755 index 0000000..6b95f6d --- /dev/null +++ b/geode-gfsh/src/integrationTest/java/org/apache/geode/codeAnalysis/AnalyzeGfshSerializablesJUnitTest.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.codeAnalysis; + + +import org.apache.geode.management.internal.GfshDistributedSystemService; + +public class AnalyzeGfshSerializablesJUnitTest extends AnalyzeSerializablesJUnitTestBase { + + @Override + protected String getModuleName() { + return "geode-gfsh"; + } + + @Override + protected Class getModuleClass() { + return GfshDistributedSystemService.class; + } +} diff --git a/geode-gfsh/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt b/geode-gfsh/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt new file mode 100644 index 0000000..8ce0692 --- /dev/null +++ b/geode-gfsh/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt @@ -0,0 +1,2 @@ +# e.g., +#org/apache/geode/cache/query/CqAttributesFactory diff --git a/geode-gfsh/src/integrationTest/resources/org/apache/geode/codeAnalysis/openBugs.txt b/geode-gfsh/src/integrationTest/resources/org/apache/geode/codeAnalysis/openBugs.txt new file mode 100644 index 0000000..bf62d60 --- /dev/null +++ b/geode-gfsh/src/integrationTest/resources/org/apache/geode/codeAnalysis/openBugs.txt @@ -0,0 +1,18 @@ +# This is a list of classes excluded due to open bugs about their having +# incompatible changes. There should be no entries in this file at the +# time of a product release. + +# Each entry should be a bug number followed by a comma and the +# full class name. The package components can be delimited with a period +# or a comma. Don't include ".class" or ".java" at the end of the name. + +# example: 50174,org/apache/geode/distributed/internal/StartupResponseWithVersionMessage +# example: 50175,com.gemstone.org.jgroups.Message$Header + + +# ~~~~~~~~~~~~~~~~~~~ DataSerializables ~~~~~~~~~~~~~~~~~~~~~~~~~ +# these are failures from testDataSerializables + + +# ~~~~~~~~~~~~~~~~~~~ Serializables ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# these are failures from testSerializables diff --git a/geode-gfsh/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt b/geode-gfsh/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt new file mode 100644 index 0000000..e69de29 diff --git a/geode-gfsh/src/main/java/org/apache/geode/management/internal/GfshDistributedSystemService.java b/geode-gfsh/src/main/java/org/apache/geode/management/internal/GfshDistributedSystemService.java new file mode 100644 index 0000000..dbf7189 --- /dev/null +++ b/geode-gfsh/src/main/java/org/apache/geode/management/internal/GfshDistributedSystemService.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.management.internal; + +import java.io.IOException; +import java.net.URL; +import java.util.Collection; + +import org.apache.geode.distributed.internal.DistributedSystemService; +import org.apache.geode.distributed.internal.InternalDistributedSystem; +import org.apache.geode.internal.ClassPathLoader; +import org.apache.geode.internal.InternalDataSerializer; + +public class GfshDistributedSystemService implements DistributedSystemService { + @Override + public void init(InternalDistributedSystem internalDistributedSystem) { + + } + + @Override + public Class getInterface() { + return getClass(); + } + + @Override + public Collection<String> getSerializationAcceptlist() throws IOException { + URL sanctionedSerializables = ClassPathLoader.getLatest().getResource(getClass(), + "sanctioned-geode-gfsh-serializables.txt"); + return InternalDataSerializer.loadClassNames(sanctionedSerializables); + } +} diff --git a/geode-gfsh/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService b/geode-gfsh/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService new file mode 100644 index 0000000..4a0427d --- /dev/null +++ b/geode-gfsh/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +org.apache.geode.management.internal.GfshDistributedSystemService + diff --git a/geode-gfsh/src/main/resources/org/apache/geode/management/internal/sanctioned-geode-gfsh-serializables.txt b/geode-gfsh/src/main/resources/org/apache/geode/management/internal/sanctioned-geode-gfsh-serializables.txt new file mode 100644 index 0000000..7b34faf --- /dev/null +++ b/geode-gfsh/src/main/resources/org/apache/geode/management/internal/sanctioned-geode-gfsh-serializables.txt @@ -0,0 +1,111 @@ +org/apache/geode/management/cli/CliFunction,false +org/apache/geode/management/cli/CommandProcessingException,true,-1398779521639575884,errorData:java/lang/Object,errorType:int +org/apache/geode/management/cli/CommandServiceException,true,7316102209844678329 +org/apache/geode/management/cli/Result$Status,false,code:int +org/apache/geode/management/internal/cli/AbstractCliAroundInterceptor$Response,false,text:java/lang/String +org/apache/geode/management/internal/cli/CliUtil$DeflaterInflaterData,true,1104813333595216795,data:byte[],dataLength:int +org/apache/geode/management/internal/cli/commands/CreateJndiBindingCommand$DATASOURCE_TYPE,false,type:java/lang/String +org/apache/geode/management/internal/cli/commands/ImportClusterConfigurationCommand$Action,false +org/apache/geode/management/internal/cli/commands/ShowMetricsCommand$Category,false +org/apache/geode/management/internal/cli/domain/AsyncEventQueueDetails,true,1,batchSize:int,createdWithPausedEventProcessing:boolean,diskStoreName:java/lang/String,id:java/lang/String,listener:java/lang/String,listenerProperties:java/util/Properties,maxQueueMemory:int,pausedEventProcessing:boolean,persistent:boolean +org/apache/geode/management/internal/cli/domain/DataCommandRequest,false,command:java/lang/String,key:java/lang/String,keyClass:java/lang/String,loadOnCacheMiss:boolean,principal:java/lang/Object,putIfAbsent:boolean,query:java/lang/String,recursive:boolean,regionName:java/lang/String,removeAllKeys:java/lang/String,value:java/lang/String,valueClass:java/lang/String +org/apache/geode/management/internal/cli/domain/DataCommandResult,true,2601227194108110936,command:java/lang/String,error:java/lang/Throwable,errorString:java/lang/String,getResult:java/lang/Object,hasResultForAggregation:boolean,infoString:java/lang/String,inputKey:java/lang/Object,inputQuery:java/lang/Object,inputValue:java/lang/Object,keyClass:java/lang/String,limit:int,locateEntryLocations:java/util/List,locateEntryResult:org/apache/geode/management/internal/cli/domain/DataCommandRes [...] +org/apache/geode/management/internal/cli/domain/DataCommandResult$KeyInfo,false,host:java/lang/String,locations:java/util/ArrayList,memberId:java/lang/String,memberName:java/lang/String,pid:int +org/apache/geode/management/internal/cli/domain/DataCommandResult$SelectResultRow,true,1,columnValues:java/util/Map,type:int +org/apache/geode/management/internal/cli/domain/DiskStoreDetails,false,allowForceCompaction:java/lang/Boolean,asyncEventQueueDetailsSet:java/util/Set,autoCompact:java/lang/Boolean,cacheServerDetailsSet:java/util/Set,compactionThreshold:java/lang/Integer,diskDirDetailsSet:java/util/Set,diskUsageCriticalPercentage:java/lang/Float,diskUsageWarningPercentage:java/lang/Float,gatewayDetailsSet:java/util/Set,id:java/util/UUID,maxOplogSize:java/lang/Long,memberId:java/lang/String,memberName:java [...] +org/apache/geode/management/internal/cli/domain/DiskStoreDetails$AsyncEventQueueDetails,false,id:java/lang/String +org/apache/geode/management/internal/cli/domain/DiskStoreDetails$CacheServerDetails,false,bindAddress:java/lang/String,hostName:java/lang/String,port:int +org/apache/geode/management/internal/cli/domain/DiskStoreDetails$DiskDirDetails,false,absolutePath:java/lang/String,size:int +org/apache/geode/management/internal/cli/domain/DiskStoreDetails$GatewayDetails,false,id:java/lang/String,persistent:boolean +org/apache/geode/management/internal/cli/domain/DiskStoreDetails$RegionDetails,false,fullPath:java/lang/String,name:java/lang/String,overflowToDisk:boolean,persistent:boolean +org/apache/geode/management/internal/cli/domain/EvictionAttributesInfo,true,1,evictionAction:java/lang/String,evictionAlgorithm:java/lang/String,evictionMaxValue:int,nonDefaultAttributes:java/util/Map +org/apache/geode/management/internal/cli/domain/FixedPartitionAttributesInfo,true,1,isPrimary:boolean,numBuckets:int,partitionName:java/lang/String +org/apache/geode/management/internal/cli/domain/IndexDetails,true,-2198907141534201288,fromClause:java/lang/String,indexName:java/lang/String,indexStatisticsDetails:org/apache/geode/management/internal/cli/domain/IndexDetails$IndexStatisticsDetails,indexType:org/apache/geode/cache/query/IndexType,indexedExpression:java/lang/String,isValid:boolean,memberId:java/lang/String,memberName:java/lang/String,projectionAttributes:java/lang/String,regionName:java/lang/String,regionPath:java/lang/String +org/apache/geode/management/internal/cli/domain/IndexDetails$IndexStatisticsDetails,false,numberOfKeys:java/lang/Long,numberOfUpdates:java/lang/Long,numberOfValues:java/lang/Long,totalUpdateTime:java/lang/Long,totalUses:java/lang/Long +org/apache/geode/management/internal/cli/domain/MemberConfigurationInfo,false,cacheAttributes:java/util/Map,cacheServerAttributes:java/util/List,gfePropsRuntime:java/util/Map,gfePropsSetFromFile:java/util/Map,gfePropsSetUsingApi:java/util/Map,gfePropsSetWithDefaults:java/util/Map,jvmInputArguments:java/util/List,pdxAttributes:java/util/Map,systemProperties:java/util/Properties +org/apache/geode/management/internal/cli/domain/PartitionAttributesInfo,true,1,colocatedWith:java/lang/String,fpaInfoList:java/util/List,localMaxMemory:int,nonDefaultAttributes:java/util/Map,partitionResolverName:java/lang/String,recoveryDelay:long,redundantCopies:int,startupRecoveryDelay:long,totalNumBuckets:int +org/apache/geode/management/internal/cli/domain/RegionAttributesInfo,true,336184564012988487,asyncEventQueueIDs:java/util/Set,cacheListenerClassNames:java/util/List,cacheLoaderClassName:java/lang/String,cacheWriterClassName:java/lang/String,cloningEnabled:boolean,compressorClassName:java/lang/String,concurrencyChecksEnabled:boolean,concurrencyLevel:int,customExpiryIdleTimeoutClass:java/lang/String,customExpiryTTLClass:java/lang/String,dataPolicy:org/apache/geode/cache/DataPolicy,diskStor [...] +org/apache/geode/management/internal/cli/domain/RegionDescription,true,6461449275798378332,cndEvictionAttributes:java/util/Map,cndPartitionAttributes:java/util/Map,cndRegionAttributes:java/util/Map,dataPolicy:org/apache/geode/cache/DataPolicy,isAccessor:boolean,isLocal:boolean,isPartition:boolean,isPersistent:boolean,isReplicate:boolean,name:java/lang/String,regionDescPerMemberMap:java/util/Map,scope:org/apache/geode/cache/Scope +org/apache/geode/management/internal/cli/domain/RegionDescriptionPerMember,true,1,hostingMember:java/lang/String,isAccessor:boolean,name:java/lang/String,regionAttributesInfo:org/apache/geode/management/internal/cli/domain/RegionAttributesInfo,size:int +org/apache/geode/management/internal/cli/domain/RegionInformation,true,1,dataPolicy:org/apache/geode/cache/DataPolicy,isRoot:boolean,name:java/lang/String,parentRegion:java/lang/String,path:java/lang/String,scope:org/apache/geode/cache/Scope,subRegionInformationSet:java/util/Set +org/apache/geode/management/internal/cli/domain/StackTracesPerMember,true,1,memberNameOrId:java/lang/String,stackTraces:byte[],timestamp:java/time/Instant +org/apache/geode/management/internal/cli/functions/AlterQueryServiceFunction,true,7155576168386556341 +org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction,true,1 +org/apache/geode/management/internal/cli/functions/AsyncEventQueueFunctionArgs,true,-6524494645663740872,asyncEventQueueId:java/lang/String,batchSize:int,batchTimeInterval:int,diskStoreName:java/lang/String,diskSynchronous:boolean,dispatcherThreads:int,enableBatchConflation:boolean,forwardExpirationDestroy:boolean,gatewayEventFilters:java/lang/String[],gatewaySubstitutionFilter:java/lang/String,isParallel:boolean,listenerClassName:java/lang/String,listenerProperties:java/util/Properties, [...] +org/apache/geode/management/internal/cli/functions/ChangeLogLevelFunction,true,1 +org/apache/geode/management/internal/cli/functions/CloseDurableClientFunction,true,1 +org/apache/geode/management/internal/cli/functions/CloseDurableCqFunction,true,1 +org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction,true,1 +org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction$ClientInfo,true,1,isDurable:java/lang/String,primaryServer:java/lang/String,secondaryServer:java/lang/String,this$0:org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction +org/apache/geode/management/internal/cli/functions/CreateAsyncEventQueueFunction,true,1 +org/apache/geode/management/internal/cli/functions/CreateDefinedIndexesFunction,true,6756381106602823693 +org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction,true,1 +org/apache/geode/management/internal/cli/functions/CreateIndexFunction,true,1 +org/apache/geode/management/internal/cli/functions/CreateJndiBindingFunction,false +org/apache/geode/management/internal/cli/functions/CreateRegionFunctionArgs,false,config:org/apache/geode/cache/configuration/RegionConfig,ifNotExists:boolean,regionPath:java/lang/String +org/apache/geode/management/internal/cli/functions/DataCommandFunction,true,1,optimizeForWrite:boolean +org/apache/geode/management/internal/cli/functions/DeployFunction,true,1 +org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunction,false +org/apache/geode/management/internal/cli/functions/DescribeQueryServiceFunction,true,8283480284191516847 +org/apache/geode/management/internal/cli/functions/DestroyAsyncEventQueueFunction,true,-7754359270344102817 +org/apache/geode/management/internal/cli/functions/DestroyAsyncEventQueueFunctionArgs,true,1755045410754561928,id:java/lang/String,ifExists:boolean +org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunction,true,1 +org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunctionArgs,true,2296397958405313306,id:java/lang/String,ifExists:boolean +org/apache/geode/management/internal/cli/functions/DestroyGatewayReceiverFunction,true,1490927519860899562 +org/apache/geode/management/internal/cli/functions/DestroyIndexFunction,true,-868082551095130315 +org/apache/geode/management/internal/cli/functions/DestroyJndiBindingFunction,false +org/apache/geode/management/internal/cli/functions/ExportConfigFunction,true,1 +org/apache/geode/management/internal/cli/functions/ExportDataFunction,true,1 +org/apache/geode/management/internal/cli/functions/ExportLogsFunction,true,1 +org/apache/geode/management/internal/cli/functions/ExportLogsFunction$Args,false,endTime:java/time/LocalDateTime,includeLogs:boolean,includeStats:boolean,logLevel:org/apache/logging/log4j/Level,startTime:java/time/LocalDateTime,thisLogLevelOnly:boolean +org/apache/geode/management/internal/cli/functions/FetchRegionAttributesFunction,true,4366812590788342070 +org/apache/geode/management/internal/cli/functions/FetchSharedConfigurationStatusFunction,true,1 +org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction,true,1 +org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction,true,8746830191680509335 +org/apache/geode/management/internal/cli/functions/GatewaySenderCreateFunction,true,8746830191680509335 +org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunction,true,1 +org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunctionArgs,true,3848480256348119530,id:java/lang/String,ifExists:boolean +org/apache/geode/management/internal/cli/functions/GatewaySenderFunctionArgs,true,4636678328980816780,alertThreshold:java/lang/Integer,batchSize:java/lang/Integer,batchTimeInterval:java/lang/Integer,diskStoreName:java/lang/String,diskSynchronous:java/lang/Boolean,dispatcherThreads:java/lang/Integer,enableBatchConflation:java/lang/Boolean,enablePersistence:java/lang/Boolean,gatewayEventFilters:java/util/List,gatewayTransportFilters:java/util/List,id:java/lang/String,manualStart:java/lang/ [...] +org/apache/geode/management/internal/cli/functions/GetMemberConfigInformationFunction,true,1 +org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction,true,1 +org/apache/geode/management/internal/cli/functions/GetRegionsFunction,true,1 +org/apache/geode/management/internal/cli/functions/GetStackTracesFunction,true,1 +org/apache/geode/management/internal/cli/functions/GetSubscriptionQueueSizeFunction,true,1 +org/apache/geode/management/internal/cli/functions/ImportDataFunction,true,1 +org/apache/geode/management/internal/cli/functions/ListAsyncEventQueuesFunction,true,1 +org/apache/geode/management/internal/cli/functions/ListDeployedFunction,true,1 +org/apache/geode/management/internal/cli/functions/ListDiskStoresFunction,false +org/apache/geode/management/internal/cli/functions/ListDurableCqNamesFunction,true,1 +org/apache/geode/management/internal/cli/functions/ListFunctionFunction,true,1 +org/apache/geode/management/internal/cli/functions/ListIndexFunction,false +org/apache/geode/management/internal/cli/functions/ListJndiBindingFunction,true,5254506785395069200 +org/apache/geode/management/internal/cli/functions/NetstatFunction,true,1 +org/apache/geode/management/internal/cli/functions/NetstatFunction$NetstatFunctionArgument,true,1,lineSeparator:java/lang/String,withlsof:boolean +org/apache/geode/management/internal/cli/functions/NetstatFunction$NetstatFunctionResult,true,1,compressedBytes:org/apache/geode/management/internal/cli/CliUtil$DeflaterInflaterData,headerInfo:java/lang/String,host:java/lang/String +org/apache/geode/management/internal/cli/functions/RegionAlterFunction,true,-4846425364943216425 +org/apache/geode/management/internal/cli/functions/RegionAttributesWrapper,true,-5517424520268271436,cacheListenerClasses:java/util/List,cacheLoaderClass:org/apache/geode/management/configuration/ClassName,cacheWriterClass:org/apache/geode/management/configuration/ClassName,compressorClass:java/lang/String,keyConstraintClass:java/lang/String,regionAttributes:org/apache/geode/cache/RegionAttributes,valueConstraintClass:java/lang/String +org/apache/geode/management/internal/cli/functions/RegionCreateFunction,true,8746830191680509335 +org/apache/geode/management/internal/cli/functions/RegionDestroyFunction,true,9172773671865750685 +org/apache/geode/management/internal/cli/functions/RegionFunctionArgs,true,2204943186081037302,asyncEventQueueIds:java/util/Set,cacheListeners:java/util/Set,cacheLoader:org/apache/geode/management/configuration/ClassName,cacheWriter:org/apache/geode/management/configuration/ClassName,cloningEnabled:java/lang/Boolean,compressor:java/lang/String,concurrencyChecksEnabled:java/lang/Boolean,concurrencyLevel:java/lang/Integer,diskStore:java/lang/String,diskSynchronous:java/lang/Boolean,enableA [...] +org/apache/geode/management/internal/cli/functions/RegionFunctionArgs$EvictionAttrs,true,9015454906371076014,evictionAction:java/lang/String,maxEntryCount:java/lang/Integer,maxMemory:java/lang/Integer,objectSizer:java/lang/String +org/apache/geode/management/internal/cli/functions/RegionFunctionArgs$ExpirationAttrs,true,1474255033398008063,action:org/apache/geode/cache/ExpirationAction,time:java/lang/Integer +org/apache/geode/management/internal/cli/functions/RegionFunctionArgs$PartitionArgs,true,5907052187323280919,partitionResolver:java/lang/String,prColocatedWith:java/lang/String,prLocalMaxMemory:java/lang/Integer,prRecoveryDelay:java/lang/Long,prRedundantCopies:java/lang/Integer,prStartupRecoveryDelay:java/lang/Long,prTotalMaxMemory:java/lang/Long,prTotalNumBuckets:java/lang/Integer +org/apache/geode/management/internal/cli/functions/ResumeAsyncEventQueueDispatcherFunction,false +org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction,false +org/apache/geode/management/internal/cli/functions/ShutDownFunction,true,1 +org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction,true,1 +org/apache/geode/management/internal/cli/functions/UndeployFunction,true,1 +org/apache/geode/management/internal/cli/functions/UnregisterFunction,true,1 +org/apache/geode/management/internal/cli/functions/UserFunctionExecution,true,1 +org/apache/geode/management/internal/cli/result/CommandResultException,true,1,result:org/apache/geode/management/cli/Result +org/apache/geode/management/internal/cli/result/TableBuilder$Align,false +org/apache/geode/management/internal/cli/result/TableBuilderHelper$TooManyColumnsException,false +org/apache/geode/management/internal/cli/shell/JMXConnectionException,true,3872374016604940917,exceptionType:int +org/apache/geode/management/internal/cli/shell/JMXInvocationException,true,-4265451314790394366 +org/apache/geode/management/internal/cli/shell/jline/ANSIHandler$ANSIStyle,false +org/apache/geode/management/internal/cli/util/EvictionAttributesInfo,true,1,evictionAction:java/lang/String,evictionAlgorithm:java/lang/String,evictionMaxValue:int +org/apache/geode/management/internal/cli/util/ExportLogsCacheWriter,false,currentFile:java/nio/file/Path,currentOutputStream:java/io/BufferedOutputStream,isEmpty:boolean +org/apache/geode/management/internal/cli/util/FixedPartitionAttributesInfo,false,isPrimary:boolean,numBuckets:int,partitionName:java/lang/String +org/apache/geode/management/internal/cli/util/JConsoleNotFoundException,true,-1485615321440327206 +org/apache/geode/management/internal/cli/util/LogFilter$LineFilterResult,false +org/apache/geode/management/internal/cli/util/VisualVmNotFoundException,true,-8491645604829510102 diff --git a/geode-junit/src/main/java/org/apache/geode/codeAnalysis/AnalyzeSerializablesJUnitTestBase.java b/geode-junit/src/main/java/org/apache/geode/codeAnalysis/AnalyzeSerializablesJUnitTestBase.java index 295066f..2546f6c 100644 --- a/geode-junit/src/main/java/org/apache/geode/codeAnalysis/AnalyzeSerializablesJUnitTestBase.java +++ b/geode-junit/src/main/java/org/apache/geode/codeAnalysis/AnalyzeSerializablesJUnitTestBase.java @@ -26,6 +26,7 @@ import java.io.Externalizable; import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.io.InputStream; import java.io.InvalidClassException; import java.io.Serializable; import java.lang.reflect.Constructor; @@ -88,7 +89,7 @@ public abstract class AnalyzeSerializablesJUnitTestBase { private File expectedDataSerializablesFile; private String expectedSerializablesFileName = "sanctioned-" + getModuleName() + "-serializables.txt"; - private File expectedSerializablesFile; + private InputStream expectedSerializablesInputStream; private List<ClassAndMethodDetails> expectedDataSerializables; private List<ClassAndVariableDetails> expectedSerializables; @@ -105,12 +106,11 @@ public abstract class AnalyzeSerializablesJUnitTestBase { } public void loadExpectedSerializables() throws Exception { - this.expectedSerializablesFile = - getResourceAsFile(getModuleClass(), expectedSerializablesFileName); - assertThat(this.expectedSerializablesFile).exists().canRead(); + this.expectedSerializablesInputStream = + getResourceAsStream(getModuleClass(), expectedSerializablesFileName); this.expectedSerializables = - CompiledClassUtils.loadClassesAndVariables(this.expectedSerializablesFile); + CompiledClassUtils.loadClassesAndVariables(this.expectedSerializablesInputStream); } public void findClasses() throws Exception { @@ -197,7 +197,7 @@ public abstract class AnalyzeSerializablesJUnitTestBase { System.out.println(diff); fail(diff + FAIL_MESSAGE, getSrcPathFor(getResourceAsFile(EXCLUDED_CLASSES_TXT)), actualSerializablesFile.getAbsolutePath(), - getSrcPathFor(this.expectedSerializablesFile, "main")); + this.expectedSerializablesFileName); } } @@ -433,7 +433,7 @@ public abstract class AnalyzeSerializablesJUnitTestBase { String ideaBuildDirName = Paths.get(getModuleName(), "out", "production", "classes").toString(); System.out.println("ideaBuildDirName is " + ideaBuildDirName); String ideaFQCNBuildDirName = Paths.get("out", "production", - "org.apache.geode." + getModuleName() + ".main").toString(); + "geode." + getModuleName() + ".main").toString(); System.out.println("idea build path with full package names is " + ideaFQCNBuildDirName); String buildDir = null; @@ -577,11 +577,18 @@ public abstract class AnalyzeSerializablesJUnitTestBase { return file; } + /** + * Use this method to get a resource stored in the test's resource directory + */ private File getResourceAsFile(String resourceName) { - return getResourceAsFile(getClass(), resourceName); + return new File(getClass().getResource(resourceName).getFile()); } - private File getResourceAsFile(Class associatedClass, String resourceName) { - return new File(associatedClass.getResource(resourceName).getFile()); + /** + * Use this method to get a resource that might be in a JAR file + */ + private InputStream getResourceAsStream(Class associatedClass, String resourceName) + throws IOException { + return associatedClass.getResource(resourceName).openStream(); } } diff --git a/geode-junit/src/main/java/org/apache/geode/codeAnalysis/CompiledClassUtils.java b/geode-junit/src/main/java/org/apache/geode/codeAnalysis/CompiledClassUtils.java index f206178..eff5a0b 100644 --- a/geode-junit/src/main/java/org/apache/geode/codeAnalysis/CompiledClassUtils.java +++ b/geode-junit/src/main/java/org/apache/geode/codeAnalysis/CompiledClassUtils.java @@ -21,6 +21,8 @@ import java.io.FileInputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.ArrayList; import java.util.Collections; @@ -292,11 +294,10 @@ public class CompiledClassUtils { out.close(); } - public static List<ClassAndVariableDetails> loadClassesAndVariables(File file) + public static List<ClassAndVariableDetails> loadClassesAndVariables(InputStream stream) throws IOException { - List<ClassAndVariableDetails> result = new LinkedList<ClassAndVariableDetails>(); - FileReader fr = new FileReader(file); - BufferedReader in = new BufferedReader(fr); + List<ClassAndVariableDetails> result = new LinkedList<>(); + BufferedReader in = new BufferedReader(new InputStreamReader(stream)); String line; while ((line = in.readLine()) != null) { line = line.trim(); @@ -306,7 +307,7 @@ public class CompiledClassUtils { result.add(new ClassAndVariableDetails(line)); } } - fr.close(); + stream.close(); return result; }
