/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink ******************************************************************************/ package org.eclipse.persistence.testing.models.jpa.datatypes.arraypks; import java.util.UUID; import javax.persistence.*; @Entity @Table(name = "CMP3_PBYTEARRAYPK_TYPE") public class PrimByteArrayPKType implements java.io.Serializable{ public PrimByteArrayPKType() { } private byte[] id; public PrimByteArrayPKType(byte[] primitiveByteArrayData) { this.id = primitiveByteArrayData; } @Id public byte[] getId() { return id; } public void setId(byte[] id) { this.id= id; } private static final int UUID_LENGTH = 0x10; private static int BITSPERLONG = 0x40; private static int BITSPERBYTE = 0x8; public void createRandomId() { UUID uuid = UUID.randomUUID(); id = getBytes(uuid); } public static byte[] getBytes(UUID u) { byte [] raw = new byte [UUID_LENGTH]; long msb = u.getMostSignificantBits(); long lsb = u.getLeastSignificantBits(); /* * Convert 2 longs to 16 bytes. */ int i = 0; for (int sh = BITSPERLONG - BITSPERBYTE; sh >= 0; sh -= BITSPERBYTE) { raw [i++] = (byte) (msb >> sh); } for (int sh = BITSPERLONG - BITSPERBYTE; sh >= 0; sh -= BITSPERBYTE) { raw [i++] = (byte) (lsb >> sh); } return raw; } }