/* * 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 org.apache.ode.bpel.obj; import java.io.Serializable; import java.util.Map; import com.fasterxml.jackson.annotation.JsonIgnore; /** * base class for compiled BPEL objects. It gives some common fields. * */ public class OBase extends ExtensibleImpl implements Serializable{ public static final long serialVersionUID = -1L; /** Our identifier, in terms of our parent. */ private static final String ID = "_id"; /** Owner OProcess */ private static final String OWNER = "_owner"; private static final String DEBUG_INFO = "debugInfo"; /** * This should only be used by jackson when deserialize */ protected OBase(){ setId(0); } protected OBase(OProcess owner) { super(); init(owner); } protected OBase(OProcess owner, Map<String, Object> map) { super(map); init(owner); } private void init(OProcess owner) { setOwner(owner); if (owner == null) { setId(0); } else { owner.setChildIdCounter(owner.getChildIdCounter() + 1); setId(owner.getChildIdCounter()); owner.getChildren().add(this); } } @JsonIgnore public int getId() { Object o = fieldContainer.get(ID); return o == null ? 0 : (Integer)o; } private void setId(int id) { fieldContainer.put(ID, id); } @JsonIgnore public OProcess getOwner() { Object owner = fieldContainer.get(OWNER); return (OProcess) (owner == null ? this : owner); } private void setOwner(OProcess process) { fieldContainer.put(OWNER, process); } @JsonIgnore public DebugInfo getDebugInfo() { Object o = fieldContainer.get(DEBUG_INFO); return o == null ? null : (DebugInfo)o; } public void setDebugInfo(DebugInfo debugInfo) { fieldContainer.put(DEBUG_INFO, debugInfo); } public String toString() { StringBuffer buf = new StringBuffer(getClass().getSimpleName()); buf.append('#'); buf.append(getId()); return buf.toString(); } public void dehydrate() { DebugInfo debugInfo = getDebugInfo(); if (debugInfo != null) { debugInfo.setDescription(null); debugInfo.setExtensibilityElements(null); debugInfo = null; } } public String digest() { return ""; } public int hashCode() { return getId(); } public boolean equals(Object obj) { if (!(obj instanceof OBase)) return false; OBase other = (OBase) obj; return (getId() == 0 && other.getId() == 0) || getId() == other.getId() && other.getOwner().equals(getOwner()); } }