Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 40816 invoked from network); 1 Aug 2007 15:06:18 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 1 Aug 2007 15:06:18 -0000 Received: (qmail 84520 invoked by uid 500); 1 Aug 2007 15:06:18 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 84481 invoked by uid 500); 1 Aug 2007 15:06:18 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 84464 invoked by uid 99); 1 Aug 2007 15:06:18 -0000 Received: from Unknown (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Aug 2007 08:06:18 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Aug 2007 15:06:05 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 5BB911A982F; Wed, 1 Aug 2007 08:05:24 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit 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 -0000 To: scm@geronimo.apache.org From: pmcmahan@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070801150524.5BB911A982F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 true if it is declared variable and - * false 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 true if it is declared variable and + * false 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 = ""; - 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 = ""; + 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 = ""; - - 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 = ""; + + 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