INTERNAL
Hi,
I hope someone can help. I know that the ranger email groups are seriously
underpopulated.
I am NOT a maven or java person. I am just a regular admin trying to get a
plugin built for use.
The build fails (for 2.6, 2.7) here:
[WARNING] [ENUNCIATE] [javac] [ERROR]
com.webcohesion.enunciate.Enunciate$URLFileObject[file:/home/marc.hoppins.ipa/.m2/repository/org/apache/ranger/credentialbuilder/2.7.0/credentialbuilder-2.7.0-sources.jar!/org/apache/ranger/credentialapi/CredentialReader.java]:30:8
/home/marc.hoppins.ipa/.m2/repository/org/apache/ranger/credentialbuilder/2.7.0/credentialbuilder-2.7.0-sources.jar!/org/apache/ranger/credentialapi/CredentialReader.java:30:
error: duplicate class: org.apache.ranger.credentialapi.CredentialReader
[WARNING] [ENUNCIATE] [javac]
/home/marc.hoppins.ipa/.m2/repository/org/apache/ranger/credentialbuilder/2.7.0/credentialbuilder-2.7.0-sources.jar!/org/apache/ranger/credentialapi/CredentialReader.java:30:
error: duplicate class: org.apache.ranger.credentialapi.CredentialReader
[WARNING] [ENUNCIATE] [javac] public class CredentialReader {
[WARNING] [ENUNCIATE] [javac] ^
[WARNING] [ENUNCIATE] [javac] [ERROR]
com.webcohesion.enunciate.Enunciate$URLFileObject[file:/home/marc.hoppins.ipa/.m2/repository/org/apache/ranger/ranger-metrics/2.7.0/ranger-metrics-2.7.0-sources.jar!/org/apache/ranger/metrics/source/RangerMetricsContainerSource.java]:22:37
/home/marc.hoppins.ipa/.m2/repository/org/apache/ranger/ranger-metrics/2.7.0/ranger-metrics-2.7.0-sources.jar!/org/apache/ranger/metrics/source/RangerMetricsContainerSource.java:22:
error: package com.google.common.annotations does not exist
[WARNING] [ENUNCIATE] [javac]
/home/marc.hoppins.ipa/.m2/repository/org/apache/ranger/ranger-metrics/2.7.0/ranger-metrics-2.7.0-sources.jar!/org/apache/ranger/metrics/source/RangerMetricsContainerSource.java:22:
error: package com.google.common.annotations does not exist
[WARNING] [ENUNCIATE] [javac] import
com.google.common.annotations.VisibleForTesting;
[WARNING] [ENUNCIATE] [javac] ^
[WARNING] [ENUNCIATE] [javac] [ERROR]
com.webcohesion.enunciate.Enunciate$URLFileObject[file:/home/marc.hoppins.ipa/.m2/repository/org/apache/ranger/ranger-metrics/2.7.0/ranger-metrics-2.7.0-sources.jar!/org/apache/ranger/metrics/source/RangerMetricsContainerSource.java]:94:6
/home/marc.hoppins.ipa/.m2/repository/org/apache/ranger/ranger-metrics/2.7.0/ranger-metrics-2.7.0-sources.jar!/org/apache/ranger/metrics/source/RangerMetricsContainerSource.java:94:
error: cannot find symbol
[WARNING] [ENUNCIATE] [javac]
/home/marc.hoppins.ipa/.m2/repository/org/apache/ranger/ranger-metrics/2.7.0/ranger-metrics-2.7.0-sources.jar!/org/apache/ranger/metrics/source/RangerMetricsContainerSource.java:94:
error: cannot find symbol
[WARNING] [ENUNCIATE] [javac] @VisibleForTesting
[WARNING] [ENUNCIATE] [javac] ^
[WARNING] [ENUNCIATE] [javac] symbol: class VisibleForTesting
[WARNING] [ENUNCIATE] [javac] location: class
org.apache.ranger.metrics.source.RangerMetricsContainerSource
[WARNING] [ENUNCIATE] [javac] [NOTE]
com.webcohesion.enunciate.Enunciate$URLFileObject[file:/home/marc.hoppins.ipa/apache-ranger-2.7.0/security-admin/src/main/java/org/apache/ranger/common/db/RangerTransactionSynchronizationAdapter.java]:-1:-1
Note: Some input files use or override a deprecated API.
[WARNING] [ENUNCIATE] [javac] Note: Some input files use or override a
deprecated API.
[WARNING] [ENUNCIATE] [javac] [NOTE]
com.webcohesion.enunciate.Enunciate$URLFileObject[file:/home/marc.hoppins.ipa/apache-ranger-2.7.0/security-admin/src/main/java/org/apache/ranger/common/db/RangerTransactionSynchronizationAdapter.java]:-1:-1
Note: Recompile with -Xlint:deprecation for details.
[WARNING] [ENUNCIATE] [javac] Note: Recompile with -Xlint:deprecation for
details.
[WARNING] [ENUNCIATE] [javac] [NOTE]
com.webcohesion.enunciate.Enunciate$URLFileObject[file:/home/marc.hoppins.ipa/apache-ranger-2.7.0/security-admin/src/main/java/org/apache/ranger/AccessAuditsService.java]:-1:-1
Note: Some input files use unchecked or unsafe operations.
[WARNING] [ENUNCIATE] [javac] Note: Some input files use unchecked or unsafe
operations.
[WARNING] [ENUNCIATE] [javac] [NOTE]
com.webcohesion.enunciate.Enunciate$URLFileObject[file:/home/marc.hoppins.ipa/apache-ranger-2.7.0/security-admin/src/main/java/org/apache/ranger/AccessAuditsService.java]:-1:-1
Note: Recompile with -Xlint:unchecked for details.
[WARNING] [ENUNCIATE] [javac] Note: Recompile with -Xlint:unchecked for details.
But I have no idea why/where com.google.commons.annotations appears from guava
and I have no clue as to why a class would get classed as 'duplicated'.
What I DID see was this for CredentialReader.java:
package org.apache.ranger.credentialapi;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.alias.CredentialProvider;
import org.apache.hadoop.security.alias.CredentialProviderFactory;
import org.apache.hadoop.security.alias.JavaKeyStoreProvider;
public class CredentialReader {
public static String getDecryptedString(String
CrendentialProviderPath,String alias, String storeType) {
String credential=null;
try{
if(CrendentialProviderPath==null ||
alias==null||CrendentialProviderPath.trim().isEmpty()||alias.trim().isEmpty()){
return null;
}
char[] pass = null;
Configuration conf = new Configuration();
String
crendentialProviderPrefixJceks=JavaKeyStoreProvider.SCHEME_NAME + "://file";
String
crendentialProviderPrefixLocalJceks="localjceks://file";
crendentialProviderPrefixJceks=crendentialProviderPrefixJceks.toLowerCase();
String crendentialProviderPrefixBcfks= "bcfks" +
"://file";
String crendentialProviderPrefixLocalBcfks=
"localbcfks" + "://file";
crendentialProviderPrefixBcfks=crendentialProviderPrefixBcfks.toLowerCase();
crendentialProviderPrefixLocalBcfks=crendentialProviderPrefixLocalBcfks.toLowerCase();
CrendentialProviderPath=CrendentialProviderPath.trim();
alias=alias.trim();
if(CrendentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixJceks)
||
CrendentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixLocalJceks)
||
CrendentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixBcfks)
||
CrendentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixLocalBcfks)){
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
//UserProvider.SCHEME_NAME +
":///," +
CrendentialProviderPath);
}else{
if(CrendentialProviderPath.startsWith("/")){
if(StringUtils.equalsIgnoreCase(storeType, "bcfks")) {
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
CrendentialProviderPath);
} else {
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
//UserProvider.SCHEME_NAME + ":///," +
JavaKeyStoreProvider.SCHEME_NAME + "://file" + CrendentialProviderPath);
}
}else{
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
//UserProvider.SCHEME_NAME + ":///," +
JavaKeyStoreProvider.SCHEME_NAME + "://file/" + CrendentialProviderPath);
}
}
List<CredentialProvider> providers =
CredentialProviderFactory.getProviders(conf);
List<String> aliasesList=new ArrayList<String>();
CredentialProvider.CredentialEntry credEntry=null;
for(CredentialProvider provider: providers) {
//System.out.println("Credential Provider :" + provider);
aliasesList=provider.getAliases();
if(aliasesList!=null &&
aliasesList.contains(alias.toLowerCase())){
credEntry=null;
credEntry=
provider.getCredentialEntry(alias.toLowerCase());
pass = credEntry.getCredential();
if(pass!=null && pass.length>0){
credential=String.valueOf(pass);
break;
}
}
}
}catch(Exception ex){
ex.printStackTrace();
credential=null;
}
return credential;
}
}
Is ANYONE aware that Crendential is not Credential?
If someone knows how to resolve the build errors, I'd appreciate the assist. I
do not relay care to learn java, or more of maven other than build.use. I would
prefer to see released binary tarballs but what the hey.
Marc