Package org.glite.authz.pap.encoder

Source Code of org.glite.authz.pap.encoder.PolicyFileEncoder

/**
* Copyright (c) Members of the EGEE Collaboration. 2006-2009.
* See http://www.eu-egee.org/partners/ for details on the copyright holders.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.glite.authz.pap.encoder;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.File;
import java.lang.String;

import org.glite.authz.pap.common.xacml.wizard.*;
import org.opensaml.xacml.policy.PolicySetType;
import org.opensaml.xacml.policy.PolicyType;
import java.util.List;
import org.opensaml.xacml.XACMLObject;
import org.glite.authz.pap.common.xacml.utils.PolicyHelper;
import org.glite.authz.pap.common.xacml.utils.PolicySetHelper;
import org.opensaml.DefaultBootstrap;
import org.opensaml.xml.XMLConfigurator;
import org.opensaml.xml.Configuration;
import org.opensaml.xml.ConfigurationException;
import org.glite.authz.pap.encoder.parser.BWParser;
import org.glite.authz.pap.encoder.parser.ParseException;

/**
* This class is the public interface to parser of the simplified
* policy files.
*
* @author Vincenzo Ciaschini
*/
public class PolicyFileEncoder {
    BWParser parser; // The effective unerlying parser

    /**
     * Basic constructor
     */
    public PolicyFileEncoder() {
        parser = null;
    }

    /**
     * Initializes the parser to read from a specified stream.
     * @param stream The {@code InputStream} object from which to read the policy.
     */
    private void init(InputStream stream) {
        if (parser != null) {
            parser.ReInit(stream);
        }
        else {
            parser = new BWParser(stream);
        }
    }

    /**
     * This function parses the input and returns a list of
     * {@link org.glite.authz.pap.common.xacml.wizard.XACMLWizard}
     * objects containing the parsed policies.
     * @return a {@code List} {@link org.glite.authz.pap.common.xacml.wizard.XACMLWizard} objects containing the parsed policies.
     * @throws EncodingException when there are problems during parsing
     */
    private List<XACMLWizard> doParse() throws EncodingException {
        try {
            return parser.Text();
        }
        catch (ParseException e) {
            throw new EncodingException(e);
        }
    }

    /**
     * This function parses the input and returns a list of
     * {@link org.glite.authz.pap.common.xacml.wizard.XACMLWizard}
     * objects containing the parsed policies.
     *
     * This function may be called multiple times, with different inputs, and each time
     * will parse the new input and provide a new set of parsed policies.
     *
     * @param stream The {@code InputStream} object to parse.
     * @return a {@code List} {@link org.glite.authz.pap.common.xacml.wizard.XACMLWizard} objects containing the parsed policies.
     * @throws EncodingException when there are problems during parsing
     */
    public  List<XACMLWizard> parse(InputStream stream) throws EncodingException {
        init(stream);
        return doParse();
    }

    /**
     * This function parses the input and returns a list of
     * {@link org.glite.authz.pap.common.xacml.wizard.XACMLWizard}
     * objects containing the parsed policies.
     *
     * This function may be called multiple times, with different inputs, and each time
     * will parse the new input and provide a new set of parsed policies.
     *
     * @param text The {@code String} object containing the policies to parse.
     * @return a {@code List} {@link org.glite.authz.pap.common.xacml.wizard.XACMLWizard} objects containing the parsed policies.
     * @throws EncodingException when there are problems during parsing
     */
    public  List<XACMLWizard> parse(String text) throws EncodingException {
        init(new ByteArrayInputStream(text.getBytes()));
        return doParse();
    }

    /**
     * This function parses the input and returns a list of
     * {@link org.glite.authz.pap.common.xacml.wizard.XACMLWizard}
     * objects containing the parsed policies.
     *
     * This function may be called multiple times, with different inputs, and each time
     * will parse the new input and provide a new set of parsed policies.
     *
     * @param file The {@code File} object containing the policies to parse.
     * @return a {@code List} {@link org.glite.authz.pap.common.xacml.wizard.XACMLWizard} objects containing the parsed policies.
     * @throws EncodingException when there are problems during parsing
     */
    public  List<XACMLWizard> parse(File file) throws EncodingException {
        try {
            init(new FileInputStream(file));
        } catch (FileNotFoundException e) {
            throw new EncodingException(e);
        }
        return doParse();
    }

//      private static void print(XACMLWizard setw) {
//          System.out.println(setw.toFormattedString(false));
//      }

//       public static void main(String[] args) {
//           try{
//               DefaultBootstrap.bootstrap();
//               //            XMLConfigurator xmlConfigurator = new XMLConfigurator();
//               //            xmlConfigurator.load( Configuration.class.getResourceAsStream( "/opensaml_bugfix.xml" ) );
//           }
//           catch (ConfigurationException e) {
//               System.out.println(e.toString());
//               return;
//           }
//           PolicyFileEncoder encoder = new PolicyFileEncoder();

//           try {
//               if (args.length > 0) {
//                   int i = 0;
//                   while (i < args.length) {
//                       System.out.println("Try " + args[i]);
//                       File f = new File(args[i++]);
//                       List<XACMLWizard> list = encoder.parse(f);

//                       for (XACMLWizard xacml: list) {
//                           System.out.println(xacml.getClass().getName());
//                           print(xacml);
//                       }
//                   }
//               }
//               else
//                   System.out.println(encoder.parse(System.in));
//           }
//           catch (EncodingException e) {
//               System.out.println(e.toString());
//           }
//       }
}
TOP

Related Classes of org.glite.authz.pap.encoder.PolicyFileEncoder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.