Package com.hp.hpl.jena.rdf.model

Source Code of com.hp.hpl.jena.rdf.model.AnonId

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.hp.hpl.jena.rdf.model;

import java.rmi.server.UID;

import com.hp.hpl.jena.shared.impl.JenaParameters;

/** Create a new id for an anonymous node.
*
* <p>This id is guaranteed to be unique on this machine.</p>
*/

// This version contains experimental modifications by der to
// switch off normal UID allocation for bNodes to assist tracking
// down apparent non-deterministic behaviour.

public class AnonId extends java.lang.Object {
   
    // Support for running in environments, like Google App Engine, where
    // java.rmi.server.UID is not available
    // Will be obsoleted by improved AnonId handling
    static boolean UIDok = true;
    static {
        try { new UID() ; }
        catch (Throwable ex) { UIDok = false ; }
    }
   
    protected String id = null;

    /**
        Support for debugging: global anonID counter. The intial value is just to
        make the output look prettier if it has lots (but not lots and lots) of bnodes
        in it.
    */
    private static int idCount = 100000;
   
    public static AnonId create()
        { return new AnonId(); }
   
    public static AnonId create( String id )
        { return new AnonId( id ); }
   
    /**
        Creates new AnonId. Normally this id is guaranteed to be unique on this
        machine: it is time-dependant. However, sometimes [incorrect] code is
        sensitive to bnode ordering and produces bizarre bugs. Hence the
        disableBNodeUIDGeneration flag, which allows bnode IDs to be predictable.
    */
    public AnonId() {
        if (JenaParameters.disableBNodeUIDGeneration) {
            synchronized (AnonId.class) {
                id = "A" + idCount++; // + rand.nextLong();
            }
        } else if (!UIDok) {
            id = java.util.UUID.randomUUID().toString();
        } else {
            id = (new UID()).toString();
        }
    }
   
    /** Create a new AnonId from the string argument supplied
     * @param id A string representation of the id to be created.
     */   
    public AnonId( String id ) {
        this.id = id;
    }
   
    /** Test whether two id's are the same
        @param o the object to be compared
        @return true if and only if the two id's are the same
    */   
    @Override
    public boolean equals( Object o ) {
        return o instanceof AnonId && id.equals( ((AnonId) o).id );
    }
   
    /** return a string representation of the id
     * @return a string representation of the id
     */   
    @Override
    public String toString() {
        return id;
    }
   
    /**
        Answer the label string of this AnonId. To be used in preference to
        toString().
    */
    public String getLabelString() {
        return id;
    }
   
    /** return a hashcode for this id
     * @return the hash code
     */   
    @Override
    public int hashCode() {
        return id.hashCode();
    }
}
TOP

Related Classes of com.hp.hpl.jena.rdf.model.AnonId

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.