geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pmcma...@apache.org
Subject svn commit: r561821 [10/12] - in /geronimo/sandbox/j2g: ./ configurator/ doc/ plugins/ plugins/org.apache.geronimo.j2g.common/ plugins/org.apache.geronimo.j2g.descriptors/ plugins/org.apache.geronimo.j2g.descriptors/src/ plugins/org.apache.geronimo.j2g...
Date Wed, 01 Aug 2007 15:05:17 GMT
Modified: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/NodesVisitor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/NodesVisitor.java?view=diff&rev=561821&r1=561820&r2=561821
==============================================================================
--- geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/NodesVisitor.java (original)
+++ geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/NodesVisitor.java Wed Aug  1 08:05:12 2007
@@ -1,353 +1,353 @@
-package org.apache.geronimo.j2g.sources.dependence;
-
-
-import java.io.File;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.geronimo.j2g.common.FatalToolException;
-import org.apache.geronimo.j2g.common.IOutput;
-import org.apache.geronimo.j2g.common.Tool;
-import org.apache.geronimo.j2g.common.ToolConstants;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.dom.ASTVisitor;
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.Expression;
-import org.eclipse.jdt.core.dom.IBinding;
-import org.eclipse.jdt.core.dom.ITypeBinding;
-import org.eclipse.jdt.core.dom.ImportDeclaration;
-import org.eclipse.jdt.core.dom.MethodDeclaration;
-import org.eclipse.jdt.core.dom.MethodInvocation;
-import org.eclipse.jdt.core.dom.Name;
-import org.eclipse.jdt.core.dom.QualifiedName;
-import org.eclipse.jdt.core.dom.QualifiedType;
-import org.eclipse.jdt.core.dom.SimpleName;
-import org.eclipse.jdt.core.dom.SimpleType;
-import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
-import org.eclipse.jdt.core.dom.Type;
-import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
-
-
-/**
- * Visitor for ASTNode. Finds types dependencies and reports to tool output.
- */
-public class NodesVisitor extends ASTVisitor {
-	/**
-	 * Tool output.
-	 */
-	private IOutput out;
-
-	/**
-	 * Current compilation unit.
-	 */
-	private CompilationUnit unit;
-
-	/**
-	 * Set of declared variables.
-	 */
-	private Set vars;
-
-	/**
-	 * Set of already picked libraries.
-	 */
-	private Set linkedLibs;
-
-	/**
-	 * Set of declared classes in imports.
-	 */
-	private Set imports;
-
-	/**
-	 * 
-	 */
-	
-	private boolean wrongApiUsing;
-
-	/**
-	 * Constructor.
-	 * 
-	 * @param unit
-	 *            compilation unit which will be visited.
-	 * @param out
-	 * @param visitDocTypes
-	 */
-	public NodesVisitor(CompilationUnit unit) {
-		super(false);
-		this.out = Tool.getCurrent().getOutput();
-		this.unit = unit;
-		vars = new HashSet();
-		linkedLibs = new HashSet();
-		imports = new HashSet();
-		wrongApiUsing = false;
-		
-		List compUnitList = unit.imports();
-		Iterator listIter = compUnitList.iterator();
-		while (listIter.hasNext()) {
-			ImportDeclaration impDec = (ImportDeclaration)listIter.next();
-			if (impDec.getName().isQualifiedName()) {
-				QualifiedName qualifiedName = (QualifiedName) impDec.getName();
-				String className = qualifiedName.getName().getIdentifier();
-				imports.add(className);
-			}
-			else {
-				SimpleName simpleName = (SimpleName) impDec.getName();
-				imports.add(simpleName.getIdentifier());
-			}
-		}
-	}
-
-	/**
-	 * Solves binding and if it's corressponds to Geronimo repository library
-	 * warns about it.
-	 * 
-	 * @param binding
-	 * @throws FatalToolException
-	 */
-	private void solveBinding(IBinding binding, String name) {
-		if (binding instanceof ITypeBinding) {
-			try {
-				String linkedJarName = binding.getJavaElement().getPath().toFile().getName();
-				if (linkedJarName.startsWith(ToolConstants.GERONIMO_REP)) {
-					File lib = binding.getJavaElement().getUnderlyingResource().getRawLocation().toFile();
-					String artifactName = getGeronimoArtifactName(lib);
-					if (!linkedLibs.contains(lib.getName()) && !DependenceJavaMigration.getDefaultLibs().contains(artifactName)) {
-						out.warn(NodesVisitor.class.getSimpleName(), "You should add a '" + artifactName + "' dependency.");
-						linkedLibs.add(lib.getName());
-					}
-				}
-			} catch (JavaModelException e) {
-				out.fatal(NodesVisitor.class.getSimpleName(), "Cannot get access to library for resolve name'" + name + "'.");
-			}
-		}
-	}
-
-	/**
-	 * Visits {@link ImportDeclaration} and trying to resolve binding.
-	 */
-	public boolean visit(ImportDeclaration importDeclaration) {
-		if (importDeclaration.resolveBinding() != null) {
-			String name = importDeclaration.getName().getFullyQualifiedName();
-			solveBinding(importDeclaration.resolveBinding(), name);
-		}
-		else {
-			printImportError(importDeclaration.getName().getFullyQualifiedName(), importDeclaration.getStartPosition());
-			if (importDeclaration.getName().isQualifiedName()) {
-				QualifiedName qualifiedName = (QualifiedName) importDeclaration.getName();
-				String className = qualifiedName.getName().getIdentifier();
-				imports.add(className);
-			}
-			else {
-				SimpleName simpleName = (SimpleName) importDeclaration.getName();
-				imports.add(simpleName.getIdentifier());
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Visits {@link QualifiedType} and trying to resolve binding.
-	 */
-	public boolean visit(QualifiedType qualifiedType) {
-		if (qualifiedType.resolveBinding() != null) {
-			String name = qualifiedType.getName().getFullyQualifiedName();
-			solveBinding(qualifiedType.resolveBinding(), name);
-			return true;
-		}
-		else {
-			Type qualifier = qualifiedType.getQualifier();
-			if (qualifier instanceof QualifiedType) {
-				if (visit((QualifiedType) qualifier)) {
-					printTypeError(qualifiedType.getName().getFullyQualifiedName(), qualifiedType.getStartPosition());
-				}
-			}
-			else {
-				if (visit((SimpleType) qualifier)) {
-					printTypeError(qualifiedType.getName().getFullyQualifiedName(), qualifiedType.getStartPosition());
-				}
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Visits {@link SimpleType} and trying to resolve binding.
-	 */
-	public boolean visit(SimpleType simpleType) {
-		if (simpleType.resolveBinding() != null) {
-			String name = simpleType.getName().getFullyQualifiedName(); 
-			solveBinding(simpleType.resolveBinding(), name );
-		}
-		else {
-			printTypeError(simpleType.getName().getFullyQualifiedName(), simpleType.getStartPosition());
-		}
-		return false;
-	}
-
-	/**
-	 * Visits {@link QualifiedName} and trying to resolve binding.
-	 */
-	public boolean visit(QualifiedName qualifiedName) {
-		if (qualifiedName.resolveBinding() != null) {
-			String name = qualifiedName.getFullyQualifiedName();
-			solveBinding(qualifiedName.resolveBinding(), name);
-			return true;
-		}
-		else {
-			Name qualifiedPart = qualifiedName.getQualifier();
-			if (qualifiedPart instanceof QualifiedName) {
-				if (visit((QualifiedName) qualifiedPart)) {
-					printTypeError(qualifiedName.getFullyQualifiedName(), qualifiedName.getStartPosition());
-				}
-				return false;
-			}
-			else {
-				if (qualifiedPart.resolveBinding() != null) {
-					printTypeError(qualifiedName.getFullyQualifiedName(), qualifiedName.getStartPosition());
-				}
-				else {
-					if (!isDeclaredVar(qualifiedPart.toString())) {
-						printTypeError(qualifiedPart.getFullyQualifiedName(), qualifiedPart.getStartPosition());
-					}
-				}
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Visits {@link MethodDeclaration} and trying to resolve binding.
-	 */
-	public boolean visit(MethodDeclaration method) {
-		List names = method.thrownExceptions();
-		if (names != null) {
-			Iterator iter = names.iterator();
-			while (iter.hasNext()) {
-				Name name = (Name) iter.next();
-				if (name.resolveBinding() != null) {
-					String nameStr = name.getFullyQualifiedName();
-					solveBinding(name.resolveBinding(), nameStr);
-				}
-				else {
-					printTypeError(name.getFullyQualifiedName(), name.getStartPosition());
-				}
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Visits {@link MethodInvocation} and trying to resolve binding.
-	 */
-	public boolean visit(MethodInvocation methodInvocation) {
-		Expression expr = methodInvocation.getExpression();
-		if (expr == null) {
-			if (methodInvocation.resolveMethodBinding() == null) {
-				printTypeError(methodInvocation.getName().getFullyQualifiedName(), methodInvocation.getStartPosition());
-			}
-		}
-		else {
-			if (expr.resolveTypeBinding() != null) {
-				String name = expr.toString();
-				solveBinding(expr.resolveTypeBinding(), name);
-			}
-			else {
-				if (expr instanceof MethodInvocation) {
-					visit((MethodInvocation) expr);
-				}
-				else if (expr instanceof QualifiedName) {
-					visit((QualifiedName) expr);
-				}
-				else if (expr instanceof SimpleName) {
-					if (!isDeclaredVar(expr.toString())) {
-						SimpleName simpleName = (SimpleName) expr;
-						printTypeError(simpleName.getFullyQualifiedName(), expr.getStartPosition());
-					}
-				}
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Visits {@link SingleVariableDeclaration} and adds variable name to the
-	 * list.
-	 */
-	public boolean visit(SingleVariableDeclaration declaration) {
-		vars.add(declaration.getName().toString());
-		return true;
-	}
-
-	/**
-	 * Visits {@link VariableDeclarationFragment} and adds variable name to the
-	 * list.
-	 */
-	public boolean visit(VariableDeclarationFragment declaration) {
-		vars.add(declaration.getName().toString());
-		return true;
-	}
-
-	/**
-	 * @param name
-	 *            simple name.
-	 * @return <code>true</code> if it is declared variable and
-	 *         <code>false</code> if not.
-	 */
-	private boolean isDeclaredVar(String name) {
-		return vars.contains(name);
-	}
-
-	/**
-	 * Prints error about not resolved name.
-	 * 
-	 * @param name
-	 *            not resolved name.
-	 * @param position
-	 *            start position in source file.
-	 */
-	private void printTypeError(String name, int position) {
-		if (!imports.contains(name)) {
-			out.error(NodesVisitor.class.getSimpleName(), "The name '" + name + "' cannot be resolved.", unit.getLineNumber(position), unit.getColumnNumber(position));
-			wrongApiUsing = true;
-		}
-	}
-
-	/**
-	 * Prints error about not resolved import.
-	 * 
-	 * @param name
-	 *            import name.
-	 * @param position
-	 *            start position in source file.
-	 */
-	private void printImportError(String name, int position) {
-		wrongApiUsing = true;
-		out.error(NodesVisitor.class.getSimpleName(), "The import '" + name + "' cannot be resolved.", unit.getLineNumber(position), unit.getColumnNumber(position));
-	}
-	
-	/**
-	 * Constructs Geronimo artifact name from repository library file.
-	 * 
-	 * @param libFullName
-	 *            full path to the repository library.
-	 * @return Geronimo artifact name.
-	 */
-	private String getGeronimoArtifactName(File libFullName) {
-		String fullName = libFullName.getAbsolutePath();
-		String geronimoRep = ToolConstants.GERONIMO_REPOSITORY_FOLDER + File.separator;
-		String name = fullName.substring(fullName.lastIndexOf(geronimoRep) + geronimoRep.length());
-		name = name.substring(0, name.indexOf(libFullName.getName()));
-		name = name.replace(File.separatorChar, ToolConstants.GERONIMO_SEPARATOR_CHAR);
-		String extension = fullName.substring(fullName.lastIndexOf('.') + 1);
-		return name + extension;
-	}
-	
-	/**
-	 * @return true if source uses proprietary api.
-	 */
-	public boolean isSourceValid(){
-		return !wrongApiUsing;
-	}
-	
-}
+package org.apache.geronimo.j2g.sources.dependence;
+
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.geronimo.j2g.common.FatalToolException;
+import org.apache.geronimo.j2g.common.IOutput;
+import org.apache.geronimo.j2g.common.Tool;
+import org.apache.geronimo.j2g.common.ToolConstants;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.dom.ASTVisitor;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.IBinding;
+import org.eclipse.jdt.core.dom.ITypeBinding;
+import org.eclipse.jdt.core.dom.ImportDeclaration;
+import org.eclipse.jdt.core.dom.MethodDeclaration;
+import org.eclipse.jdt.core.dom.MethodInvocation;
+import org.eclipse.jdt.core.dom.Name;
+import org.eclipse.jdt.core.dom.QualifiedName;
+import org.eclipse.jdt.core.dom.QualifiedType;
+import org.eclipse.jdt.core.dom.SimpleName;
+import org.eclipse.jdt.core.dom.SimpleType;
+import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
+import org.eclipse.jdt.core.dom.Type;
+import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
+
+
+/**
+ * Visitor for ASTNode. Finds types dependencies and reports to tool output.
+ */
+public class NodesVisitor extends ASTVisitor {
+	/**
+	 * Tool output.
+	 */
+	private IOutput out;
+
+	/**
+	 * Current compilation unit.
+	 */
+	private CompilationUnit unit;
+
+	/**
+	 * Set of declared variables.
+	 */
+	private Set vars;
+
+	/**
+	 * Set of already picked libraries.
+	 */
+	private Set linkedLibs;
+
+	/**
+	 * Set of declared classes in imports.
+	 */
+	private Set imports;
+
+	/**
+	 * 
+	 */
+	
+	private boolean wrongApiUsing;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param unit
+	 *            compilation unit which will be visited.
+	 * @param out
+	 * @param visitDocTypes
+	 */
+	public NodesVisitor(CompilationUnit unit) {
+		super(false);
+		this.out = Tool.getCurrent().getOutput();
+		this.unit = unit;
+		vars = new HashSet();
+		linkedLibs = new HashSet();
+		imports = new HashSet();
+		wrongApiUsing = false;
+		
+		List compUnitList = unit.imports();
+		Iterator listIter = compUnitList.iterator();
+		while (listIter.hasNext()) {
+			ImportDeclaration impDec = (ImportDeclaration)listIter.next();
+			if (impDec.getName().isQualifiedName()) {
+				QualifiedName qualifiedName = (QualifiedName) impDec.getName();
+				String className = qualifiedName.getName().getIdentifier();
+				imports.add(className);
+			}
+			else {
+				SimpleName simpleName = (SimpleName) impDec.getName();
+				imports.add(simpleName.getIdentifier());
+			}
+		}
+	}
+
+	/**
+	 * Solves binding and if it's corressponds to Geronimo repository library
+	 * warns about it.
+	 * 
+	 * @param binding
+	 * @throws FatalToolException
+	 */
+	private void solveBinding(IBinding binding, String name) {
+		if (binding instanceof ITypeBinding) {
+			try {
+				String linkedJarName = binding.getJavaElement().getPath().toFile().getName();
+				if (linkedJarName.startsWith(ToolConstants.GERONIMO_REP)) {
+					File lib = binding.getJavaElement().getUnderlyingResource().getRawLocation().toFile();
+					String artifactName = getGeronimoArtifactName(lib);
+					if (!linkedLibs.contains(lib.getName()) && !DependenceJavaMigration.getDefaultLibs().contains(artifactName)) {
+						out.warn(NodesVisitor.class.getSimpleName(), "You should add a '" + artifactName + "' dependency.");
+						linkedLibs.add(lib.getName());
+					}
+				}
+			} catch (JavaModelException e) {
+				out.fatal(NodesVisitor.class.getSimpleName(), "Cannot get access to library for resolve name'" + name + "'.");
+			}
+		}
+	}
+
+	/**
+	 * Visits {@link ImportDeclaration} and trying to resolve binding.
+	 */
+	public boolean visit(ImportDeclaration importDeclaration) {
+		if (importDeclaration.resolveBinding() != null) {
+			String name = importDeclaration.getName().getFullyQualifiedName();
+			solveBinding(importDeclaration.resolveBinding(), name);
+		}
+		else {
+			printImportError(importDeclaration.getName().getFullyQualifiedName(), importDeclaration.getStartPosition());
+			if (importDeclaration.getName().isQualifiedName()) {
+				QualifiedName qualifiedName = (QualifiedName) importDeclaration.getName();
+				String className = qualifiedName.getName().getIdentifier();
+				imports.add(className);
+			}
+			else {
+				SimpleName simpleName = (SimpleName) importDeclaration.getName();
+				imports.add(simpleName.getIdentifier());
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Visits {@link QualifiedType} and trying to resolve binding.
+	 */
+	public boolean visit(QualifiedType qualifiedType) {
+		if (qualifiedType.resolveBinding() != null) {
+			String name = qualifiedType.getName().getFullyQualifiedName();
+			solveBinding(qualifiedType.resolveBinding(), name);
+			return true;
+		}
+		else {
+			Type qualifier = qualifiedType.getQualifier();
+			if (qualifier instanceof QualifiedType) {
+				if (visit((QualifiedType) qualifier)) {
+					printTypeError(qualifiedType.getName().getFullyQualifiedName(), qualifiedType.getStartPosition());
+				}
+			}
+			else {
+				if (visit((SimpleType) qualifier)) {
+					printTypeError(qualifiedType.getName().getFullyQualifiedName(), qualifiedType.getStartPosition());
+				}
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Visits {@link SimpleType} and trying to resolve binding.
+	 */
+	public boolean visit(SimpleType simpleType) {
+		if (simpleType.resolveBinding() != null) {
+			String name = simpleType.getName().getFullyQualifiedName(); 
+			solveBinding(simpleType.resolveBinding(), name );
+		}
+		else {
+			printTypeError(simpleType.getName().getFullyQualifiedName(), simpleType.getStartPosition());
+		}
+		return false;
+	}
+
+	/**
+	 * Visits {@link QualifiedName} and trying to resolve binding.
+	 */
+	public boolean visit(QualifiedName qualifiedName) {
+		if (qualifiedName.resolveBinding() != null) {
+			String name = qualifiedName.getFullyQualifiedName();
+			solveBinding(qualifiedName.resolveBinding(), name);
+			return true;
+		}
+		else {
+			Name qualifiedPart = qualifiedName.getQualifier();
+			if (qualifiedPart instanceof QualifiedName) {
+				if (visit((QualifiedName) qualifiedPart)) {
+					printTypeError(qualifiedName.getFullyQualifiedName(), qualifiedName.getStartPosition());
+				}
+				return false;
+			}
+			else {
+				if (qualifiedPart.resolveBinding() != null) {
+					printTypeError(qualifiedName.getFullyQualifiedName(), qualifiedName.getStartPosition());
+				}
+				else {
+					if (!isDeclaredVar(qualifiedPart.toString())) {
+						printTypeError(qualifiedPart.getFullyQualifiedName(), qualifiedPart.getStartPosition());
+					}
+				}
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Visits {@link MethodDeclaration} and trying to resolve binding.
+	 */
+	public boolean visit(MethodDeclaration method) {
+		List names = method.thrownExceptions();
+		if (names != null) {
+			Iterator iter = names.iterator();
+			while (iter.hasNext()) {
+				Name name = (Name) iter.next();
+				if (name.resolveBinding() != null) {
+					String nameStr = name.getFullyQualifiedName();
+					solveBinding(name.resolveBinding(), nameStr);
+				}
+				else {
+					printTypeError(name.getFullyQualifiedName(), name.getStartPosition());
+				}
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Visits {@link MethodInvocation} and trying to resolve binding.
+	 */
+	public boolean visit(MethodInvocation methodInvocation) {
+		Expression expr = methodInvocation.getExpression();
+		if (expr == null) {
+			if (methodInvocation.resolveMethodBinding() == null) {
+				printTypeError(methodInvocation.getName().getFullyQualifiedName(), methodInvocation.getStartPosition());
+			}
+		}
+		else {
+			if (expr.resolveTypeBinding() != null) {
+				String name = expr.toString();
+				solveBinding(expr.resolveTypeBinding(), name);
+			}
+			else {
+				if (expr instanceof MethodInvocation) {
+					visit((MethodInvocation) expr);
+				}
+				else if (expr instanceof QualifiedName) {
+					visit((QualifiedName) expr);
+				}
+				else if (expr instanceof SimpleName) {
+					if (!isDeclaredVar(expr.toString())) {
+						SimpleName simpleName = (SimpleName) expr;
+						printTypeError(simpleName.getFullyQualifiedName(), expr.getStartPosition());
+					}
+				}
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Visits {@link SingleVariableDeclaration} and adds variable name to the
+	 * list.
+	 */
+	public boolean visit(SingleVariableDeclaration declaration) {
+		vars.add(declaration.getName().toString());
+		return true;
+	}
+
+	/**
+	 * Visits {@link VariableDeclarationFragment} and adds variable name to the
+	 * list.
+	 */
+	public boolean visit(VariableDeclarationFragment declaration) {
+		vars.add(declaration.getName().toString());
+		return true;
+	}
+
+	/**
+	 * @param name
+	 *            simple name.
+	 * @return <code>true</code> if it is declared variable and
+	 *         <code>false</code> if not.
+	 */
+	private boolean isDeclaredVar(String name) {
+		return vars.contains(name);
+	}
+
+	/**
+	 * Prints error about not resolved name.
+	 * 
+	 * @param name
+	 *            not resolved name.
+	 * @param position
+	 *            start position in source file.
+	 */
+	private void printTypeError(String name, int position) {
+		if (!imports.contains(name)) {
+			out.error(NodesVisitor.class.getSimpleName(), "The name '" + name + "' cannot be resolved.", unit.getLineNumber(position), unit.getColumnNumber(position));
+			wrongApiUsing = true;
+		}
+	}
+
+	/**
+	 * Prints error about not resolved import.
+	 * 
+	 * @param name
+	 *            import name.
+	 * @param position
+	 *            start position in source file.
+	 */
+	private void printImportError(String name, int position) {
+		wrongApiUsing = true;
+		out.error(NodesVisitor.class.getSimpleName(), "The import '" + name + "' cannot be resolved.", unit.getLineNumber(position), unit.getColumnNumber(position));
+	}
+	
+	/**
+	 * Constructs Geronimo artifact name from repository library file.
+	 * 
+	 * @param libFullName
+	 *            full path to the repository library.
+	 * @return Geronimo artifact name.
+	 */
+	private String getGeronimoArtifactName(File libFullName) {
+		String fullName = libFullName.getAbsolutePath();
+		String geronimoRep = ToolConstants.GERONIMO_REPOSITORY_FOLDER + File.separator;
+		String name = fullName.substring(fullName.lastIndexOf(geronimoRep) + geronimoRep.length());
+		name = name.substring(0, name.indexOf(libFullName.getName()));
+		name = name.replace(File.separatorChar, ToolConstants.GERONIMO_SEPARATOR_CHAR);
+		String extension = fullName.substring(fullName.lastIndexOf('.') + 1);
+		return name + extension;
+	}
+	
+	/**
+	 * @return true if source uses proprietary api.
+	 */
+	public boolean isSourceValid(){
+		return !wrongApiUsing;
+	}
+	
+}

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/NodesVisitor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/NodesVisitor.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/NodesVisitor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Anybody.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Anybody.java?view=diff&rev=561821&r1=561820&r2=561821
==============================================================================
--- geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Anybody.java (original)
+++ geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Anybody.java Wed Aug  1 08:05:12 2007
@@ -1,60 +1,60 @@
-/**
- *  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.
- */
-/*
- * Auto-generated by J2G Migration. 
- */
-package org.apache.geronimo.j2g.sources.dependence.compatibility;
-
-import java.security.Principal;
-
-public class Anybody
-    implements Comparable, Principal
-{
-
-    public Anybody()
-    {
-    }
-
-    public int hashCode()
-    {
-        return ANYBODY.hashCode();
-    }
-
-    public String getName()
-    {
-        return ANYBODY;
-    }
-
-    public String toString()
-    {
-        return ANYBODY;
-    }
-
-    public boolean equals(Object another)
-    {
-        return true;
-    }
-
-    public int compareTo(Object o)
-    {
-        return 0;
-    }
-
-    public static final String ANYBODY = "<ANYBODY>";
-    public static final Anybody ANYBODY_PRINCIPAL = new Anybody();
-
+/**
+ *  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.
+ */
+/*
+ * Auto-generated by J2G Migration. 
+ */
+package org.apache.geronimo.j2g.sources.dependence.compatibility;
+
+import java.security.Principal;
+
+public class Anybody
+    implements Comparable, Principal
+{
+
+    public Anybody()
+    {
+    }
+
+    public int hashCode()
+    {
+        return ANYBODY.hashCode();
+    }
+
+    public String getName()
+    {
+        return ANYBODY;
+    }
+
+    public String toString()
+    {
+        return ANYBODY;
+    }
+
+    public boolean equals(Object another)
+    {
+        return true;
+    }
+
+    public int compareTo(Object o)
+    {
+        return 0;
+    }
+
+    public static final String ANYBODY = "<ANYBODY>";
+    public static final Anybody ANYBODY_PRINCIPAL = new Anybody();
+
 }

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Anybody.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Anybody.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Anybody.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/DigestCallback.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/DigestCallback.java?view=diff&rev=561821&r1=561820&r2=561821
==============================================================================
--- geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/DigestCallback.java (original)
+++ geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/DigestCallback.java Wed Aug  1 08:05:12 2007
@@ -1,32 +1,32 @@
-/**
- *  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.
- */
-/*
- * Auto-generated by J2G Migration. 
- */
-package org.apache.geronimo.j2g.sources.dependence.compatibility;
-
-import java.security.MessageDigest;
-import java.util.Map;
-
-public interface DigestCallback {
-
-  public abstract void init(Map map);
-
-  public abstract void preDigest(MessageDigest digest);
-
-  public abstract void postDigest(MessageDigest digest);
-}
+/**
+ *  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.
+ */
+/*
+ * Auto-generated by J2G Migration. 
+ */
+package org.apache.geronimo.j2g.sources.dependence.compatibility;
+
+import java.security.MessageDigest;
+import java.util.Map;
+
+public interface DigestCallback {
+
+  public abstract void init(Map map);
+
+  public abstract void preDigest(MessageDigest digest);
+
+  public abstract void postDigest(MessageDigest digest);
+}

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/DigestCallback.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/DigestCallback.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/DigestCallback.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoLoginModule.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoLoginModule.java?view=diff&rev=561821&r1=561820&r2=561821
==============================================================================
--- geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoLoginModule.java (original)
+++ geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoLoginModule.java Wed Aug  1 08:05:12 2007
@@ -1,352 +1,352 @@
-/**
- *  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.
- */
-/*
- * Auto-generated by J2G Migration. 
- */
-package org.apache.geronimo.j2g.sources.dependence.compatibility;
-
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.security.Principal;
-import java.security.acl.Group;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import javax.security.auth.Subject;
-import javax.security.auth.callback.Callback;
-import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.callback.NameCallback;
-import javax.security.auth.callback.PasswordCallback;
-import javax.security.auth.callback.UnsupportedCallbackException;
-import javax.security.auth.login.FailedLoginException;
-import javax.security.auth.login.LoginException;
-import javax.security.auth.spi.LoginModule;
-
-import org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal;
-import org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal;
-
-public abstract class GeronimoLoginModule implements LoginModule {
-
-	protected Subject subject;
-
-	protected CallbackHandler callbackHandler;
-
-	protected Map sharedState;
-
-	protected Map options;
-
-	protected boolean useFirstPass;
-
-	protected boolean loginOk;
-
-	protected String principalClassName;
-
-	protected Principal unauthenticatedIdentity;
-
-	private Principal identity;
-
-	private char passport[];
-
-	private String algorithm;
-
-	private String charset;
-
-	private String encoding;
-
-	private boolean ignorePasswordCase;
-
-	protected final static int USERNAME_POS = 0;
-
-	protected final static int PASSWORD_POS = 1;
-
-	public GeronimoLoginModule() {
-		algorithm = null;
-		charset = null;
-		encoding = null;
-	}
-
-	public boolean abort() throws LoginException {
-		return true;
-	}
-
-	public boolean commit() throws LoginException {
-		if (!loginOk) {
-			return false;
-		}
-		Set heads = subject.getPrincipals();
-		Principal identity = getIdentity();
-		heads.add(identity);
-		Group roleSets[] = getRoleSets();
-		for (int i = 0; i < roleSets.length; i++) {
-			Group group = roleSets[i];
-			String name = group.getName();
-			Group subjectGroup = createGroup(name, heads);
-			Principal role;
-			Enumeration members = group.members();
-			while (members.hasMoreElements()) {
-				role = (Principal) members.nextElement();
-				subjectGroup.addMember(role);
-				if(name.equals("Roles")){
-					heads.add(new GeronimoGroupPrincipal(role.getName()));
-				}
-			}
-		}
-		return true;
-	}
-
-	protected Principal getIdentity() {
-		return identity;
-	}
-
-	public void initialize(Subject subject, CallbackHandler callbackHandler,
-			Map sharedState, Map options) {
-		this.subject = subject;
-		this.callbackHandler = callbackHandler;
-		this.sharedState = sharedState;
-		this.options = options;
-		String passwordStacking = (String) options.get("password-stacking");
-		if (passwordStacking != null
-				&& passwordStacking.equalsIgnoreCase("useFirstPass")) {
-			useFirstPass = true;
-		}
-		principalClassName = (String) options.get("principalClass");
-		String name = (String) options.get("unauthenticatedIdentity");
-		if (name != null) {
-			try {
-				unauthenticatedIdentity = createIdentity(name);
-			} catch (Exception e) {
-			}
-		}
-		algorithm = (String) options.get("hashAlgorithm");
-		if (algorithm != null) {
-			encoding = (String) options.get("hashEncoding");
-			if (encoding == null) {
-				encoding = "BASE64";
-			}
-			charset = (String) options.get("hashCharset");
-		}
-		String flag = (String) options.get("ignorePasswordCase");
-		ignorePasswordCase = Boolean.valueOf(flag).booleanValue();
-	}
-
-	public boolean login() throws LoginException {
-		loginOk = false;
-		if (useFirstPass) {
-			Object identity = sharedState.get("javax.security.auth.login.name");
-			Object credential = sharedState
-					.get("javax.security.auth.login.password");
-			if (identity != null && credential != null) {
-				loginOk = true;
-			}
-		}
-		if (loginOk) {
-			Object username = sharedState.get("javax.security.auth.login.name");
-			if (username instanceof Principal) {
-				identity = (Principal) username;
-			} else {
-				try {
-					identity = createIdentity(username.toString());
-				} catch (Exception e) {
-					throw new LoginException("Failed to create principal: "
-							+ e.getMessage());
-				}
-			}
-			Object password = sharedState
-					.get("javax.security.auth.login.password");
-
-			if (password != null) {
-				if (password instanceof char[]) {
-					passport = (char[]) password;
-				} else {
-					passport = password.toString().toCharArray();
-				}
-			}
-			return true;
-		}
-		loginOk = false;
-
-		String username = null;
-		String password = null;
-
-		String[] usernameAndPassword = getUsernameAndPassword();
-
-		username = usernameAndPassword[USERNAME_POS];
-		password = usernameAndPassword[PASSWORD_POS];
-		if (username == null && password == null) {
-			identity = unauthenticatedIdentity;
-		}
-		if (identity == null) {
-			try {
-				identity = createIdentity(username);
-			} catch (Exception e) {
-				throw new LoginException("Failed to create principal: "
-						+ e.getMessage());
-			}
-			if (algorithm != null) {
-				password = createPasswordHash(username, password);
-			}
-			String expectedPassword = getUsersPassword();
-			if (!validatePassword(password, expectedPassword)) {
-				throw new FailedLoginException(
-						"Password Incorrect/Password Required");
-			}
-		}
-		if (getUseFirstPass()) {
-			sharedState.put("javax.security.auth.login.name", username);
-			sharedState.put("javax.security.auth.login.password", passport);
-		}
-		loginOk = true;
-		return loginOk;
-	}
-
-	protected String[] getUsernameAndPassword() throws LoginException {
-		String usernamePassword[] = { null, null };
-		if (callbackHandler == null) {
-			throw new LoginException(
-					"Error occurs: there are no CallbackHandler available to get information about authentication");
-		}
-		String username = null;
-		String password = null;
-		try {
-			Callback callbacks[] = { new NameCallback("Username: "), new PasswordCallback("Password: ", false) };
-			callbackHandler.handle(callbacks);
-			NameCallback nameCallback = (NameCallback) callbacks[0];
-			PasswordCallback passwordCallback = (PasswordCallback) callbacks[1];
-			username = nameCallback.getName();
-			char helperPassword[] = passwordCallback.getPassword();
-			if (helperPassword != null) {
-				passport = new char[helperPassword.length];
-				System.arraycopy(helperPassword, 0, passport, 0,
-						helperPassword.length);
-				passwordCallback.clearPassword();
-				password = new String(passport);
-			}
-		} catch (IOException ioe) {
-			throw new LoginException(ioe.toString());
-		} catch (UnsupportedCallbackException uce) {
-			throw new LoginException("CallbackHandler does not support: "
-					+ uce.getCallback());
-		}
-		usernamePassword[USERNAME_POS] = username;
-		usernamePassword[PASSWORD_POS] = password;
-		return usernamePassword;
-	}
-
-	protected boolean validatePassword(String inputPassword,
-			String expectedPassword) {
-		if (inputPassword == null || expectedPassword == null) {
-			return false;
-		}
-		return ignorePasswordCase ? inputPassword
-				.equalsIgnoreCase(expectedPassword) : inputPassword
-				.equals(expectedPassword);
-	}
-
-	protected String createPasswordHash(String username, String password) {
-		DigestCallback callback = null;
-		String callbackClassName = (String) options.get("digestCallback");
-		if (callbackClassName != null) {
-			try {
-				Class callbackClass = loadSomeClass(callbackClassName);
-				callback = (DigestCallback) callbackClass.newInstance();
-			} catch (Exception e) {
-				SecurityException securityExeption = new SecurityException(
-						"Cannot load DigestCallback");
-				securityExeption.initCause(e);
-				throw securityExeption;
-			}
-			HashMap optionsMap = new HashMap(options);
-			optionsMap.put("javax.security.auth.login.name", username);
-			optionsMap.put("javax.security.auth.login.password", password);
-			callback.init(optionsMap);
-		}
-
-		return PasswordHasher.calculateHash(algorithm, encoding, charset,
-				username, password, callback);
-	}
-
-	protected boolean getUseFirstPass() {
-		return useFirstPass;
-	}
-
-	protected Principal getUnauthenticatedIdentity() {
-		return unauthenticatedIdentity;
-	}
-
-	protected Object getCredentials() {
-		return passport;
-	}
-
-	public boolean logout() throws LoginException {
-		Principal identity = getIdentity();
-		Set principals = subject.getPrincipals();
-		principals.remove(identity);
-		return true;
-	}
-
-	protected Principal createIdentity(String username) throws Exception {
-		Principal principal = null;
-		if (principalClassName != null) {
-			Class loadedClass = loadSomeClass(principalClassName);
-			Class signatures[] = { java.lang.String.class };
-			Constructor constructorInstance = loadedClass
-					.getConstructor(signatures);
-			Object argumentsForConstructor[] = { username };
-			principal = (Principal) constructorInstance
-					.newInstance(argumentsForConstructor);
-		} else {
-			principal = new GeronimoUserPrincipal(username);
-		}
-		return principal;
-	}
-
-	private Class loadSomeClass(String classname) throws ClassNotFoundException {
-		ClassLoader loader = Thread.currentThread().getContextClassLoader();
-		return loader.loadClass(classname);
-	}
-
-	protected String getUsername() {
-		return (getIdentity() != null) ? getIdentity().getName() : null;
-	}
-
-	protected Group createGroup(String name, Set principals) {
-		Group roles = null;
-		Iterator principalsIter = principals.iterator();
-		while (principalsIter.hasNext()) {
-			Object next = principalsIter.next();
-			if (next instanceof Group) {
-				Group nextGroup = (Group) next;
-				if (nextGroup.getName().equals(name)) {
-					roles = nextGroup;
-					break;
-				}
-			}
-		}
-		if (roles == null) {
-			roles = new GeronimoSimpleGroup(name);
-			principals.add(roles);
-		}
-		return roles;
-	}
-
-	protected abstract String getUsersPassword() throws LoginException;
-
-	protected abstract Group[] getRoleSets() throws LoginException;
+/**
+ *  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.
+ */
+/*
+ * Auto-generated by J2G Migration. 
+ */
+package org.apache.geronimo.j2g.sources.dependence.compatibility;
+
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import javax.security.auth.login.FailedLoginException;
+import javax.security.auth.login.LoginException;
+import javax.security.auth.spi.LoginModule;
+
+import org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal;
+import org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal;
+
+public abstract class GeronimoLoginModule implements LoginModule {
+
+	protected Subject subject;
+
+	protected CallbackHandler callbackHandler;
+
+	protected Map sharedState;
+
+	protected Map options;
+
+	protected boolean useFirstPass;
+
+	protected boolean loginOk;
+
+	protected String principalClassName;
+
+	protected Principal unauthenticatedIdentity;
+
+	private Principal identity;
+
+	private char passport[];
+
+	private String algorithm;
+
+	private String charset;
+
+	private String encoding;
+
+	private boolean ignorePasswordCase;
+
+	protected final static int USERNAME_POS = 0;
+
+	protected final static int PASSWORD_POS = 1;
+
+	public GeronimoLoginModule() {
+		algorithm = null;
+		charset = null;
+		encoding = null;
+	}
+
+	public boolean abort() throws LoginException {
+		return true;
+	}
+
+	public boolean commit() throws LoginException {
+		if (!loginOk) {
+			return false;
+		}
+		Set heads = subject.getPrincipals();
+		Principal identity = getIdentity();
+		heads.add(identity);
+		Group roleSets[] = getRoleSets();
+		for (int i = 0; i < roleSets.length; i++) {
+			Group group = roleSets[i];
+			String name = group.getName();
+			Group subjectGroup = createGroup(name, heads);
+			Principal role;
+			Enumeration members = group.members();
+			while (members.hasMoreElements()) {
+				role = (Principal) members.nextElement();
+				subjectGroup.addMember(role);
+				if(name.equals("Roles")){
+					heads.add(new GeronimoGroupPrincipal(role.getName()));
+				}
+			}
+		}
+		return true;
+	}
+
+	protected Principal getIdentity() {
+		return identity;
+	}
+
+	public void initialize(Subject subject, CallbackHandler callbackHandler,
+			Map sharedState, Map options) {
+		this.subject = subject;
+		this.callbackHandler = callbackHandler;
+		this.sharedState = sharedState;
+		this.options = options;
+		String passwordStacking = (String) options.get("password-stacking");
+		if (passwordStacking != null
+				&& passwordStacking.equalsIgnoreCase("useFirstPass")) {
+			useFirstPass = true;
+		}
+		principalClassName = (String) options.get("principalClass");
+		String name = (String) options.get("unauthenticatedIdentity");
+		if (name != null) {
+			try {
+				unauthenticatedIdentity = createIdentity(name);
+			} catch (Exception e) {
+			}
+		}
+		algorithm = (String) options.get("hashAlgorithm");
+		if (algorithm != null) {
+			encoding = (String) options.get("hashEncoding");
+			if (encoding == null) {
+				encoding = "BASE64";
+			}
+			charset = (String) options.get("hashCharset");
+		}
+		String flag = (String) options.get("ignorePasswordCase");
+		ignorePasswordCase = Boolean.valueOf(flag).booleanValue();
+	}
+
+	public boolean login() throws LoginException {
+		loginOk = false;
+		if (useFirstPass) {
+			Object identity = sharedState.get("javax.security.auth.login.name");
+			Object credential = sharedState
+					.get("javax.security.auth.login.password");
+			if (identity != null && credential != null) {
+				loginOk = true;
+			}
+		}
+		if (loginOk) {
+			Object username = sharedState.get("javax.security.auth.login.name");
+			if (username instanceof Principal) {
+				identity = (Principal) username;
+			} else {
+				try {
+					identity = createIdentity(username.toString());
+				} catch (Exception e) {
+					throw new LoginException("Failed to create principal: "
+							+ e.getMessage());
+				}
+			}
+			Object password = sharedState
+					.get("javax.security.auth.login.password");
+
+			if (password != null) {
+				if (password instanceof char[]) {
+					passport = (char[]) password;
+				} else {
+					passport = password.toString().toCharArray();
+				}
+			}
+			return true;
+		}
+		loginOk = false;
+
+		String username = null;
+		String password = null;
+
+		String[] usernameAndPassword = getUsernameAndPassword();
+
+		username = usernameAndPassword[USERNAME_POS];
+		password = usernameAndPassword[PASSWORD_POS];
+		if (username == null && password == null) {
+			identity = unauthenticatedIdentity;
+		}
+		if (identity == null) {
+			try {
+				identity = createIdentity(username);
+			} catch (Exception e) {
+				throw new LoginException("Failed to create principal: "
+						+ e.getMessage());
+			}
+			if (algorithm != null) {
+				password = createPasswordHash(username, password);
+			}
+			String expectedPassword = getUsersPassword();
+			if (!validatePassword(password, expectedPassword)) {
+				throw new FailedLoginException(
+						"Password Incorrect/Password Required");
+			}
+		}
+		if (getUseFirstPass()) {
+			sharedState.put("javax.security.auth.login.name", username);
+			sharedState.put("javax.security.auth.login.password", passport);
+		}
+		loginOk = true;
+		return loginOk;
+	}
+
+	protected String[] getUsernameAndPassword() throws LoginException {
+		String usernamePassword[] = { null, null };
+		if (callbackHandler == null) {
+			throw new LoginException(
+					"Error occurs: there are no CallbackHandler available to get information about authentication");
+		}
+		String username = null;
+		String password = null;
+		try {
+			Callback callbacks[] = { new NameCallback("Username: "), new PasswordCallback("Password: ", false) };
+			callbackHandler.handle(callbacks);
+			NameCallback nameCallback = (NameCallback) callbacks[0];
+			PasswordCallback passwordCallback = (PasswordCallback) callbacks[1];
+			username = nameCallback.getName();
+			char helperPassword[] = passwordCallback.getPassword();
+			if (helperPassword != null) {
+				passport = new char[helperPassword.length];
+				System.arraycopy(helperPassword, 0, passport, 0,
+						helperPassword.length);
+				passwordCallback.clearPassword();
+				password = new String(passport);
+			}
+		} catch (IOException ioe) {
+			throw new LoginException(ioe.toString());
+		} catch (UnsupportedCallbackException uce) {
+			throw new LoginException("CallbackHandler does not support: "
+					+ uce.getCallback());
+		}
+		usernamePassword[USERNAME_POS] = username;
+		usernamePassword[PASSWORD_POS] = password;
+		return usernamePassword;
+	}
+
+	protected boolean validatePassword(String inputPassword,
+			String expectedPassword) {
+		if (inputPassword == null || expectedPassword == null) {
+			return false;
+		}
+		return ignorePasswordCase ? inputPassword
+				.equalsIgnoreCase(expectedPassword) : inputPassword
+				.equals(expectedPassword);
+	}
+
+	protected String createPasswordHash(String username, String password) {
+		DigestCallback callback = null;
+		String callbackClassName = (String) options.get("digestCallback");
+		if (callbackClassName != null) {
+			try {
+				Class callbackClass = loadSomeClass(callbackClassName);
+				callback = (DigestCallback) callbackClass.newInstance();
+			} catch (Exception e) {
+				SecurityException securityExeption = new SecurityException(
+						"Cannot load DigestCallback");
+				securityExeption.initCause(e);
+				throw securityExeption;
+			}
+			HashMap optionsMap = new HashMap(options);
+			optionsMap.put("javax.security.auth.login.name", username);
+			optionsMap.put("javax.security.auth.login.password", password);
+			callback.init(optionsMap);
+		}
+
+		return PasswordHasher.calculateHash(algorithm, encoding, charset,
+				username, password, callback);
+	}
+
+	protected boolean getUseFirstPass() {
+		return useFirstPass;
+	}
+
+	protected Principal getUnauthenticatedIdentity() {
+		return unauthenticatedIdentity;
+	}
+
+	protected Object getCredentials() {
+		return passport;
+	}
+
+	public boolean logout() throws LoginException {
+		Principal identity = getIdentity();
+		Set principals = subject.getPrincipals();
+		principals.remove(identity);
+		return true;
+	}
+
+	protected Principal createIdentity(String username) throws Exception {
+		Principal principal = null;
+		if (principalClassName != null) {
+			Class loadedClass = loadSomeClass(principalClassName);
+			Class signatures[] = { java.lang.String.class };
+			Constructor constructorInstance = loadedClass
+					.getConstructor(signatures);
+			Object argumentsForConstructor[] = { username };
+			principal = (Principal) constructorInstance
+					.newInstance(argumentsForConstructor);
+		} else {
+			principal = new GeronimoUserPrincipal(username);
+		}
+		return principal;
+	}
+
+	private Class loadSomeClass(String classname) throws ClassNotFoundException {
+		ClassLoader loader = Thread.currentThread().getContextClassLoader();
+		return loader.loadClass(classname);
+	}
+
+	protected String getUsername() {
+		return (getIdentity() != null) ? getIdentity().getName() : null;
+	}
+
+	protected Group createGroup(String name, Set principals) {
+		Group roles = null;
+		Iterator principalsIter = principals.iterator();
+		while (principalsIter.hasNext()) {
+			Object next = principalsIter.next();
+			if (next instanceof Group) {
+				Group nextGroup = (Group) next;
+				if (nextGroup.getName().equals(name)) {
+					roles = nextGroup;
+					break;
+				}
+			}
+		}
+		if (roles == null) {
+			roles = new GeronimoSimpleGroup(name);
+			principals.add(roles);
+		}
+		return roles;
+	}
+
+	protected abstract String getUsersPassword() throws LoginException;
+
+	protected abstract Group[] getRoleSets() throws LoginException;
 }

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoLoginModule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoLoginModule.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoLoginModule.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoSimpleGroup.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoSimpleGroup.java?view=diff&rev=561821&r1=561820&r2=561821
==============================================================================
--- geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoSimpleGroup.java (original)
+++ geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoSimpleGroup.java Wed Aug  1 08:05:12 2007
@@ -1,97 +1,97 @@
-/**
- *  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.
- */
- /*
- * Auto-generated by J2G Migration. 
- */
-package org.apache.geronimo.j2g.sources.dependence.compatibility;
-
-import java.security.Principal;
-import java.security.acl.Group;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal;
-
-public class GeronimoSimpleGroup extends GeronimoGroupPrincipal implements Group {
-
-	/**
-	 * Serial ID.
-	 */
-	private static final long serialVersionUID = 4220122854158936883L;
-
-	private HashMap members;
-
-	public GeronimoSimpleGroup(String name) {
-		super(name);
-		members = new HashMap(3);
-	}
-
-	public boolean addMember(Principal user) {
-		boolean isMember = members.containsKey(user);
-		if (!isMember) {
-			members.put(user, user);
-		}
-		return !isMember;
-	}
-
-	public boolean isMember(Principal member) {
-		boolean isMember = members.containsKey(member);
-		if (!isMember) {
-			isMember = member instanceof Anybody;
-			if (!isMember && (member instanceof Nobody)) {
-				return false;
-			}
-		}
-
-		if (!isMember) {
-			Collection values = members.values();
-			Iterator iter = values.iterator();
-			do {
-				if (isMember || !iter.hasNext()) {
-					break;
-				}
-				Object next = iter.next();
-				if (next instanceof Group) {
-					Group group = (Group) next;
-					isMember = group.isMember(member);
-				}
-			} while (true);
-		}
-		return isMember;
-	}
-
-	public Enumeration members() {
-		return Collections.enumeration(members.values());
-	}
-
-	public boolean removeMember(Principal user) {
-		return (members.remove(user) != null);
-	}
-
-	public String toString() {
-		String tmp = new String(getName());
-		tmp.concat("(MEMBERS:");
-		for (Iterator iter = members.keySet().iterator(); iter.hasNext(); tmp.concat(",")) {
-			tmp.concat(iter.next().toString());
-		}
-		tmp.concat(")");
-		return tmp.toString();
-	}
-}
+/**
+ *  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.
+ */
+ /*
+ * Auto-generated by J2G Migration. 
+ */
+package org.apache.geronimo.j2g.sources.dependence.compatibility;
+
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal;
+
+public class GeronimoSimpleGroup extends GeronimoGroupPrincipal implements Group {
+
+	/**
+	 * Serial ID.
+	 */
+	private static final long serialVersionUID = 4220122854158936883L;
+
+	private HashMap members;
+
+	public GeronimoSimpleGroup(String name) {
+		super(name);
+		members = new HashMap(3);
+	}
+
+	public boolean addMember(Principal user) {
+		boolean isMember = members.containsKey(user);
+		if (!isMember) {
+			members.put(user, user);
+		}
+		return !isMember;
+	}
+
+	public boolean isMember(Principal member) {
+		boolean isMember = members.containsKey(member);
+		if (!isMember) {
+			isMember = member instanceof Anybody;
+			if (!isMember && (member instanceof Nobody)) {
+				return false;
+			}
+		}
+
+		if (!isMember) {
+			Collection values = members.values();
+			Iterator iter = values.iterator();
+			do {
+				if (isMember || !iter.hasNext()) {
+					break;
+				}
+				Object next = iter.next();
+				if (next instanceof Group) {
+					Group group = (Group) next;
+					isMember = group.isMember(member);
+				}
+			} while (true);
+		}
+		return isMember;
+	}
+
+	public Enumeration members() {
+		return Collections.enumeration(members.values());
+	}
+
+	public boolean removeMember(Principal user) {
+		return (members.remove(user) != null);
+	}
+
+	public String toString() {
+		String tmp = new String(getName());
+		tmp.concat("(MEMBERS:");
+		for (Iterator iter = members.keySet().iterator(); iter.hasNext(); tmp.concat(",")) {
+			tmp.concat(iter.next().toString());
+		}
+		tmp.concat(")");
+		return tmp.toString();
+	}
+}

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoSimpleGroup.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoSimpleGroup.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/GeronimoSimpleGroup.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Nobody.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Nobody.java?view=diff&rev=561821&r1=561820&r2=561821
==============================================================================
--- geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Nobody.java (original)
+++ geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Nobody.java Wed Aug  1 08:05:12 2007
@@ -1,51 +1,51 @@
-/**
- *  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.
- */
- /*
- * Auto-generated by J2G Migration. 
- */
-package org.apache.geronimo.j2g.sources.dependence.compatibility;
-
-import java.security.Principal;
-
-public class Nobody implements Comparable, Principal {
-	public static final String NOBODY = "<NOBODY>";
-
-	public static final Nobody NOBODY_PRINCIPAL = new Nobody();
-
-	public Nobody() {
-	}
-
-	public int hashCode() {
-		return NOBODY.hashCode();
-	}
-
-	public String getName() {
-		return NOBODY;
-	}
-
-	public String toString() {
-		return NOBODY;
-	}
-
-	public boolean equals(Object another) {
-		return false;
-	}
-
-	public int compareTo(Object o) {
-		return 1;
-	}
+/**
+ *  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.
+ */
+ /*
+ * Auto-generated by J2G Migration. 
+ */
+package org.apache.geronimo.j2g.sources.dependence.compatibility;
+
+import java.security.Principal;
+
+public class Nobody implements Comparable, Principal {
+	public static final String NOBODY = "<NOBODY>";
+
+	public static final Nobody NOBODY_PRINCIPAL = new Nobody();
+
+	public Nobody() {
+	}
+
+	public int hashCode() {
+		return NOBODY.hashCode();
+	}
+
+	public String getName() {
+		return NOBODY;
+	}
+
+	public String toString() {
+		return NOBODY;
+	}
+
+	public boolean equals(Object another) {
+		return false;
+	}
+
+	public int compareTo(Object o) {
+		return 1;
+	}
 }

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Nobody.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Nobody.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/Nobody.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/PasswordHasher.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/PasswordHasher.java?view=diff&rev=561821&r1=561820&r2=561821
==============================================================================
--- geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/PasswordHasher.java (original)
+++ geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/PasswordHasher.java Wed Aug  1 08:05:12 2007
@@ -1,103 +1,103 @@
-/**
- *  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.
- */
- /*
- * Auto-generated by J2G Migration. 
- */
-package org.apache.geronimo.j2g.sources.dependence.compatibility;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.security.MessageDigest;
-
-import org.apache.geronimo.util.encoders.Base64Encoder;
-
-public class PasswordHasher {
-	
-	private final static String HEX_ENC = "HEX";
-	private final static String ISO_ENC = "ISO-8859-1";
-	private final static String BASE_64_ENC = "BASE64";
-	
-	public static String calculateHash(String algorithm, String encoding, String charset, String username, String password, DigestCallback callback) {
-		String passwordHash = null;
-		byte passBytes[];
-		try {
-			if (charset == null) {
-				passBytes = password.getBytes();
-			}
-			else {
-				passBytes = password.getBytes(charset);
-			}
-		} catch (UnsupportedEncodingException uee) {
-			passBytes = password.getBytes();
-		}
-		try {
-			MessageDigest mesDigest = MessageDigest.getInstance(algorithm);
-			if (callback != null) {
-				callback.preDigest(mesDigest);
-			}
-			mesDigest.update(passBytes);
-			if (callback != null) {
-				callback.postDigest(mesDigest);
-			}
-			byte hash[] = mesDigest.digest();
-			if (encoding.equalsIgnoreCase(HEX_ENC)) {
-				passwordHash = base16Encoding(hash);
-			} else if (encoding.equalsIgnoreCase(BASE_64_ENC)) {
-				passwordHash = base64Encoding(hash);
-			}
-		} catch (Exception e) {}
-		return passwordHash;
-	}
-
-	private static String base16Encoding(byte encodedChain[]) {
-		StringBuffer buffer = new StringBuffer(encodedChain.length * 2);
-		for (int i = 0; i < encodedChain.length; i++) {
-			byte nextByte = encodedChain[i];
-			char nextChar = (char) (nextByte >> 4 & 0xf);
-			if (nextChar > '\t') {
-				nextChar = (char) ((nextChar - 10) + 97);
-			}
-			else {
-				nextChar += '0';
-			}
-			buffer.append(nextChar);
-			nextChar = (char) (nextByte & 0xf);
-			if (nextChar > '\t') {
-				nextChar = (char) ((nextChar - 10) + 97);
-			}
-			else {
-				nextChar += '0';
-			}
-			buffer.append(nextChar);
-		}
-		return buffer.toString();
-	}
-
-	private static String base64Encoding(byte bytes[]) {
-		ByteArrayOutputStream out = new ByteArrayOutputStream();
-		Base64Encoder encoder = new Base64Encoder();
-		try {
-			encoder.encode(bytes, 0, bytes.length, out);
-		} catch (IOException e) {}
-		String result = null;
-		try {
-			result = out.toString(ISO_ENC);
-		} catch (UnsupportedEncodingException e) {}
-		return result;
-	}
-}
+/**
+ *  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.
+ */
+ /*
+ * Auto-generated by J2G Migration. 
+ */
+package org.apache.geronimo.j2g.sources.dependence.compatibility;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+
+import org.apache.geronimo.util.encoders.Base64Encoder;
+
+public class PasswordHasher {
+	
+	private final static String HEX_ENC = "HEX";
+	private final static String ISO_ENC = "ISO-8859-1";
+	private final static String BASE_64_ENC = "BASE64";
+	
+	public static String calculateHash(String algorithm, String encoding, String charset, String username, String password, DigestCallback callback) {
+		String passwordHash = null;
+		byte passBytes[];
+		try {
+			if (charset == null) {
+				passBytes = password.getBytes();
+			}
+			else {
+				passBytes = password.getBytes(charset);
+			}
+		} catch (UnsupportedEncodingException uee) {
+			passBytes = password.getBytes();
+		}
+		try {
+			MessageDigest mesDigest = MessageDigest.getInstance(algorithm);
+			if (callback != null) {
+				callback.preDigest(mesDigest);
+			}
+			mesDigest.update(passBytes);
+			if (callback != null) {
+				callback.postDigest(mesDigest);
+			}
+			byte hash[] = mesDigest.digest();
+			if (encoding.equalsIgnoreCase(HEX_ENC)) {
+				passwordHash = base16Encoding(hash);
+			} else if (encoding.equalsIgnoreCase(BASE_64_ENC)) {
+				passwordHash = base64Encoding(hash);
+			}
+		} catch (Exception e) {}
+		return passwordHash;
+	}
+
+	private static String base16Encoding(byte encodedChain[]) {
+		StringBuffer buffer = new StringBuffer(encodedChain.length * 2);
+		for (int i = 0; i < encodedChain.length; i++) {
+			byte nextByte = encodedChain[i];
+			char nextChar = (char) (nextByte >> 4 & 0xf);
+			if (nextChar > '\t') {
+				nextChar = (char) ((nextChar - 10) + 97);
+			}
+			else {
+				nextChar += '0';
+			}
+			buffer.append(nextChar);
+			nextChar = (char) (nextByte & 0xf);
+			if (nextChar > '\t') {
+				nextChar = (char) ((nextChar - 10) + 97);
+			}
+			else {
+				nextChar += '0';
+			}
+			buffer.append(nextChar);
+		}
+		return buffer.toString();
+	}
+
+	private static String base64Encoding(byte bytes[]) {
+		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		Base64Encoder encoder = new Base64Encoder();
+		try {
+			encoder.encode(bytes, 0, bytes.length, out);
+		} catch (IOException e) {}
+		String result = null;
+		try {
+			result = out.toString(ISO_ENC);
+		} catch (UnsupportedEncodingException e) {}
+		return result;
+	}
+}

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/PasswordHasher.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/PasswordHasher.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/j2g/plugins/org.apache.geronimo.j2g.sources/src/org/apache/geronimo/j2g/sources/dependence/compatibility/PasswordHasher.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message