/** * Copyright 2010 JBoss Inc * * 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.drools.repository; import javax.jcr.Node; import javax.jcr.RepositoryException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * The item class is used to abstract away the underlying details of the JCR repository. * * @author btruitt */ public abstract class Item { static Logger log = LoggerFactory.getLogger(Item.class); /** * The node within the repository that this item corresponds to */ protected Node node; /** * The RulesRepository object that this object was created from */ protected RulesRepository rulesRepository; /** * Sets the item object's node attribute to the specified node * * @param rulesRepository the RulesRepository object that this object is being created from * @param node the node in the repository that this item corresponds to */ public Item(RulesRepository rulesRepository, Node node) { this.rulesRepository = rulesRepository; this.node = node; } /** * gets the node in the repository that this item is associated with * * @return the node in the repository that this item is associated with */ public Node getNode() { return node; } /** * gets the name of this item (unless overridden in a subclass, this just returns the * name of the node that this Item encapsulates. * * @return the name of the node that this item encapsultes * @throws RulesRepositoryException */ public String getName() throws RulesRepositoryException { try { return this.node.getName(); } catch(Exception e) { log.error("Caught exception: " + e); throw new RulesRepositoryException(e); } } /** * @return the RulesRepository object that this object was instantiated from */ public RulesRepository getRulesRepository() { return rulesRepository; } public boolean equals(Object obj) { if(!(obj instanceof Item)) { return false; } else { Item rhs = (Item)obj; try { return this.node.isSame(rhs.getNode()); } catch (RepositoryException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } } public int hashCode() { return this.node.hashCode(); } }